281 lines
		
	
	
	
		
			11 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			281 lines
		
	
	
	
		
			11 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
|   | ======================================================= | ||
|  | Documentation for the NeoMagic 256AV/256ZX sound driver | ||
|  | ======================================================= | ||
|  | 
 | ||
|  | You're looking at version 1.1 of the driver.  (Woohoo!) It has been | ||
|  | successfully tested against the following laptop models: | ||
|  | 
 | ||
|  | 	Sony Z505S/Z505SX/Z505DX/Z505RX | ||
|  | 	Sony F150, F160, F180, F250, F270, F280, PCG-F26 | ||
|  | 	Dell Latitude CPi, CPt (various submodels) | ||
|  | 
 | ||
|  | There are a few caveats, which is why you should read the entirety of | ||
|  | this document first. | ||
|  | 
 | ||
|  | This driver was developed without any support or assistance from | ||
|  | NeoMagic.  There is no warranty, expressed, implied, or otherwise.  It | ||
|  | is free software in the public domain; feel free to use it, sell it, | ||
|  | give it to your best friends, even claim that you wrote it (but why?!) | ||
|  | but don't go whining to me, NeoMagic, Sony, Dell, or anyone else | ||
|  | when it blows up your computer. | ||
|  | 
 | ||
|  | Version 1.1 contains a change to try and detect non-AC97 versions of | ||
|  | the hardware, and not install itself appropriately.  It should also | ||
|  | reinitialize the hardware on an APM resume event, assuming that APM | ||
|  | was configured into your kernel. | ||
|  | 
 | ||
|  | ============ | ||
|  | Installation | ||
|  | ============ | ||
|  | 
 | ||
|  | Enable the sound drivers, the OSS sound drivers, and then the NM256 | ||
|  | driver.  The NM256 driver *must* be configured as a module (it won't | ||
|  | give you any other choice). | ||
|  | 
 | ||
|  | Next, do the usual "make modules" and "make modules_install". | ||
|  | Finally, insmod the soundcore, sound and nm256 modules. | ||
|  | 
 | ||
|  | When the nm256 driver module is loaded, you should see a couple of | ||
|  | confirmation messages in the kernel logfile indicating that it found | ||
|  | the device (the device does *not* use any I/O ports or DMA channels). | ||
|  | Now try playing a wav file, futz with the CD-ROM if you have one, etc. | ||
|  | 
 | ||
|  | The NM256 is entirely a PCI-based device, and all the necessary | ||
|  | information is automatically obtained from the card.  It can only be | ||
|  | configured as a module in a vain attempt to prevent people from | ||
|  | hurting themselves.  It works correctly if it shares an IRQ with | ||
|  | another device (it normally shares IRQ 9 with the builtin eepro100 | ||
|  | ethernet on the Sony Z505 laptops).  | ||
|  | 
 | ||
|  | It does not run the card in any sort of compatibility mode. It will | ||
|  | not work on laptops that have the SB16-compatible, AD1848-compatible | ||
|  | or CS4232-compatible codec/mixer; you will want to use the appropriate | ||
|  | compatible OSS driver with these chipsets.  I cannot provide any | ||
|  | assistance with machines using the SB16, AD1848 or CS4232 compatible | ||
|  | versions.  (The driver now attempts to detect the mixer version, and | ||
|  | will refuse to load if it believes the hardware is not | ||
|  | AC97-compatible.) | ||
|  | 
 | ||
|  | The sound support is very basic, but it does include simultaneous | ||
|  | playback and record capability.  The mixer support is also quite | ||
|  | simple, although this is in keeping with the rather limited | ||
|  | functionality of the chipset. | ||
|  | 
 | ||
|  | There is no hardware synthesizer available, as the Losedows OPL-3 and | ||
|  | MIDI support is done via hardware emulation. | ||
|  | 
 | ||
|  | Only three recording devices are available on the Sony: the | ||
|  | microphone, the CD-ROM input, and the volume device (which corresponds | ||
|  | to the stereo output).  (Other devices may be available on other | ||
|  | models of laptops.)  The Z505 series does not have a builtin CD-ROM, | ||
|  | so of course the CD-ROM input doesn't work.  It does work on laptops | ||
|  | with a builtin CD-ROM drive. | ||
|  | 
 | ||
|  | The mixer device does not appear to have any tone controls, at least | ||
|  | on the Z505 series.  The mixer module checks for tone controls in the | ||
|  | AC97 mixer, and will enable them if they are available. | ||
|  | 
 | ||
|  | ============== | ||
|  | Known problems | ||
|  | ============== | ||
|  | 
 | ||
|  |   * There are known problems with PCMCIA cards and the eepro100 ethernet  | ||
|  |     driver on the Z505S/Z505SX/Z505DX.  Keep reading. | ||
|  | 
 | ||
|  |   * There are also potential problems with using a virtual X display, and | ||
|  |     also problems loading the module after the X server has been started.  | ||
|  |     Keep reading. | ||
|  | 
 | ||
