freebsd-dev/sys/dev
Alexander Leidinger f856af0466 Extend the emu10kx driver. With the words of the author:
---snip---
New features:
1.	Optional multichannel recording (32 channels on Live!, 64 channels
 	on Audigy).

 	All channels are 16bit/48000Hz/mono, format is fixed.
 	Half of them are copied from sound output, another half can be
 	used to record any data from DSP. What should be recorded is
 	hardcoded in DSP code. In this version it records dummy data, but
 	can be used to record all DSP inputs, for example..

 	Because there are no support of more-than-stereo sound streams
 	multichannell stream is presented as one 32(64)*48000 Hz 16bit mono
 	stream.

 	Channel map:

 	SB Live! (4.0/5.1)
 	offset (words)	substream
 	0x00		Front L
 	0x01		Front R
 	0x02		Digital Front L
 	0x03		Digital Front R
 	0x04		Digital Center
 	0x05		Digital Sub
 	0x06		Headphones L
 	0x07		Headphones R
 	0x08		Rear L
 	0x09		Rear R
 	0x0A		ADC (multi-rate recording) L
 	0x0B		ADC (multi-rate recording) R
 	0x0C		unused
 	0x0D		unused
 	0x0E		unused
 	0x0F		unused
 	0x10		Analog Center (Live! 5.1) / dummy (Live! 4.0)
 	0x11		Analog Sub (Live! 5.1) / dummy (Live! 4.0)
 	0x12..-0x1F	dummy

 	Audigy / Audigy 2 / Audigy 2 Value / Audigy 4
 	offset (words)	substream
 	0x00		Digital Front L
 	0x01		Digital Front R
 	0x02		Digital Center
 	0x03		Digital Sub
 	0x04		Digital Side L (7.1 cards) / Headphones L (5.1 cards)
 	0x05		Digital Side R (7.1 cards) / Headphones R (5.1 cards)
 	0x06		Digital Rear L
 	0x07		Digital Rear R
 	0x08		Front L
 	0x09		Front R
 	0x0A		Center
 	0x0B		Sub
 	0x0C		Side L
 	0x0D		Side R
 	0x0E		Rear L
 	0x0F		Rear R
 	0x10		output to AC97 input L (muted)
 	0x11		output to AC97 input R (muted)
 	0x12		unused
 	0x13		unused
 	0x14		unused
 	0x15		unused
 	0x16		ADC (multi-rate recording) L
 	0x17		ADC (multi-rate recording) R
 	0x18		unused
 	0x19		unused
 	0x1A		unused
 	0x1B		unused
 	0x1C		unused
 	0x1D		unused
 	0x1E		unused
 	0x1F		unused
 	0x20..0x3F	dummy

Fixes:
1.	Do not assign negative values to variables used to index emu_cards
 	array. This array was never accessed when index is negative, but
 	Alexander (netchild@) told me that Coverity does not like it.
 	After this change emu_cards[0] should never be used to identify
 	valid sound card.
2.	Fix off-by-one errors in interrupt manager. Add more checks there.
3.	Fixes to sound buffering code now allows driver to use large playback
 	buffers.
4.	Fix memory allocation bug when multichannel recording is not
 	enabled.
5.	Fix interrupt timeout when recording with low bitrate (8kHz).

Hardware:
1.	Add one more known Audigy ZS card to list. Add two cards with
 	PCI IDs betwen old known cards and new one.

Other changes:
1.	Do not use ALL CAPS in messages.

Incomplete code:
1.	Automute S/PDIF when S/PDIF signal is lost.

Tested on i386 only, gcc 3.4.6 & gcc41/gcc42 (syntax only).
---snip---

This commits enables a little bit of debugging output when the driver is
loaded as a module. I did a cross-build test for amd64.

The code has some style issues, this will be addressed later.

The multichannel recording part is some work in progress to allow playing
around with it until the generic sound code is better able to handle
multichannel streams.

This is supposed to fix
CID:		171187
Found by:	Coverity Prevent

