106 lines
		
	
	
	
		
			4.5 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			106 lines
		
	
	
	
		
			4.5 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
| 
								 | 
							
								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.
							 |