This file describes the floppy driver.

FAQ list:
=========

 A FAQ list may be found in the fdutils package (see below), and also
at <http://fdutils.linux.lu/faq.html>.


LILO configuration options (Thinkpad users, read this)
======================================================

 The floppy driver is configured using the 'floppy=' option in
lilo. This option can be typed at the boot prompt, or entered in the
lilo configuration file.

 Example: If your kernel is called linux-2.6.9, type the following line
at the lilo boot prompt (if you have a thinkpad):

 linux-2.6.9 floppy=thinkpad

You may also enter the following line in /etc/lilo.conf, in the description
of linux-2.6.9:

 append = "floppy=thinkpad"

 Several floppy related options may be given, example:

 linux-2.6.9 floppy=daring floppy=two_fdc
 append = "floppy=daring floppy=two_fdc"

 If you give options both in the lilo config file and on the boot
prompt, the option strings of both places are concatenated, the boot
prompt options coming last. That's why there are also options to
restore the default behavior.


Module configuration options
============================

 If you use the floppy driver as a module, use the following syntax:
modprobe floppy <options>

Example:
 modprobe floppy omnibook messages

 If you need certain options enabled every time you load the floppy driver,
you can put:

 options floppy omnibook messages

in /etc/modprobe.conf.


 The floppy driver related options are:

 floppy=asus_pci
	Sets the bit mask to allow only units 0 and 1. (default)

 floppy=daring
	Tells the floppy driver that you have a well behaved floppy controller.
	This allows more efficient and smoother operation, but may fail on
	certain controllers. This may speed up certain operations.

 floppy=0,daring
	Tells the floppy driver that your floppy controller should be used
	with caution.

 floppy=one_fdc
	Tells the floppy driver that you have only one floppy controller.
	(default)

 floppy=two_fdc
 floppy=<address>,two_fdc
	Tells the floppy driver that you have two floppy controllers.
	The second floppy controller is assumed to be at <address>.
	This option is not needed if the second controller is at address
	0x370, and if you use the 'cmos' option.

 floppy=thinkpad
	Tells the floppy driver that you have a Thinkpad. Thinkpads use an
	inverted convention for the disk change line.

 floppy=0,thinkpad
	Tells the floppy driver that you don't have a Thinkpad.

 floppy=omnibook
 floppy=nodma
	Tells the floppy driver not to use Dma for data transfers.
	This is needed on HP Omnibooks, which don't have a workable
	DMA channel for the floppy driver. This option is also useful
	if you frequently get "Unable to allocate DMA memory" messages.
	Indeed, dma memory needs to be continuous in physical memory,
	and is thus harder to find, whereas non-dma buffers may be
	allocated in virtual memory. However, I advise against this if
	you have an FDC without a FIFO (8272A or 82072). 82072A and
	later are OK. You also need at least a 486 to use nodma.
	If you use nodma mode, I suggest you also set the FIFO
	threshold to 10 or lower, in order to limit the number of data
	transfer interrupts.

	If you have a FIFO-able FDC, the floppy driver automatically
	falls back on non DMA mode if no DMA-able memory can be found.
	If you want to avoid this, explicitly ask for 'yesdma'.

 floppy=yesdma
	Tells the floppy driver that a workable DMA channel is available.
	(default)

 floppy=nofifo
	Disables the FIFO entirely. This is needed if you get "Bus
	master arbitration error" messages from your Ethernet card (or
	from other devices) while accessing the floppy.

 floppy=usefifo
	Enables the FIFO. (default)

 floppy=<threshold>,fifo_depth
	Sets the FIFO threshold. This is mostly relevant in DMA
	mode. If this is higher, the floppy driver tolerates more
	interrupt latency, but it triggers more interrupts (i.e. it
	imposes more load on the rest of the system). If this is
	lower, the interrupt latency should be lower too (faster
	processor). The benefit of a lower threshold is less
	interrupts.

	To tune the fifo threshold, switch on over/underrun messages
	using 'floppycontrol --messages'. Then access a floppy
	disk. If you get a huge amount of "Over/Underrun - retrying"
	messages, then the fifo threshold is too low. Try with a
	higher value, until you only get an occasional Over/Underrun.
	It is a good idea to compile the floppy driver as a module
	when doing this tuning. Indeed, it allows to try different
	fifo values without rebooting the machine for each test. Note
	that you need to do 'floppycontrol --messages' every time you
	re-insert the module.

	Usually, tuning the fifo threshold should not be needed, as
	the default (0xa) is reasonable.

 floppy=<drive>,<type>,cmos
	Sets the CMOS type of <drive> to <type>. This is mandatory if
	you have more than two floppy drives (only two can be
	described in the physical CMOS), or if your BIOS uses
	non-standard CMOS types. The CMOS types are:

		0 - Use the value of the physical CMOS
		1 - 5 1/4 DD
		2 - 5 1/4 HD
		3 - 3 1/2 DD
		4 - 3 1/2 HD
		5 - 3 1/2 ED
		6 - 3 1/2 ED
	       16 - unknown or not installed

	(Note: there are two valid types for ED drives. This is because 5 was
	initially chosen to represent floppy *tapes*, and 6 for ED drives.
	AMI ignored this, and used 5 for ED drives. That's why the floppy
	driver handles both.)

 floppy=unexpected_interrupts
	Print a warning message when an unexpected interrupt is received.
	(default)

 floppy=no_unexpected_interrupts
 floppy=L40SX
	Don't print a message when an unexpected interrupt is received. This
	is needed on IBM L40SX laptops in certain video modes. (There seems
	to be an interaction between video and floppy. The unexpected
	interrupts affect only performance, and can be safely ignored.)

 floppy=broken_dcl
	Don't use the disk change line, but assume that the disk was
	changed whenever the device node is reopened. Needed on some
	boxes where the disk change line is broken or unsupported.
	This should be regarded as a stopgap measure, indeed it makes
	floppy operation less efficient due to unneeded cache
	flushings, and slightly more unreliable. Please verify your
	cable, connection and jumper settings if you have any DCL
	problems. However, some older drives, and also some laptops
	are known not to have a DCL.

 floppy=debug
	Print debugging messages.

 floppy=messages
	Print informational messages for some operations (disk change
	notifications, warnings about over and underruns, and about
	autodetection).

 floppy=silent_dcl_clear
	Uses a less noisy way to clear the disk change line (which
	doesn't involve seeks). Implied by 'daring' option.

 floppy=<nr>,irq
	Sets the floppy IRQ to <nr> instead of 6.

 floppy=<nr>,dma
	Sets the floppy DMA channel to <nr> instead of 2.

 floppy=slow
	Use PS/2 stepping rate:
	 " PS/2 floppies have much slower step rates than regular floppies.
	   It's been recommended that take about 1/4 of the default speed
	   in some more extreme cases."


Supporting utilities and additional documentation:
==================================================

 Additional parameters of the floppy driver can be configured at
runtime. Utilities which do this can be found in the fdutils package.
This package also contains a new version of mtools which allows to
access high capacity disks (up to 1992K on a high density 3 1/2 disk!).
It also contains additional documentation about the floppy driver.

The latest version can be found at fdutils homepage:
 http://fdutils.linux.lu

The fdutils releases can be found at:
 http://fdutils.linux.lu/download.html
 http://www.tux.org/pub/knaff/fdutils/
 ftp://metalab.unc.edu/pub/Linux/utils/disk-management/

Reporting problems about the floppy driver
==========================================

 If you have a question or a bug report about the floppy driver, mail
me at Alain.Knaff@poboxes.com . If you post to Usenet, preferably use
comp.os.linux.hardware. As the volume in these groups is rather high,
be sure to include the word "floppy" (or "FLOPPY") in the subject
line.  If the reported problem happens when mounting floppy disks, be
sure to mention also the type of the filesystem in the subject line.

 Be sure to read the FAQ before mailing/posting any bug reports!

 Alain

Changelog
=========

10-30-2004 :	Cleanup, updating, add reference to module configuration.
		James Nelson <james4765@gmail.com>

6-3-2000 :	Original Document