Submitted by:	Yuriy Tsibizov <Yuriy.Tsibizov@gfk.ru>
2007-01-06 18:59:35 +00:00
..
aac On amd64 platform, use linux32 headers so 32-bit Linux applications 2006-12-20 17:10:53 +00:00
acpi_support Prevent freeing wild pointer when bailing out. 2006-11-06 12:14:27 +00:00
acpica ACPIIO_BATT_GET_UNITS would always return ENXIO. However, it should never 2006-12-22 00:57:26 +00:00
adlink
advansys Add MODULE_DEPENDS for cam, pci, mca, eisa and isa where needed. 2006-12-11 18:28:31 +00:00
agp Restore agp aperture size after resume, in case it is modified after boot. 2007-01-06 08:31:31 +00:00
aha Add MODULE_DEPENDS for cam, pci, mca, eisa and isa where needed. 2006-12-11 18:28:31 +00:00
ahb Add MODULE_DEPENDS for cam, pci, mca, eisa and isa where needed. 2006-12-11 18:28:31 +00:00
aic 2nd and final commit that moves us to CAM_NEW_TRAN_CODE 2006-11-02 00:54:38 +00:00
aic7xxx Fix a group of typos: 2006-12-29 13:08:46 +00:00
amd Add MODULE_DEPENDS for cam, pci, mca, eisa and isa where needed. 2006-12-11 18:28:31 +00:00
amr Add MODULE_DEPENDS for cam, pci, mca, eisa and isa where needed. 2006-12-11 18:28:31 +00:00
an Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
ar - Use bus_setup_intr() and bus_teardown_intr() to register device driver 2006-02-22 18:16:26 +00:00
arcmsr Update to version 1.20.00.13 of the arcmsr driver. This fixes many bugs 2006-12-13 08:46:03 +00:00
arl Various bpf(4) related fixes to catch places up to the new bpf(4) 2006-12-29 13:59:50 +00:00
asr Add MODULE_DEPENDS for cam, pci, mca, eisa and isa where needed. 2006-12-11 18:28:31 +00:00
ata Add support for the Marvell 6101/6145 PATA chips used on many new Intel boards. 2007-01-04 16:09:11 +00:00
ath Add half/quarter rate 11a channel support: 2006-12-27 19:07:09 +00:00
atkbdc Spell "Kensington Thinking Mouse" correctly. 2006-12-18 18:48:28 +00:00
auxio
awi In FreeBSD, we don't need sc_power callback 2006-12-12 03:05:04 +00:00
bce Fix compile with BCE_DEBUG. The last one tripped up gcc 2.95 on 4.x even 2006-12-06 22:53:22 +00:00
bfe Add suspend/resume support. Unlike many other NIC drivers, 2006-11-20 23:30:07 +00:00
bge After rev.1.169, the "interrupt" coalescing parameters are not used in 2006-12-26 18:33:55 +00:00
bktr remove delays that have been unnecessary since 2002... The iicbb driver 2006-12-31 19:42:47 +00:00
buslogic Add MODULE_DEPENDS for cam, pci, mca, eisa and isa where needed. 2006-12-11 18:28:31 +00:00
cardbus Minor cleanup of CIS parsing. 2006-06-12 03:28:42 +00:00
ce Various bpf(4) related fixes to catch places up to the new bpf(4) 2006-12-29 13:59:50 +00:00
ciss o ciss.ko depends on cam and pci. 2006-11-30 15:14:17 +00:00
cm Make cm(4) driver MPSAFE. 2006-06-11 22:25:01 +00:00
cnw Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
cp Various bpf(4) related fixes to catch places up to the new bpf(4) 2006-12-29 13:59:50 +00:00
cpufreq Since DELAY() was moved, most <machine/clock.h> #includes have been 2006-05-16 14:37:58 +00:00
cs - Consistently use if_printf() only in interface methods: if_start(), 2006-09-15 15:16:12 +00:00
ct Since DELAY() was moved, most <machine/clock.h> #includes have been 2006-05-16 14:37:58 +00:00
ctau Various bpf(4) related fixes to catch places up to the new bpf(4) 2006-12-29 13:59:50 +00:00
cx Various bpf(4) related fixes to catch places up to the new bpf(4) 2006-12-29 13:59:50 +00:00
cy
dc Fix a bug originally introduced in rev. 1.74; don't reloaded the 2006-12-20 01:49:56 +00:00
dcons Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
de - Consistently use if_printf() only in interface methods: if_start(), 2006-09-15 15:16:12 +00:00
digi Fix our ioctl(2) implementation when the argument is "int". New 2006-09-27 19:57:02 +00:00
dpt Add MODULE_DEPENDS for cam, pci, mca, eisa and isa where needed. 2006-12-11 18:28:31 +00:00
drm Update __FreeBSD_version check for pci_find_extcap() now that it is 2006-12-28 21:55:47 +00:00
ed MFp4: 2006-06-12 04:30:42 +00:00
eisa
em remove no longer correct comment above em_read_pcie_cap_reg 2006-11-23 05:48:13 +00:00
en Fix fat-fingering in previous commit. 2006-12-29 16:38:22 +00:00
ep ALTQify ep(4). 2006-12-01 20:29:55 +00:00
esp Add MODULE_DEPENDS for cam, pci, mca, eisa and isa where needed. 2006-12-11 18:28:31 +00:00
ex
exca Cleanup sloppy ifdef. 2006-09-24 00:26:33 +00:00
fatm This driver has been MPSAFE from the beginning so declare the interrupt 2006-03-21 14:56:42 +00:00
fb Remove the DPMS code in creator_blank_display(), as it causes some 2006-08-24 22:00:24 +00:00
fdc Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
fe Commit the results of the typo hunt by Darren Pilgrim. 2006-08-04 07:56:35 +00:00
firewire Various bpf(4) related fixes to catch places up to the new bpf(4) 2006-12-29 13:59:50 +00:00
flash MFp4: 2006-11-29 08:05:55 +00:00
fxp Grammar nit. 2006-12-01 13:07:52 +00:00
gem - Use the gem_tick() callout instead of if_slowtimo() for driving 2006-12-06 02:04:25 +00:00
gfb Since DELAY() was moved, most <machine/clock.h> #includes have been 2006-05-16 14:37:58 +00:00
harp
hatm
hfa
hifn Use newly added functions to simplify the code. 2006-06-04 22:17:25 +00:00
hme - Use the hme_tick() callout instead of if_slowtimo() for driving 2006-12-06 02:07:20 +00:00
hptmv - Use a regular mutex rather than a spin mutex. This driver doesn't need 2007-01-04 20:28:17 +00:00
hwpmc Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
ic Fix style nits. No md5 changes in .o's. ;-) 2006-09-08 21:46:01 +00:00
ichsmb Minor overhaul of SMBus support: 2006-09-11 20:52:41 +00:00
ichwd Align the interfaces for the various watchdogs and make the interface 2006-12-15 21:44:49 +00:00
ida
idt Since DELAY() was moved, most <machine/clock.h> #includes have been 2006-05-16 14:37:58 +00:00
ie Since DELAY() was moved, most <machine/clock.h> #includes have been 2006-05-16 14:37:58 +00:00
ieee488 Don't be noisy in case of shared interrupts. 2006-03-11 15:39:22 +00:00
if_ndis Fix shared authentication mode. 2006-12-28 00:05:40 +00:00
iicbus const poison 2006-12-05 06:19:36 +00:00
iir Add MODULE_DEPENDS for cam, pci, mca, eisa and isa where needed. 2006-12-11 18:28:31 +00:00
io
ipmi Align the interfaces for the various watchdogs and make the interface 2006-12-15 21:44:49 +00:00
ips o Add Adaptec ServeRAID 7x IDs. IDs taken from Linux. 2006-10-05 07:28:43 +00:00
ipw Hold on to firmware images until the interface detaches since 2006-06-10 17:29:40 +00:00
isp RELENG_6 compilation 2007-01-05 23:01:54 +00:00
ispfw The MODULE_NAME should "ispfw" unless overriden, not "isp". 2006-12-10 03:42:57 +00:00
iwi Add header files <sys/lock.h> and <sys/mutex.h> for mtx_init() and friends. 2006-12-07 15:24:38 +00:00
ixgb Move ethernet VLAN tags from mtags to its own mbuf packet header field 2006-09-17 13:33:30 +00:00
joy
kbd Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
kbdmux Fix our ioctl(2) implementation when the argument is "int". New 2006-09-27 19:57:02 +00:00
le Use our own callout instead of if_slowtimo() for driving lance_watchdog() 2006-12-06 02:14:31 +00:00
led
lge - Consistently use if_printf() only in interface methods: if_start(), 2006-09-15 15:16:12 +00:00
lmc Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
mc146818
mca
mcd
md Resolve two deadlocks that could be caused by busy md device backed 2006-12-14 11:34:07 +00:00
mem
mfi Make sure that all of the fields in the header are clean. It was possible for 2007-01-02 04:12:34 +00:00
mii MFp4: add basic driver for RTL8305SC switch in PHY emulation 2007-01-05 01:46:26 +00:00
mk48txx Align the interfaces for the various watchdogs and make the interface 2006-12-15 21:44:49 +00:00
mlx
mly Add MODULE_DEPENDS for cam, pci, mca, eisa and isa where needed. 2006-12-11 18:28:31 +00:00
mmc Preliminary MMC stack. This stack supports SD 1.0 cards only, but 2006-10-20 06:39:59 +00:00
mpt (commented out) multipath fault injection code. 2007-01-05 22:49:05 +00:00
mse Since DELAY() was moved, most <machine/clock.h> #includes have been 2006-05-16 14:37:58 +00:00
msk Piggyback watchdog timer handling with msk_tick which is called every 2006-12-29 04:55:38 +00:00
mxge Fix mxge_submit_8rx() to behave like the comments says it does, 2006-11-29 15:30:39 +00:00
my Fix fat-fingering in previous commit. 2006-12-29 16:38:22 +00:00
ncv no need to print unload anymore 2006-07-14 04:36:57 +00:00
nfe Fix TX/RX checksum offload. 2006-11-27 04:47:27 +00:00
nge Move ethernet VLAN tags from mtags to its own mbuf packet header field 2006-09-17 13:33:30 +00:00
nmdm Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
nsp Since DELAY() was moved, most <machine/clock.h> #includes have been 2006-05-16 14:37:58 +00:00
null Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
nve Fix an off by one error in struct nve_tx_desc's frags[] array as a result 2006-12-05 15:31:05 +00:00
ofw Add missing includes of priv.h. 2006-11-06 17:43:10 +00:00
patm Commit the results of the typo hunt by Darren Pilgrim. 2006-08-04 07:56:35 +00:00
pbio Since DELAY() was moved, most <machine/clock.h> #includes have been 2006-05-16 14:37:58 +00:00
pccard Thomas Wintergerst reports that when this tsleep went away, certain 2006-08-09 00:05:54 +00:00
pccbb Batch of changes: 2006-08-12 09:06:55 +00:00
pcf - Use bus_setup_intr() and bus_teardown_intr() to register device driver 2006-02-22 18:16:26 +00:00
pci Disable MSI on the Intel E7505 chipset. It is reported broken on a Tyan 2006-12-28 06:14:42 +00:00
pdq Since DELAY() was moved, most <machine/clock.h> #includes have been 2006-05-16 14:37:58 +00:00
powermac_nvram Add device to access and modify Open Firmware NVRAM settings in 2006-08-01 22:19:01 +00:00
ppbus Fix fat-fingering in previous commit. 2006-12-29 16:38:22 +00:00
ppc Remove various bits of conditional Alpha code and fixup a few comments. 2006-05-12 05:04:46 +00:00
pst
puc Add SIIG 4 port serial card based on the Oxford OX16PCI954. 2006-09-04 18:27:14 +00:00
ral Remove dependency on deprecated if_watchdog ABI. 2006-12-19 17:37:41 +00:00
random Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
ray tweak comments about OLDCARD workarounds 2006-10-19 05:25:53 +00:00
rc
re - Use the re_tick() callout instead of if_slowtimo() for driving 2006-12-20 02:13:59 +00:00
rndtest
rp - Make rp(4) 64-bit- and endian-clean as well as work on strict alignment 2006-11-20 12:59:27 +00:00
rr232x Make this compile with -Wundef. 2006-05-16 15:23:27 +00:00
safe Use newly added functions to simplify the code. 2006-06-04 22:17:25 +00:00
sbni Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
sbsh Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
scc Fix braino: The cl_range field should not hold the shifted I/O 2006-07-26 03:10:01 +00:00
scd
sf Whitespace nits. 2006-09-15 11:01:23 +00:00
si Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
sio Only treat positive values as errors... 2006-09-14 03:47:59 +00:00
sk Remove incomplete Yukon II support code which was added in if_sk.c, rev 1.123. 2006-12-14 04:10:26 +00:00
smbus Only support the SMB_OLD_BREAD ioctl if one of COMPAT_FREEBSD[456] is 2006-09-26 14:38:56 +00:00
sn
snc
snp
sound Extend the emu10kx driver. With the words of the author: 2007-01-06 18:59:35 +00:00
speaker
spibus MFp4: when passing the transfer up the foodchain, make sure we go up 2006-10-20 07:11:52 +00:00
sr - Use bus_setup_intr() and bus_teardown_intr() to register device driver 2006-02-22 18:16:26 +00:00
stg no need to print unload anymore. 2006-07-14 04:35:59 +00:00
stge Move ethernet VLAN tags from mtags to its own mbuf packet header field 2006-09-17 13:33:30 +00:00
streams Clean up the svr4 socket cache and streams code some to make it more easily 2006-07-21 20:40:13 +00:00
sym 2nd and final commit that moves us to CAM_NEW_TRAN_CODE 2006-11-02 00:54:38 +00:00
syscons Replace magic numbers for console bell types with defines. 2006-11-16 12:27:51 +00:00
tdfx Take the functionality contained in the former "options TDFX_LINUX" 2006-03-03 21:37:38 +00:00
ti Move ethernet VLAN tags from mtags to its own mbuf packet header field 2006-09-17 13:33:30 +00:00
trm Add MODULE_DEPENDS for cam, pci, mca, eisa and isa where needed. 2006-12-11 18:28:31 +00:00
twa Add MODULE_DEPENDS for cam, pci, mca, eisa and isa where needed. 2006-12-11 23:59:42 +00:00
twe
tx Since DELAY() was moved, most <machine/clock.h> #includes have been 2006-05-16 14:37:58 +00:00
txp Move ethernet VLAN tags from mtags to its own mbuf packet header field 2006-09-17 13:33:30 +00:00
uart - In sunkbd_probe_keyboard() don't bother to determine the keyboard layout 2006-11-02 00:01:15 +00:00
ubsec Switch to using STAILQ_REMOVE_HEAD() instead of STAILQ_REMOVE_HEAD_UNTIL(). 2006-10-24 11:17:46 +00:00
usb protect against multiple inclusion (this is useful when you 2007-01-03 10:50:03 +00:00
utopia
vge Fix the hardware VLAN tagging. TX was broken on little-endian 2006-11-30 21:01:59 +00:00
vkbd Fix our ioctl(2) implementation when the argument is "int". New 2006-09-27 19:57:02 +00:00
vr Whitespace nits. 2006-09-15 11:01:23 +00:00
vx
watchdog Align the interfaces for the various watchdogs and make the interface 2006-12-15 21:44:49 +00:00
wds Add MODULE_DEPENDS for cam, pci, mca, eisa and isa where needed. 2006-12-11 18:28:31 +00:00
wi replace if_watchdog w/ a private callout 2006-12-11 00:41:22 +00:00
wl Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00
xe o Fix printf(9) formatting: do not use hardcode "0x" and "#" flags 2006-04-15 11:41:40 +00:00
zs Sweep kernel replacing suser(9) calls with priv(9) calls, assigning 2006-11-06 13:42:10 +00:00