 1da177e4c3
			
		
	
	
	1da177e4c3
	
	
	
		
			
			Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
		
			
				
	
	
		
			210 lines
		
	
	
	
		
			7.5 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			210 lines
		
	
	
	
		
			7.5 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
| Documentation for the OPL3-SA2, SA3, and SAx driver (opl3sa2.o)
 | |
| ---------------------------------------------------------------
 | |
| 
 | |
| Scott Murray, scott@spiteful.org
 | |
| January 7, 2001
 | |
| 
 | |
| NOTE: All trade-marked terms mentioned below are properties of their
 | |
|       respective owners.
 | |
| 
 | |
| 
 | |
| Supported Devices
 | |
| -----------------
 | |
| 
 | |
| This driver is for PnP soundcards based on the following Yamaha audio
 | |
| controller chipsets:
 | |
| 
 | |
| YMF711 aka OPL3-SA2
 | |
| YMF715 and YMF719 aka OPL3-SA3
 | |
| 
 | |
| Up until recently (December 2000), I'd thought the 719 to be a
 | |
| different chipset, the OPL3-SAx.  After an email exhange with
 | |
| Yamaha, however, it turns out that the 719 is just a re-badged
 | |
| 715, and the chipsets are identical.  The chipset detection code
 | |
| has been updated to reflect this.
 | |
| 
 | |
| Anyways, all of these chipsets implement the following devices:
 | |
| 
 | |
| OPL3 FM synthesizer
 | |
| Soundblaster Pro
 | |
| Microsoft/Windows Sound System
 | |
| MPU401 MIDI interface
 | |
| 
 | |
| Note that this driver uses the MSS device, and to my knowledge these
 | |
| chipsets enforce an either/or situation with the Soundblaster Pro
 | |
| device and the MSS device.  Since the MSS device has better
 | |
| capabilities, I have implemented the driver to use it.
 | |
| 
 | |
| 
 | |
| Mixer Channels
 | |
| --------------
 | |
| 
 | |
| Older versions of this driver (pre-December 2000) had two mixers,
 | |
| an OPL3-SA2 or SA3 mixer and a MSS mixer.  The OPL3-SA[23] mixer
 | |
| device contained a superset of mixer channels consisting of its own
 | |
| channels and all of the MSS mixer channels.  To simplify the driver
 | |
| considerably, and to partition functionality better, the OPL3-SA[23]
 | |
| mixer device now contains has its own specific mixer channels.  They
 | |
| are:
 | |
| 
 | |
| Volume     - Hardware master volume control
 | |
| Bass       - SA3 only, now supports left and right channels
 | |
| Treble     - SA3 only, now supports left and right channels
 | |
| Microphone - Hardware microphone input volume control
 | |
| Digital1   - Yamaha 3D enhancement "Wide" mixer
 | |
| 
 | |
| All other mixer channels (e.g. "PCM", "CD", etc.) now have to be
 | |
| controlled via the "MS Sound System (CS4231)" mixer.  To facilitate
 | |
| this, the mixer device creation order has been switched so that
 | |
| the MSS mixer is created first.  This allows accessing the majority
 | |
| of the useful mixer channels even via single mixer-aware tools
 | |
| such as "aumix".
 | |
| 
 | |
| 
 | |
| Plug 'n Play
 | |
| ------------
 | |
| 
 | |
| In previous kernels (2.2.x), some configuration was required to
 | |
| get the driver to talk to the card.  Being the new millennium and
 | |
| all, the 2.4.x kernels now support auto-configuration if ISA PnP
 | |
| support is configured in.  Theoretically, the driver even supports
 | |
| having more than one card in this case.
 | |
| 
 | |
| With the addition of PnP support to the driver, two new parameters
 | |
| have been added to control it:
 | |
| 
 | |
| isapnp   - set to 0 to disable ISA PnP card detection
 | |
| 
 | |
| multiple - set to 0 to disable multiple PnP card detection
 | |
| 
 | |
| 
 | |
| Optional Parameters
 | |
| -------------------
 | |
| 
 | |
| Recent (December 2000) additions to the driver (based on a patch
 | |
| provided by Peter Englmaier) are two new parameters:
 | |
| 
 | |
| ymode -    Set Yamaha 3D enhancement mode:
 | |
|            0 = Desktop/Normal  5-12 cm speakers
 | |
|            1 = Notebook PC (1) 3 cm speakers
 | |
|            2 = Notebook PC (2) 1.5 cm speakers
 | |
|            3 = Hi-Fi           16-38 cm speakers
 | |
| 
 | |
| loopback - Set A/D input source. Useful for echo cancellation:
 | |
|            0 = Mic Right channel (default)
 | |
|            1 = Mono output loopback
 | |
| 
 | |
| The ymode parameter has been tested and does work.  The loopback
 | |
