Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | Documentation for the SoundPro CMI8330 extensions in the WSS driver (ad1848.o) |
| 2 | ------------------------------------------------------------------------------ |
| 3 | |
| 4 | ( Be sure to read Documentation/sound/oss/CMI8330 too ) |
| 5 | |
| 6 | Ion Badulescu, ionut@cs.columbia.edu |
| 7 | February 24, 1999 |
| 8 | |
| 9 | (derived from the OPL3-SA2 documentation by Scott Murray) |
| 10 | |
| 11 | The SoundPro CMI8330 (ISA) is a chip usually found on some Taiwanese |
| 12 | motherboards. The official name in the documentation is CMI8330, SoundPro |
| 13 | is the nickname and the big inscription on the chip itself. |
| 14 | |
| 15 | The chip emulates a WSS as well as a SB16, but it has certain differences |
| 16 | in the mixer section which require separate support. It also emulates an |
| 17 | MPU401 and an OPL3 synthesizer, so you probably want to enable support |
| 18 | for these, too. |
| 19 | |
| 20 | The chip identifies itself as an AD1848, but its mixer is significantly |
| 21 | more advanced than the original AD1848 one. If your system works with |
| 22 | either WSS or SB16 and you are having problems with some mixer controls |
| 23 | (no CD audio, no line-in, etc), you might want to give this driver a try. |
| 24 | Detection should work, but it hasn't been widely tested, so it might still |
| 25 | mis-identify the chip. You can still force soundpro=1 in the modprobe |
| 26 | parameters for ad1848. Please let me know if it happens to you, so I can |
| 27 | adjust the detection routine. |
| 28 | |
| 29 | The chip is capable of doing full-duplex, but since the driver sees it as an |
| 30 | AD1848, it cannot take advantage of this. Moreover, the full-duplex mode is |
| 31 | not achievable through the WSS interface, b/c it needs a dma16 line which is |
| 32 | assigned only to the SB16 subdevice (with isapnp). Windows documentation |
| 33 | says the user must use WSS Playback and SB16 Recording for full-duplex, so |
| 34 | it might be possible to do the same thing under Linux. You can try loading |
| 35 | up both ad1848 and sb then use one for playback and the other for |
| 36 | recording. I don't know if this works, b/c I haven't tested it. Anyway, if |
| 37 | you try it, be very careful: the SB16 mixer *mostly* works, but certain |
| 38 | settings can have unexpected effects. Use the WSS mixer for best results. |
| 39 | |
| 40 | There is also a PCI SoundPro chip. I have not seen this chip, so I have |
| 41 | no idea if the driver will work with it. I suspect it won't. |
| 42 | |
| 43 | As with PnP cards, some configuration is required. There are two ways |
| 44 | of doing this. The most common is to use the isapnptools package to |
| 45 | initialize the card, and use the kernel module form of the sound |
| 46 | subsystem and sound drivers. Alternatively, some BIOS's allow manual |
| 47 | configuration of installed PnP devices in a BIOS menu, which should |
| 48 | allow using the non-modular sound drivers, i.e. built into the kernel. |
| 49 | Since in this latter case you cannot use module parameters, you will |
| 50 | have to enable support for the SoundPro at compile time. |
| 51 | |
| 52 | The IRQ and DMA values can be any that are considered acceptable for a |
| 53 | WSS. Assuming you've got isapnp all happy, then you should be able to |
| 54 | do something like the following (which *must* match the isapnp/BIOS |
| 55 | configuration): |
| 56 | |
| 57 | modprobe ad1848 io=0x530 irq=11 dma=0 soundpro=1 |
| 58 | -and maybe- |
| 59 | modprobe sb io=0x220 irq=5 dma=1 dma16=5 |
| 60 | |
| 61 | -then- |
| 62 | modprobe mpu401 io=0x330 irq=9 |
| 63 | modprobe opl3 io=0x388 |
| 64 | |
| 65 | If all goes well and you see no error messages, you should be able to |
| 66 | start using the sound capabilities of your system. If you get an |
| 67 | error message while trying to insert the module(s), then make |
| 68 | sure that the values of the various arguments match what you specified |
| 69 | in your isapnp configuration file, and that there is no conflict with |
| 70 | another device for an I/O port or interrupt. Checking the contents of |
| 71 | /proc/ioports and /proc/interrupts can be useful to see if you're |
| 72 | butting heads with another device. |
| 73 | |
| 74 | If you do not see the chipset version message, and none of the other |
| 75 | messages present in the system log are helpful, try adding 'debug=1' |
| 76 | to the ad1848 parameters, email me the syslog results and I'll do |
| 77 | my best to help. |
| 78 | |
| 79 | Lastly, if you're using modules and want to set up automatic module |
| 80 | loading with kmod, the kernel module loader, here is the section I |
| 81 | currently use in my conf.modules file: |
| 82 | |
| 83 | # Sound |
| 84 | post-install sound modprobe -k ad1848; modprobe -k mpu401; modprobe -k opl3 |
| 85 | options ad1848 io=0x530 irq=11 dma=0 |
| 86 | options sb io=0x220 irq=5 dma=1 dma16=5 |
| 87 | options mpu401 io=0x330 irq=9 |
| 88 | options opl3 io=0x388 |
| 89 | |
| 90 | The above ensures that ad1848 will be loaded whenever the sound system |
| 91 | is being used. |
| 92 | |
| 93 | Good luck. |
| 94 | |
| 95 | Ion |
| 96 | |
| 97 | NOT REALLY TESTED: |
| 98 | - recording |
| 99 | - recording device selection |
| 100 | - full-duplex |
| 101 | |
| 102 | TODO: |
| 103 | - implement mixer support for surround, loud, digital CD switches. |
| 104 | - come up with a scheme which allows recording volumes for each subdevice. |
| 105 | This is a major OSS API change. |