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 floppy="<options>"

Example:
 modprobe floppy floppy="omnibook messages"

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

 options floppy floppy="omnibook messages"

in a configuration file in /etc/modprobe.d/.


 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