|  |   * The volume control isn't anywhere near linear.  Sorry.  This will be | ||
|  |     fixed eventually, when I get sufficiently annoyed with it.  (I doubt | ||
|  |     it will ever be fixed now, since I've never gotten sufficiently | ||
|  |     annoyed with it and nobody else seems to care.) | ||
|  | 
 | ||
|  |   * There are reports that the CD-ROM volume is very low.  Since I do not | ||
|  |     have a CD-ROM equipped laptop, I cannot test this (it's kinda hard to | ||
|  |     do remotely). | ||
|  | 
 | ||
|  |   * Only 8 fixed-rate speeds are supported.  This is mainly a chipset | ||
|  |     limitation.  It may be possible to support other speeds in the future. | ||
|  | 
 | ||
|  |   * There is no support for the telephone mixer/codec.  There is support | ||
|  |     for a phonein/phoneout device in the mixer driver;  whether or not  | ||
|  |     it does anything is anyone's guess.  (Reports on this would be | ||
|  |     appreciated.  You'll have to figure out how to get the phone to | ||
|  |     go off-hook before it'll work, tho.) | ||
|  | 
 | ||
|  |   * This driver was not written with any cooperation or support from | ||
|  |     NeoMagic.  If you have any questions about this, see their website | ||
|  |     for their official stance on supporting open source drivers. | ||
|  | 
 | ||
|  | ============ | ||
|  | Video memory | ||
|  | ============ | ||
|  | 
 | ||
|  | The NeoMagic sound engine uses a portion of the display memory to hold | ||
|  | the sound buffer.  (Crazy, eh?)  The NeoMagic video BIOS sets up a | ||
|  | special pointer at the top of video RAM to indicate where the top of | ||
|  | the audio buffer should be placed. | ||
|  | 
 | ||
|  | At the present time XFree86 is apparently not aware of this.  It will | ||
|  | thus write over either the pointer or the sound buffer with abandon. | ||
|  | (Accelerated-X seems to do a better job here.) | ||
|  | 
 | ||
|  | This implies a few things: | ||
|  | 
 | ||
|  |   * Sometimes the NM256 driver has to guess at where the buffer  | ||
|  |     should be placed, especially if the module is loaded after the | ||
|  |     X server is started.  It's usually correct, but it will consistently | ||
|  |     fail on the Sony F250. | ||
|  | 
 | ||
|  |   * Virtual screens greater than 1024x768x16 under XFree86 are | ||
|  |     problematic on laptops with only 2.5MB of screen RAM. This | ||
|  |     includes all of the 256AV-equipped laptops.  (Virtual displays | ||
|  |     may or may not work on the 256ZX, which has at least 4MB of | ||
|  |     video RAM.) | ||
|  | 
 | ||
|  | If you start having problems with random noise being output either | ||
|  | constantly (this is the usual symptom on the F250), or when windows | ||
|  | are moved around (this is the usual symptom when using a virtual | ||
|  | screen), the best fix is to | ||
|  | 
 | ||
|  |   * Don't use a virtual frame buffer. | ||
|  |   * Make sure you load the NM256 module before the X server is | ||
|  |     started. | ||
|  | 
 | ||
|  | On the F250, it is possible to force the driver to load properly even | ||
|  | after the XFree86 server is started by doing: | ||
|  | 
 | ||
|  | 	insmod nm256 buffertop=0x25a800 | ||
|  | 
 | ||
|  | This forces the audio buffers to the correct offset in screen RAM. | ||
|  | 
 | ||
|  | One user has reported a similar problem on the Sony F270, although | ||
|  | others apparently aren't seeing any problems.  His suggested command | ||
|  | is | ||
|  | 
 | ||
|  | 	insmod nm256 buffertop=0x272800 | ||
|  | 
 | ||
|  | ================= | ||
|  | Official WWW site | ||
|  | ================= | ||
|  | 
 | ||
|  | The official site for the NM256 driver is: | ||
|  | 
 | ||
|  | 	http://www.uglx.org/sony.html | ||
|  | 
 | ||
|  | You should always be able to get the latest version of the driver there, | ||
|  | and the driver will be supported for the foreseeable future. | ||
|  | 
 | ||
|  | ============== | ||
|  | Z505RX and IDE | ||
|  | ============== | ||
|  | 
 | ||
|  | There appears to be a problem with the IDE chipset on the Z505RX; one | ||
|  | of the symptoms is that sound playback periodically hangs (when the | ||
|  | disk is accessed).  The user reporting the problem also reported that | ||
|  | enabling all of the IDE chipset workarounds in the kernel solved the | ||
|  | problem, tho obviously only one of them should be needed--if someone | ||
|  | can give me more details I would appreciate it. | ||
|  | 
 | ||
|  | ============================== | ||
|  | Z505S/Z505SX on-board Ethernet | ||
|  | ============================== | ||
|  | 
 | ||
|  | If you're using the on-board Ethernet Pro/100 ethernet support on the Z505 | ||
|  | series, I strongly encourage you to download the latest eepro100 driver from | ||
|  | Donald Becker's site: | ||
|  | 
 | ||
