 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!
		
			
				
	
	
		
			280 lines
		
	
	
	
		
			11 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			280 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.
 |