[PATCH] 2.5.17 IDE 70
[opensuse:kernel.git] / Documentation / ide.txt
1
2
3
4         Information regarding the Enhanced IDE drive in Linux 2.5
5
6
7 ==============================================================================
8
9    
10    The hdparm utility can be used to controll various IDE features on a
11    running system. It is packaged separately.  Please Look for it on popular
12    linux FTP sites.
13    
14
15
16 ***  IMPORTANT NOTICES:  BUGGY IDE CHIPSETS CAN CORRUPT DATA!!
17 ***  =================
18 ***  PCI versions of the CMD640 and RZ1000 interfaces are now detected
19 ***  automatically at startup when PCI BIOS support is configured.
20 ***
21 ***  Linux disables the "prefetch" ("readahead") mode of the RZ1000
22 ***  to prevent data corruption possible due to hardware design flaws.
23 ***
24 ***  For the CMD640, linux disables "IRQ unmasking" (hdparm -u1) on any
25 ***  drive for which the "prefetch" mode of the CMD640 is turned on.
26 ***  If "prefetch" is disabled (hdparm -p8), then "IRQ unmasking" can be
27 ***  used again.
28 ***
29 ***  For the CMD640, linux disables "32bit I/O" (hdparm -c1) on any drive
30 ***  for which the "prefetch" mode of the CMD640 is turned off.
31 ***  If "prefetch" is enabled (hdparm -p9), then "32bit I/O" can be
32 ***  used again.
33 ***
34 ***  The CMD640 is also used on some Vesa Local Bus (VLB) cards, and is *NOT*
35 ***  automatically detected by Linux.  For safe, reliable operation with such
36 ***  interfaces, one *MUST* use the "ide0=cmd640_vlb" kernel option.
37 ***
38 ***  Use of the "serialize" option is no longer necessary.
39
40 ================================================================================
41 Common pitfalls:
42
43 - 40-conductor IDE cables are capable of transfering data in DMA modes up to
44   udma2, but no faster.
45
46 - If possible devices should be attached to separate channels if they are
47   available. Typically the disk on the first and CD-ROM on the second.
48
49 - If you mix devices on the same cable, please consider using similar devices
50   in respect of the data transfer mode they support.
51
52 - Even better tru to stick to the same vendor and device type on the same
53   cable.
54
55 ================================================================================
56
57 This is the multiple IDE interface driver, as evolved from hd.c.  
58
59 It supports up to 9 IDE interfaces per default, on one or more IRQs (usually
60 14 & 15).  There can be up to two drives per interface, as per the ATA-6 spec.
61
62 Primary:    ide0, port 0x1f0; major=3;  hda is minor=0; hdb is minor=64
63 Secondary:  ide1, port 0x170; major=22; hdc is minor=0; hdd is minor=64
64 Tertiary:   ide2, port 0x1e8; major=33; hde is minor=0; hdf is minor=64
65 Quaternary: ide3, port 0x168; major=34; hdg is minor=0; hdh is minor=64
66 fifth..     ide4, usually PCI, probed
67 sixth..     ide5, usually PCI, probed
68
69 To access devices on interfaces > ide0, device entries please make sure that
70 device files for them are present in /dev.  If not, please create such
71 entries, by simply running the included shell script:
72 /usr/src/linux/scripts/MAKEDEV.ide
73
74 This driver automatically probes for most IDE interfaces (including all PCI
75 ones), for the drives/geometries attached to those interfaces, and for the IRQ
76 lines being used by the interfaces (normally 14, 15 for ide0/ide1).
77
78 For special cases, interfaces may be specified using kernel "command line"
79 options.  For example,
80
81         ide3=0x168,0x36e,10     /* ioports 0x168-0x16f,0x36e, irq 10 */
82
83 Normally the irq number need not be specified, as ide.c will probe for it:
84
85         ide3=0x168,0x36e        /* ioports 0x168-0x16f,0x36e */
86
87 The standard port, and irq values are these:
88
89         ide0=0x1f0,0x3f6,14
90         ide1=0x170,0x376,15
91         ide2=0x1e8,0x3ee,11
92         ide3=0x168,0x36e,10
93
94 Note that the first parameter reserves 8 contiguous ioports, whereas the
95 second value denotes a single ioport. If in doubt, do a 'cat /proc/ioports'.
96
97 In all probability the device uses these ports and IRQs if it is attached
98 to the appropriate ide channel.  Pass the parameter for the correct ide
99 channel to the kernel, as explained above.
100
101 Any number of interfaces may share a single IRQ if necessary, at a slight
102 performance penalty, whether on separate cards or a single VLB card.
103 The IDE driver automatically detects and handles this.  However, this may
104 or may not be harmful to your hardware.. two or more cards driving the same IRQ
105 can potentially burn each other's bus driver, though in practice this
106 seldom occurs.  Be careful, and if in doubt, don't do it!
107
108 Drives are normally found by auto-probing and/or examining the CMOS/BIOS data.
109 For really weird situations, the apparent (fdisk) geometry can also be specified
110 on the kernel "command line" using LILO.  The format of such lines is:
111
112         hdx=cyls,heads,sects,wpcom,irq
113 or      hdx=cdrom
114
115 where hdx can be any of hda through hdh, Three values are required
116 (cyls,heads,sects).  For example:
117
118         hdc=1050,32,64  hdd=cdrom
119
120 either {hda,hdb} or {hdc,hdd}.  The results of successful auto-probing may
121 override the physical geometry/irq specified, though the "original" geometry
122 may be retained as the "logical" geometry for partitioning purposes (fdisk).
123
124 If the auto-probing during boot time confuses a drive (ie. the drive works
125 with hd.c but not with ide.c), then an command line option may be specified
126 for each drive for which you'd like the drive to skip the hardware
127 probe/identification sequence.  For example:
128
129         hdb=noprobe
130 or
131         hdc=768,16,32
132         hdc=noprobe
133
134 Note that when only one IDE device is attached to an interface, it should be
135 jumpered as "single" or "master", *not* "slave".  Many folks have had
136 "trouble" with cdroms because of this requirement, so the driver now probes
137 for both units, though success is more likely when the drive is jumpered
138 correctly.
139
140 Courtesy of Scott Snyder and others, the driver supports ATAPI cdrom drives
141 such as the NEC-260 and the new MITSUMI triple/quad speed drives.
142 Such drives will be identified at boot time, just like a hard disk.
143
144 If for some reason your cdrom drive is *not* found at boot time, you can force
145 the probe to look harder by supplying a kernel command line parameter
146 via LILO, such as:
147
148         hdc=cdrom       /* hdc = "master" on second interface */
149 or
150         hdd=cdrom       /* hdd = "slave" on second interface */
151
152 For example, a GW2000 system might have a hard drive on the primary
153 interface (/dev/hda) and an IDE cdrom drive on the secondary interface
154 (/dev/hdc).  To mount a CD in the cdrom drive, one would use something like:
155
156         ln -sf /dev/hdc /dev/cdrom
157         mkdir /mnt/cdrom
158         mount /dev/cdrom /mnt/cdrom -t iso9660 -o ro
159
160 If, after doing all of the above, mount doesn't work and you see
161 errors from the driver (with dmesg) complaining about `status=0xff',
162 this means that the hardware is not responding to the driver's attempts
163 to read it.  One of the following is probably the problem:
164
165   - Your hardware is broken.
166
167   - You are using the wrong address for the device, or you have the
168     drive jumpered wrong.  Review the configuration instructions above.
169
170   - Your IDE controller requires some nonstandard initialization sequence
171     before it will work properly.  If this is the case, there will often
172     be a separate MS-DOS driver just for the controller.  IDE interfaces
173     on sound cards usually fall into this category.  Such configurations
174     can often be made to work by first booting MS-DOS, loading the
175     appropriate drivers, and then warm-booting linux (without powering
176     off).  This can be automated using loadlin in the MS-DOS autoexec.
177
178 If you always get timeout errors, interrupts from the drive are probably
179 not making it to the host.  Check how you have the hardware jumpered
180 and make sure it matches what the driver expects (see the configuration
181 instructions above).  If you have a PCI system, also check the BIOS
182 setup; I've had one report of a system which was shipped with IRQ 15
183 disabled by the BIOS.
184
185 The kernel is able to execute binaries directly off of the cdrom,
186 provided it is mounted with the default block size of 1024 (as above).
187
188 Please pass on any feedback on any of this stuff to the maintainer,
189 whose address can be found in linux/MAINTAINERS.
190
191 Note that if BOTH hd.c and ide.c are configured into the kernel,
192 hd.c will normally be allowed to control the primary IDE interface.
193 This is useful for older hardware that may be incompatible with ide.c,
194 and still allows newer hardware to run on the 2nd/3rd/4th IDE ports
195 under control of ide.c.   To have ide.c also "take over" the primary
196 IDE port in this situation, use the "command line" parameter:  ide0=0x1f0
197
198 The IDE driver is partly modularized.  The high level disk/cdrom/tape/floppy
199 drivers can always be compiled as loadable modules, the chipset drivers
200 can only be compiled into the kernel, and the core code (ide.c) can be
201 compiled as a loadable module provided no chipset support and no special
202 partition table translations are needed.
203
204 When using ide.c/ide-tape.c as modules in combination with kerneld, add:
205
206         alias block-major-3 ide-probe
207         alias char-major-37 ide-tape
208
209 respectively to /etc/modules.conf.
210
211 When ide.c is used as a module, you can pass command line parameters to the
212 driver using the "options=" keyword to insmod, while replacing any ',' with
213 ';'.  For example:
214
215         insmod ide.o options="ide0=serialize ide2=0x1e8;0x3ee;11"
216
217
218 ================================================================================
219
220 Summary of ide driver parameters for kernel "command line":
221 ----------------------------------------------------------
222  "hdx="  is recognized for all "x" from "a" to "h", such as "hdc".
223  "idex=" is recognized for all "x" from "0" to "3", such as "ide1".
224
225  "hdx=noprobe"          : drive may be present, but do not probe for it
226  "hdx=none"             : drive is NOT present, ignore cmos and do not probe
227  "hdx=nowerr"           : ignore the WRERR_STAT bit on this drive
228  "hdx=cdrom"            : drive is present, and is a cdrom drive
229  "hdx=cyl,head,sect"    : disk drive is present, with specified geometry
230  "hdx=autotune"         : driver will attempt to tune interface speed
231                                 to the fastest PIO mode supported,
232                                 if possible for this drive only.
233                                 Not fully supported by all chipset types,
234                                 and quite likely to cause trouble with
235                                 older/odd IDE drives.
236  "hdx=slow"             : insert a huge pause after each access to the data
237                                 port. Should be used only as a last resort.
238  "hdxlun=xx"            : set the drive last logical unit
239
240  "idebus=xx"            : inform IDE driver of VESA/PCI bus speed in MHz,
241                                 where "xx" is between 20 and 66 inclusive,
242                                 used when tuning chipset PIO modes.
243                                 For PCI bus, 25 is correct for a P75 system,
244                                 30 is correct for P90,P120,P180 systems,
245                                 and 33 is used for P100,P133,P166 systems.
246                                 If in doubt, use idebus=33 for PCI.
247                                 As for VLB, it is safest to not specify it.
248                                 Bigger values are safer than smaller ones.
249
250  "idex=noprobe"         : do not attempt to access/use this interface
251  "idex=base"            : probe for an interface at the addr specified,
252                                 where "base" is usually 0x1f0 or 0x170
253                                 and "ctl" is assumed to be "base"+0x206
254  "idex=base,ctl"        : specify both base and ctl
255  "idex=base,ctl,irq"    : specify base, ctl, and irq number
256  "idex=autotune"        : driver will attempt to tune interface speed
257                                 to the fastest PIO mode supported,
258                                 for all drives on this interface.
259                                 Not fully supported by all chipset types,
260                                 and quite likely to cause trouble with
261                                 older/odd IDE drives.
262  "idex=noautotune"      : driver will NOT attempt to tune interface speed
263                                 This is the default for most chipsets,
264                                 except the cmd640.
265  "idex=serialize"       : do not overlap operations on idex and ide(x^1)
266  "idex=reset"           : reset interface after probe
267  "idex=dma"             : automatically configure/use DMA if possible.
268
269 The following are valid ONLY on ide0, which usually corresponds to the first
270 ATA interface found on the particular host, and the defaults for the base,ctl
271 ports must not be altered.
272
273  "ide0=dtc2278"         : probe/support DTC2278 interface
274  "ide0=ht6560b"         : probe/support HT6560B interface
275  "ide0=cmd640_vlb"      : *REQUIRED* for VLB cards with the CMD640 chip
276                           (not for PCI -- automatically detected)
277  "ide0=qd65xx"          : probe/support qd65xx interface
278  "ide0=ali14xx"         : probe/support ali14xx chipsets (ALI M1439/M1445)
279  "ide0=umc8672"         : probe/support umc8672 chipsets
280
281 There may be more options than shown -- use the source, Luke!
282
283 Everything else is rejected with a "BAD OPTION" message.
284
285 ================================================================================
286
287 Some Terminology
288 ----------------
289 IDE = Integrated Drive Electronics, meaning that each drive has a built-in
290 controller, which is why an "IDE interface card" is not a "controller card".
291
292 ATA = AT (the old IBM 286 computer) Attachment Interface, a draft American
293 National Standard for connecting hard drives to PCs.  This is the official
294 name for "IDE".
295
296 The latest standards define some enhancements, known as the ATA-6 spec,
297 which grew out of vendor-specific "Enhanced IDE" (EIDE) implementations.
298
299 ATAPI = ATA Packet Interface, a new protocol for controlling the drives,
300 similar to SCSI protocols, created at the same time as the ATA2 standard.
301 ATAPI is currently used for controlling CDROM, TAPE and FLOPPY (ZIP or
302 LS120/240) devices, removable R/W cartridges, and for high capacity hard disk
303 drives.
304
305 mlord@pobox.com
306 --
307 Wed Apr 17 22:52:44 CEST 2002 edited by Marcin Dalecki
308
309 For current maintainers of this stuff, please see the linux/MAINTAINERS file.