|  | 	ftp://cesdis.gsfc.nasa.gov/pub/linux/drivers/test/eepro100.c | ||
|  | 
 | ||
|  | There was a reported problem on the Z505SX that if the ethernet | ||
|  | interface is disabled and reenabled while the sound driver is loaded, | ||
|  | the machine would lock up.  I have included a workaround that is | ||
|  | working satisfactorily.  However, you may occasionally see a message | ||
|  | about "Releasing interrupts, over 1000 bad interrupts" which indicates | ||
|  | that the workaround is doing its job. | ||
|  | 
 | ||
|  | ================================== | ||
|  | PCMCIA and the Z505S/Z505SX/Z505DX | ||
|  | ================================== | ||
|  | 
 | ||
|  | There is also a known problem with the Sony Z505S and Z505SX hanging | ||
|  | if a PCMCIA card is inserted while the ethernet driver is loaded, or | ||
|  | in some cases if the laptop is suspended.  This is caused by tons of | ||
|  | spurious IRQ 9s, probably generated from the PCMCIA or ACPI bridges. | ||
|  | 
 | ||
|  | There is currently no fix for the problem that works in every case. | ||
|  | The only known workarounds are to disable the ethernet interface | ||
|  | before inserting or removing a PCMCIA card, or with some cards | ||
|  | disabling the PCMCIA card before ejecting it will also help the | ||
|  | problem with the laptop hanging when the card is ejected. | ||
|  | 
 | ||
|  | One user has reported that setting the tcic's cs_irq to some value | ||
|  | other than 9 (like 11) fixed the problem.  This doesn't work on my | ||
|  | Z505S, however--changing the value causes the cardmgr to stop seeing | ||
|  | card insertions and removals, cards don't seem to work correctly, and | ||
|  | I still get hangs if a card is inserted when the kernel is booted. | ||
|  | 
 | ||
|  | Using the latest ethernet driver and pcmcia package allows me to | ||
|  | insert an Adaptec 1480A SlimScsi card without the laptop hanging, | ||
|  | although I still have to shut down the card before ejecting or | ||
|  | powering down the laptop.  However, similar experiments with a DE-660 | ||
|  | ethernet card still result in hangs when the card is inserted.  I am | ||
|  | beginning to think that the interrupts are CardBus-related, since the | ||
|  | Adaptec card is a CardBus card, and the DE-660 is not; however, I | ||
|  | don't have any other CardBus cards to test with. | ||
|  | 
 | ||
|  | ====== | ||
|  | Thanks | ||
|  | ====== | ||
|  | 
 | ||
|  | First, I want to thank everyone (except NeoMagic of course) for their | ||
|  | generous support and encouragement.  I'd like to list everyone's name | ||
|  | here that replied during the development phase, but the list is | ||
|  | amazingly long. | ||
|  | 
 | ||
|  | I will be rather unfair and single out a few people, however: | ||
|  | 
 | ||
|  | 	Justin Maurer, for being the first random net.person to try it, | ||
|  | 	and for letting me login to his Z505SX to get it working there | ||
|  | 
 | ||
|  | 	Edi Weitz for trying out several different versions, and giving | ||
|  | 	me a lot of useful feedback | ||
|  | 
 | ||
|  | 	Greg Rumple for letting me login remotely to get the driver  | ||
|  | 	functional on the 256ZX, for his assistance on tracking | ||
|  | 	down all sorts of random stuff, and for trying out Accel-X | ||
|  | 
 | ||
|  | 	Zach Brown, for the initial AC97 mixer interface design | ||
|  | 
 | ||
|  | 	Jeff Garzik, for various helpful suggestions on the AC97 | ||
|  | 	interface | ||
|  | 
 | ||
|  | 	"Mr. Bumpy" for feedback on the Z505RX | ||
|  | 
 | ||
|  | 	Bill Nottingham, for generous assistance in getting the mixer ID | ||
|  | 	code working | ||
|  | 
 | ||
|  | ================= | ||
|  | Previous versions | ||
|  | ================= | ||
|  | 
 | ||
|  | Versions prior to 0.3 (aka `noname') had problems with weird artifacts | ||
|  | in the output and failed to set the recording rate properly.  These | ||
|  | problems have long since been fixed. | ||
|  | 
 | ||
|  | Versions prior to 0.5 had problems with clicks in the output when | ||
|  | anything other than 16-bit stereo sound was being played, and also had | ||
|  | periodic clicks when recording. | ||
|  | 
 | ||
|  | Version 0.7 first incorporated support for the NM256ZX chipset, which | ||
|  | is found on some Dell Latitude laptops (the CPt, and apparently | ||
|  | some CPi models as well).  It also included the generic AC97 | ||
|  | mixer module. | ||
|  | 
 | ||
|  | Version 0.75 renamed all the functions and files with slightly more | ||
|  | generic names. | ||
|  | 
 | ||
|  | Note that previous versions of this document claimed that recording was | ||
|  | 8-bit only; it actually has been working for 16-bits all along. |