| parameter, however, is untested.  Any feedback on its usefulness
 | |
| would be appreciated.
 | |
| 
 | |
| 
 | |
| Manual Configuration
 | |
| --------------------
 | |
| 
 | |
| If for some reason you decide not to compile ISA PnP support into
 | |
| your kernel, or disabled the driver's usage of it by setting the
 | |
| isapnp parameter as discussed above, then you will need to do some
 | |
| manual configuration.  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.
 | |
| 
 | |
| I personally use isapnp and modules, and do not have access to a PnP
 | |
| BIOS machine to test.  If you have such a beast, configuring the
 | |
| driver to be built into the kernel should just work (thanks to work
 | |
| done by David Luyer <luyer@ucs.uwa.edu.au>).  You will still need
 | |
| to specify settings, which can be done by adding:
 | |
| 
 | |
| opl3sa2=<io>,<irq>,<dma>,<dma2>,<mssio>,<mpuio>
 | |
| 
 | |
| to the kernel command line.  For example:
 | |
| 
 | |
| opl3sa2=0x370,5,0,1,0x530,0x330
 | |
| 
 | |
| If you are instead using the isapnp tools (as most people have been
 | |
| before Linux 2.4.x), follow the directions in their documentation to
 | |
| produce a configuration file.  Here is the relevant excerpt I used to
 | |
| use for my SA3 card from my isapnp.conf:
 | |
| 
 | |
| (CONFIGURE YMH0800/-1 (LD 0
 | |
| 
 | |
| # NOTE: IO 0 is for the unused SoundBlaster part of the chipset.
 | |
| (IO 0 (BASE 0x0220))
 | |
| (IO 1 (BASE 0x0530))
 | |
| (IO 2 (BASE 0x0388))
 | |
| (IO 3 (BASE 0x0330))
 | |
| (IO 4 (BASE 0x0370))
 | |
| (INT 0 (IRQ 5 (MODE +E)))
 | |
| (DMA 0 (CHANNEL 0))
 | |
| (DMA 1 (CHANNEL 1))
 | |
| 
 | |
| Here, note that:
 | |
| 
 | |
| Port  Acceptable Range  Purpose
 | |
| ----  ----------------  -------
 | |
| IO 0  0x0220 - 0x0280   SB base address, unused.
 | |
| IO 1  0x0530 - 0x0F48   MSS base address
 | |
| IO 2  0x0388 - 0x03F8   OPL3 base address
 | |
| IO 3  0x0300 - 0x0334   MPU base address
 | |
| IO 4  0x0100 - 0x0FFE   card's own base address for its control I/O ports
 | |
| 
 | |
| The IRQ and DMA values can be any that are considered acceptable for a
 | |
| MSS.  Assuming you've got isapnp all happy, then you should be able to
 | |
| do something like the following (which matches up with the isapnp
 | |
| configuration above):
 | |
| 
 | |
| modprobe mpu401
 | |
| modprobe ad1848
 | |
| modprobe opl3sa2 io=0x370 mss_io=0x530 mpu_io=0x330 irq=5 dma=0 dma2=1
 | |
| modprobe opl3 io=0x388
 | |
| 
 | |
| See the section "Automatic Module Loading" below for how to set up
 | |
| /etc/modprobe.conf to automate this.
 | |
| 
 | |
| An important thing to remember that the opl3sa2 module's io argument is
 | |
| for it's own control port, which handles the card's master mixer for
 | |
| volume (on all cards), and bass and treble (on SA3 cards).
 | |
| 
 | |
| 
 | |
| Troubleshooting
 | |
| ---------------
 | |
| 
 | |
| 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 opl3sa2 module, 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 still cannot get the module to load, look at the contents of
 | |
| your system log file, usually /var/log/messages.  If you see the
 | |
| message "opl3sa2: Unknown Yamaha audio controller version", then you
 | |
| have a different chipset version than I've encountered so far.  Look
 | |
| for all messages in the log file that start with "opl3sa2: " and see
 | |
| if they provide any clues.  If you do not see the chipset version
 | |
| message, and none of the other messages present in the system log are
 | |
| helpful, email me some details and I'll try my best to help.
 | |
| 
 | |
| 
 | |
| Automatic Module Loading
 | |
| ------------------------
 | |
| 
 | |
| 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 modprobe.conf file:
 | |
| 
 | |
| # Sound
 | |
| alias sound-slot-0 opl3sa2
 | |
| options opl3sa2 io=0x370 mss_io=0x530 mpu_io=0x330 irq=7 dma=0 dma2=3
 | |
| options opl3 io=0x388
 | |
| 
 | |
| That's all it currently takes to get an OPL3-SA3 card working on my
 | |
| system.  Once again, if you have any other problems, email me at the
 | |
| address listed above.
 | |
| 
 | |
| Scott
 |