Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 20 Jan 2012 18:09:57 +0100
From:      Joel Dahl <joel@freebsd.org>
To:        multimedia@freebsd.org
Subject:   Removing broken drivers in sys/dev/sound/pci
Message-ID:  <20120120170956.GV11137@goofy01.vnodelab.local>

next in thread | raw e-mail | index | archive | help
Hi all,

I've been playing with a bunch of old sound cards I had lying around and I've
come to the conlusion that maybe it's time to remove a few old drivers we
currently have in the tree.

- snd_aureal

This driver wasn't really finished when it was committed back in 1999 and it's
still incomplete. No playback and it doesn't even have a manual page. There's
audio/aureal-kmod in ports which probably works better for this card...

- snd_ds1

I don't think I've seen anyone successfully using this driver in a while and some
quick research reveals a few problem reports on the FreeBSD mailing lists. I
have a Yamaha TMF744 card which I've been doing some testing with: playback
doesn't really work (well, sort of), with mpg321 I sometimes get an almost
instant reboot. When it doesn't reboot I get really distorted and weird sound.
Maybe a faulty card. Can anyone else test this driver with FreeBSD 10-CURRENT?

- snd_maestro

This driver seems to have been broken since 5.2.1 and there are currently
3 open PR's: kern/63204, kern/119973 and kern/122086. I decided to give it
a try with an old ESS Maestro-2 that I have here and I got a bunch of errors
when trying to kldload it on FreeBSD-CURRENT:

pcm1: <ESS Technology Maestro-2> port 0x1100-0x11ff irq 22 at device 11.0 on
pci16 lock order reversal: (sleepable after non-sleepable)
 1st 0xfffffe0008118050 ESS Technology Maestro-2 (snd_maestro softc) @
 /usr/src/sys/modules/sound/driver/maestro/../../../../dev/sound/pci/maestro.c:1886
 2nd 0xffffffff8111b900 ACPI PCI power methods (ACPI PCI power methods) @
 /usr/src/sys/dev/acpica/acpi_pci.c:180
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
kdb_backtrace() at kdb_backtrace+0x37
_witness_debugger() at _witness_debugger+0x2c
witness_checkorder() at witness_checkorder+0x854
_sx_xlock() at _sx_xlock+0x5d
acpi_pci_set_powerstate_method() at acpi_pci_set_powerstate_method+0x6a
agg_power() at agg_power+0xd0
agg_attach() at agg_attach+0x608
device_attach() at device_attach+0x69
pci_driver_added() at pci_driver_added+0xda
devclass_driver_added() at devclass_driver_added+0x75
devclass_add_driver() at devclass_add_driver+0x10b
module_register_init() at module_register_init+0x7d
linker_load_module() at linker_load_module+0x9c3
kern_kldload() at kern_kldload+0xac
sys_kldload() at sys_kldload+0x84
amd64_syscall() at amd64_syscall+0x39e
Xfast_syscall() at Xfast_syscall+0xf7
--- syscall (304, FreeBSD ELF64, sys_kldload), rip = 0x8008adc0c,
 rsp = 0x7fffffffd5c8, rbp = 0x7fffffffdb48 ---
pcm1: agg_rdcodec() RW_DONE timed out.
pcm1: agg_rdcodec() PROGLESS timed out.
pcm1: agg_wrcodec() PROGLESS timed out.
pcm1: <Asahi Kasei AK4540 AC97 Codec>
pcm1: agg_rdcodec() PROGLESS timed out.
pcm1: agg_wrcodec() PROGLESS timed out.
pci16: failed to set ACPI power state D2 on \\_SB_.PCI0.HUB_.SLT3: AE_BAD_PARAMETER

Playback does not work, which isn't all that surprising.

--

On the other hand, I did some testing on a few other cards as well and the
following drivers (snd_fm801, snd_solo, snd_csa, snd_cmi) are still
working (I've only tested playback), in case someone finds it interesting:

hpxw# cat /dev/sndstat 
FreeBSD Audio Driver (newpcm: 64bit 2009061500/amd64)
Installed devices:
pcm0: <Forte Media FM801 Audio Controller> (play/rec)
pcm1: <ESS Solo-1E> (play/rec)
pcm2: <CS461x PCM Audio> (play/rec)
pcm3: <CMedia CMI8738> (play/rec)

Considering the fact that snd_cmi/snd_csa are somewhat common cards, maybe
they belong in GENERIC?

--

If no one objects I'll go ahead and remove snd_aureal, snd_ds1 and
snd_maestro in a month or so.

-- 
Joel



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120120170956.GV11137>