mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-21 11:44:01 +08:00
106 lines
4.5 KiB
Plaintext
106 lines
4.5 KiB
Plaintext
|
Documentation for the SoundPro CMI8330 extensions in the WSS driver (ad1848.o)
|
||
|
------------------------------------------------------------------------------
|
||
|
|
||
|
( Be sure to read Documentation/sound/oss/CMI8330 too )
|
||
|
|
||
|
Ion Badulescu, ionut@cs.columbia.edu
|
||
|
February 24, 1999
|
||
|
|
||
|
(derived from the OPL3-SA2 documentation by Scott Murray)
|
||
|
|
||
|
The SoundPro CMI8330 (ISA) is a chip usually found on some Taiwanese
|
||
|
motherboards. The official name in the documentation is CMI8330, SoundPro
|
||
|
is the nickname and the big inscription on the chip itself.
|
||
|
|
||
|
The chip emulates a WSS as well as a SB16, but it has certain differences
|
||
|
in the mixer section which require separate support. It also emulates an
|
||
|
MPU401 and an OPL3 synthesizer, so you probably want to enable support
|
||
|
for these, too.
|
||
|
|
||
|
The chip identifies itself as an AD1848, but its mixer is significantly
|
||
|
more advanced than the original AD1848 one. If your system works with
|
||
|
either WSS or SB16 and you are having problems with some mixer controls
|
||
|
(no CD audio, no line-in, etc), you might want to give this driver a try.
|
||
|
Detection should work, but it hasn't been widely tested, so it might still
|
||
|
mis-identify the chip. You can still force soundpro=1 in the modprobe
|
||
|
parameters for ad1848. Please let me know if it happens to you, so I can
|
||
|
adjust the detection routine.
|
||
|
|
||
|
The chip is capable of doing full-duplex, but since the driver sees it as an
|
||
|
AD1848, it cannot take advantage of this. Moreover, the full-duplex mode is
|
||
|
not achievable through the WSS interface, b/c it needs a dma16 line which is
|
||
|
assigned only to the SB16 subdevice (with isapnp). Windows documentation
|
||
|
says the user must use WSS Playback and SB16 Recording for full-duplex, so
|
||
|
it might be possible to do the same thing under Linux. You can try loading
|
||
|
up both ad1848 and sb then use one for playback and the other for
|
||
|
recording. I don't know if this works, b/c I haven't tested it. Anyway, if
|
||
|
you try it, be very careful: the SB16 mixer *mostly* works, but certain
|
||
|
settings can have unexpected effects. Use the WSS mixer for best results.
|
||
|
|
||
|
There is also a PCI SoundPro chip. I have not seen this chip, so I have
|
||
|
no idea if the driver will work with it. I suspect it won't.
|
||
|
|
||
|
As with PnP cards, some configuration is required. There are two ways
|
||
|
of doing this. The most common is to use the isapnptools package to
|
||
|
initialize the card, and use the kernel module form of the sound
|
||
|
subsystem and sound drivers. Alternatively, some BIOS's allow manual
|
||
|
configuration of installed PnP devices in a BIOS menu, which should
|
||
|
allow using the non-modular sound drivers, i.e. built into the kernel.
|
||
|
Since in this latter case you cannot use module parameters, you will
|
||
|
have to enable support for the SoundPro at compile time.
|
||
|
|
||
|
The IRQ and DMA values can be any that are considered acceptable for a
|
||
|
WSS. Assuming you've got isapnp all happy, then you should be able to
|
||
|
do something like the following (which *must* match the isapnp/BIOS
|
||
|
configuration):
|
||
|
|
||
|
modprobe ad1848 io=0x530 irq=11 dma=0 soundpro=1
|
||
|
-and maybe-
|
||
|
modprobe sb io=0x220 irq=5 dma=1 dma16=5
|
||
|
|
||
|
-then-
|
||
|
modprobe mpu401 io=0x330 irq=9
|
||
|
modprobe opl3 io=0x388
|
||
|
|
||
|
If all goes well and you see no error messages, you should be able to
|
||
|
start using the sound capabilities of your system. If you get an
|
||
|
error message while trying to insert the module(s), then make
|
||
|
sure that the values of the various arguments match what you specified
|
||
|
in your isapnp configuration file, and that there is no conflict with
|
||
|
another device for an I/O port or interrupt. Checking the contents of
|
||
|
/proc/ioports and /proc/interrupts can be useful to see if you're
|
||
|
butting heads with another device.
|
||
|
|
||
|
If you do not see the chipset version message, and none of the other
|
||
|
messages present in the system log are helpful, try adding 'debug=1'
|
||
|
to the ad1848 parameters, email me the syslog results and I'll do
|
||
|
my best to help.
|
||
|
|
||
|
Lastly, if you're using modules and want to set up automatic module
|
||
|
loading with kmod, the kernel module loader, here is the section I
|
||
|
currently use in my conf.modules file:
|
||
|
|
||
|
# Sound
|
||
|
post-install sound modprobe -k ad1848; modprobe -k mpu401; modprobe -k opl3
|
||
|
options ad1848 io=0x530 irq=11 dma=0
|
||
|
options sb io=0x220 irq=5 dma=1 dma16=5
|
||
|
options mpu401 io=0x330 irq=9
|
||
|
options opl3 io=0x388
|
||
|
|
||
|
The above ensures that ad1848 will be loaded whenever the sound system
|
||
|
is being used.
|
||
|
|
||
|
Good luck.
|
||
|
|
||
|
Ion
|
||
|
|
||
|
NOT REALLY TESTED:
|
||
|
- recording
|
||
|
- recording device selection
|
||
|
- full-duplex
|
||
|
|
||
|
TODO:
|
||
|
- implement mixer support for surround, loud, digital CD switches.
|
||
|
- come up with a scheme which allows recording volumes for each subdevice.
|
||
|
This is a major OSS API change.
|