| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | Documentation for the OPL3-SA2, SA3, and SAx driver (opl3sa2.o) | 
|  | 2 | --------------------------------------------------------------- | 
|  | 3 |  | 
|  | 4 | Scott Murray, scott@spiteful.org | 
|  | 5 | January 7, 2001 | 
|  | 6 |  | 
|  | 7 | NOTE: All trade-marked terms mentioned below are properties of their | 
|  | 8 | respective owners. | 
|  | 9 |  | 
|  | 10 |  | 
|  | 11 | Supported Devices | 
|  | 12 | ----------------- | 
|  | 13 |  | 
|  | 14 | This driver is for PnP soundcards based on the following Yamaha audio | 
|  | 15 | controller chipsets: | 
|  | 16 |  | 
|  | 17 | YMF711 aka OPL3-SA2 | 
|  | 18 | YMF715 and YMF719 aka OPL3-SA3 | 
|  | 19 |  | 
|  | 20 | Up until recently (December 2000), I'd thought the 719 to be a | 
|  | 21 | different chipset, the OPL3-SAx.  After an email exhange with | 
|  | 22 | Yamaha, however, it turns out that the 719 is just a re-badged | 
|  | 23 | 715, and the chipsets are identical.  The chipset detection code | 
|  | 24 | has been updated to reflect this. | 
|  | 25 |  | 
|  | 26 | Anyways, all of these chipsets implement the following devices: | 
|  | 27 |  | 
|  | 28 | OPL3 FM synthesizer | 
|  | 29 | Soundblaster Pro | 
|  | 30 | Microsoft/Windows Sound System | 
|  | 31 | MPU401 MIDI interface | 
|  | 32 |  | 
|  | 33 | Note that this driver uses the MSS device, and to my knowledge these | 
|  | 34 | chipsets enforce an either/or situation with the Soundblaster Pro | 
|  | 35 | device and the MSS device.  Since the MSS device has better | 
|  | 36 | capabilities, I have implemented the driver to use it. | 
|  | 37 |  | 
|  | 38 |  | 
|  | 39 | Mixer Channels | 
|  | 40 | -------------- | 
|  | 41 |  | 
|  | 42 | Older versions of this driver (pre-December 2000) had two mixers, | 
|  | 43 | an OPL3-SA2 or SA3 mixer and a MSS mixer.  The OPL3-SA[23] mixer | 
|  | 44 | device contained a superset of mixer channels consisting of its own | 
|  | 45 | channels and all of the MSS mixer channels.  To simplify the driver | 
|  | 46 | considerably, and to partition functionality better, the OPL3-SA[23] | 
|  | 47 | mixer device now contains has its own specific mixer channels.  They | 
|  | 48 | are: | 
|  | 49 |  | 
|  | 50 | Volume     - Hardware master volume control | 
|  | 51 | Bass       - SA3 only, now supports left and right channels | 
|  | 52 | Treble     - SA3 only, now supports left and right channels | 
|  | 53 | Microphone - Hardware microphone input volume control | 
|  | 54 | Digital1   - Yamaha 3D enhancement "Wide" mixer | 
|  | 55 |  | 
|  | 56 | All other mixer channels (e.g. "PCM", "CD", etc.) now have to be | 
|  | 57 | controlled via the "MS Sound System (CS4231)" mixer.  To facilitate | 
|  | 58 | this, the mixer device creation order has been switched so that | 
|  | 59 | the MSS mixer is created first.  This allows accessing the majority | 
|  | 60 | of the useful mixer channels even via single mixer-aware tools | 
|  | 61 | such as "aumix". | 
|  | 62 |  | 
|  | 63 |  | 
|  | 64 | Plug 'n Play | 
|  | 65 | ------------ | 
|  | 66 |  | 
|  | 67 | In previous kernels (2.2.x), some configuration was required to | 
|  | 68 | get the driver to talk to the card.  Being the new millennium and | 
|  | 69 | all, the 2.4.x kernels now support auto-configuration if ISA PnP | 
|  | 70 | support is configured in.  Theoretically, the driver even supports | 
|  | 71 | having more than one card in this case. | 
|  | 72 |  | 
|  | 73 | With the addition of PnP support to the driver, two new parameters | 
|  | 74 | have been added to control it: | 
|  | 75 |  | 
|  | 76 | isapnp   - set to 0 to disable ISA PnP card detection | 
|  | 77 |  | 
|  | 78 | multiple - set to 0 to disable multiple PnP card detection | 
|  | 79 |  | 
|  | 80 |  | 
|  | 81 | Optional Parameters | 
|  | 82 | ------------------- | 
|  | 83 |  | 
|  | 84 | Recent (December 2000) additions to the driver (based on a patch | 
|  | 85 | provided by Peter Englmaier) are two new parameters: | 
|  | 86 |  | 
|  | 87 | ymode -    Set Yamaha 3D enhancement mode: | 
|  | 88 | 0 = Desktop/Normal  5-12 cm speakers | 
|  | 89 | 1 = Notebook PC (1) 3 cm speakers | 
|  | 90 | 2 = Notebook PC (2) 1.5 cm speakers | 
|  | 91 | 3 = Hi-Fi           16-38 cm speakers | 
|  | 92 |  | 
|  | 93 | loopback - Set A/D input source. Useful for echo cancellation: | 
|  | 94 | 0 = Mic Right channel (default) | 
|  | 95 | 1 = Mono output loopback | 
|  | 96 |  | 
|  | 97 | The ymode parameter has been tested and does work.  The loopback | 
|  | 98 | parameter, however, is untested.  Any feedback on its usefulness | 
|  | 99 | would be appreciated. | 
|  | 100 |  | 
|  | 101 |  | 
|  | 102 | Manual Configuration | 
|  | 103 | -------------------- | 
|  | 104 |  | 
|  | 105 | If for some reason you decide not to compile ISA PnP support into | 
|  | 106 | your kernel, or disabled the driver's usage of it by setting the | 
|  | 107 | isapnp parameter as discussed above, then you will need to do some | 
|  | 108 | manual configuration.  There are two ways of doing this.  The most | 
|  | 109 | common is to use the isapnptools package to initialize the card, and | 
|  | 110 | use the kernel module form of the sound subsystem and sound drivers. | 
|  | 111 | Alternatively, some BIOS's allow manual configuration of installed | 
|  | 112 | PnP devices in a BIOS menu, which should allow using the non-modular | 
|  | 113 | sound drivers, i.e. built into the kernel. | 
|  | 114 |  | 
|  | 115 | I personally use isapnp and modules, and do not have access to a PnP | 
|  | 116 | BIOS machine to test.  If you have such a beast, configuring the | 
|  | 117 | driver to be built into the kernel should just work (thanks to work | 
|  | 118 | done by David Luyer <luyer@ucs.uwa.edu.au>).  You will still need | 
|  | 119 | to specify settings, which can be done by adding: | 
|  | 120 |  | 
|  | 121 | opl3sa2=<io>,<irq>,<dma>,<dma2>,<mssio>,<mpuio> | 
|  | 122 |  | 
|  | 123 | to the kernel command line.  For example: | 
|  | 124 |  | 
|  | 125 | opl3sa2=0x370,5,0,1,0x530,0x330 | 
|  | 126 |  | 
|  | 127 | If you are instead using the isapnp tools (as most people have been | 
|  | 128 | before Linux 2.4.x), follow the directions in their documentation to | 
|  | 129 | produce a configuration file.  Here is the relevant excerpt I used to | 
|  | 130 | use for my SA3 card from my isapnp.conf: | 
|  | 131 |  | 
|  | 132 | (CONFIGURE YMH0800/-1 (LD 0 | 
|  | 133 |  | 
|  | 134 | # NOTE: IO 0 is for the unused SoundBlaster part of the chipset. | 
|  | 135 | (IO 0 (BASE 0x0220)) | 
|  | 136 | (IO 1 (BASE 0x0530)) | 
|  | 137 | (IO 2 (BASE 0x0388)) | 
|  | 138 | (IO 3 (BASE 0x0330)) | 
|  | 139 | (IO 4 (BASE 0x0370)) | 
|  | 140 | (INT 0 (IRQ 5 (MODE +E))) | 
|  | 141 | (DMA 0 (CHANNEL 0)) | 
|  | 142 | (DMA 1 (CHANNEL 1)) | 
|  | 143 |  | 
|  | 144 | Here, note that: | 
|  | 145 |  | 
|  | 146 | Port  Acceptable Range  Purpose | 
|  | 147 | ----  ----------------  ------- | 
|  | 148 | IO 0  0x0220 - 0x0280   SB base address, unused. | 
|  | 149 | IO 1  0x0530 - 0x0F48   MSS base address | 
|  | 150 | IO 2  0x0388 - 0x03F8   OPL3 base address | 
|  | 151 | IO 3  0x0300 - 0x0334   MPU base address | 
|  | 152 | IO 4  0x0100 - 0x0FFE   card's own base address for its control I/O ports | 
|  | 153 |  | 
|  | 154 | The IRQ and DMA values can be any that are considered acceptable for a | 
|  | 155 | MSS.  Assuming you've got isapnp all happy, then you should be able to | 
|  | 156 | do something like the following (which matches up with the isapnp | 
|  | 157 | configuration above): | 
|  | 158 |  | 
|  | 159 | modprobe mpu401 | 
|  | 160 | modprobe ad1848 | 
|  | 161 | modprobe opl3sa2 io=0x370 mss_io=0x530 mpu_io=0x330 irq=5 dma=0 dma2=1 | 
|  | 162 | modprobe opl3 io=0x388 | 
|  | 163 |  | 
|  | 164 | See the section "Automatic Module Loading" below for how to set up | 
|  | 165 | /etc/modprobe.conf to automate this. | 
|  | 166 |  | 
|  | 167 | An important thing to remember that the opl3sa2 module's io argument is | 
|  | 168 | for it's own control port, which handles the card's master mixer for | 
|  | 169 | volume (on all cards), and bass and treble (on SA3 cards). | 
|  | 170 |  | 
|  | 171 |  | 
|  | 172 | Troubleshooting | 
|  | 173 | --------------- | 
|  | 174 |  | 
|  | 175 | If all goes well and you see no error messages, you should be able to | 
|  | 176 | start using the sound capabilities of your system.  If you get an | 
|  | 177 | error message while trying to insert the opl3sa2 module, then make | 
|  | 178 | sure that the values of the various arguments match what you specified | 
|  | 179 | in your isapnp configuration file, and that there is no conflict with | 
|  | 180 | another device for an I/O port or interrupt.  Checking the contents of | 
|  | 181 | /proc/ioports and /proc/interrupts can be useful to see if you're | 
|  | 182 | butting heads with another device. | 
|  | 183 |  | 
|  | 184 | If you still cannot get the module to load, look at the contents of | 
|  | 185 | your system log file, usually /var/log/messages.  If you see the | 
|  | 186 | message "opl3sa2: Unknown Yamaha audio controller version", then you | 
|  | 187 | have a different chipset version than I've encountered so far.  Look | 
|  | 188 | for all messages in the log file that start with "opl3sa2: " and see | 
|  | 189 | if they provide any clues.  If you do not see the chipset version | 
|  | 190 | message, and none of the other messages present in the system log are | 
|  | 191 | helpful, email me some details and I'll try my best to help. | 
|  | 192 |  | 
|  | 193 |  | 
|  | 194 | Automatic Module Loading | 
|  | 195 | ------------------------ | 
|  | 196 |  | 
|  | 197 | Lastly, if you're using modules and want to set up automatic module | 
|  | 198 | loading with kmod, the kernel module loader, here is the section I | 
|  | 199 | currently use in my modprobe.conf file: | 
|  | 200 |  | 
|  | 201 | # Sound | 
|  | 202 | alias sound-slot-0 opl3sa2 | 
|  | 203 | options opl3sa2 io=0x370 mss_io=0x530 mpu_io=0x330 irq=7 dma=0 dma2=3 | 
|  | 204 | options opl3 io=0x388 | 
|  | 205 |  | 
|  | 206 | That's all it currently takes to get an OPL3-SA3 card working on my | 
|  | 207 | system.  Once again, if you have any other problems, email me at the | 
|  | 208 | address listed above. | 
|  | 209 |  | 
|  | 210 | Scott |