|  | 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. |