[PATCH] libata: typo
[linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git] / drivers / scsi / libata-core.c
blob19b45c2bfa26e7b493cf350fc1d4df471b5b59e2
1 /*
2 libata-core.c - helper library for ATA
4 Copyright 2003-2004 Red Hat, Inc. All rights reserved.
5 Copyright 2003-2004 Jeff Garzik
7 The contents of this file are subject to the Open
8 Software License version 1.1 that can be found at
9 http://www.opensource.org/licenses/osl-1.1.txt and is included herein
10 by reference.
12 Alternatively, the contents of this file may be used under the terms
13 of the GNU General Public License version 2 (the "GPL") as distributed
14 in the kernel source COPYING file, in which case the provisions of
15 the GPL are applicable instead of the above. If you wish to allow
16 the use of your version of this file only under the terms of the
17 GPL and not to allow others to use your version of this file under
18 the OSL, indicate your decision by deleting the provisions above and
19 replace them with the notice and other provisions required by the GPL.
20 If you do not delete the provisions above, a recipient may use your
21 version of this file under either the OSL or the GPL.
25 #include <linux/config.h>
26 #include <linux/kernel.h>
27 #include <linux/module.h>
28 #include <linux/pci.h>
29 #include <linux/init.h>
30 #include <linux/list.h>
31 #include <linux/mm.h>
32 #include <linux/highmem.h>
33 #include <linux/spinlock.h>
34 #include <linux/blkdev.h>
35 #include <linux/delay.h>
36 #include <linux/timer.h>
37 #include <linux/interrupt.h>
38 #include <linux/completion.h>
39 #include <linux/suspend.h>
40 #include <linux/workqueue.h>
41 #include <scsi/scsi.h>
42 #include "scsi.h"
43 #include "scsi_priv.h"
44 #include <scsi/scsi_host.h>
45 #include <linux/libata.h>
46 #include <asm/io.h>
47 #include <asm/semaphore.h>
48 #include <asm/byteorder.h>
50 #include "libata.h"
52 static unsigned int ata_busy_sleep (struct ata_port *ap,
53 unsigned long tmout_pat,
54 unsigned long tmout);
55 static void ata_set_mode(struct ata_port *ap);
56 static void ata_dev_set_xfermode(struct ata_port *ap, struct ata_device *dev);
57 static unsigned int ata_get_mode_mask(struct ata_port *ap, int shift);
58 static int fgb(u32 bitmap);
59 static int ata_choose_xfer_mode(struct ata_port *ap,
60 u8 *xfer_mode_out,
61 unsigned int *xfer_shift_out);
62 static int ata_qc_complete_noop(struct ata_queued_cmd *qc, u8 drv_stat);
63 static void __ata_qc_complete(struct ata_queued_cmd *qc);
65 static unsigned int ata_unique_id = 1;
66 static struct workqueue_struct *ata_wq;
68 MODULE_AUTHOR("Jeff Garzik");
69 MODULE_DESCRIPTION("Library module for ATA devices");
70 MODULE_LICENSE("GPL");
71 MODULE_VERSION(DRV_VERSION);
73 /**
74 * ata_tf_load - send taskfile registers to host controller
75 * @ap: Port to which output is sent
76 * @tf: ATA taskfile register set
78 * Outputs ATA taskfile to standard ATA host controller.
80 * LOCKING:
81 * Inherited from caller.
84 static void ata_tf_load_pio(struct ata_port *ap, struct ata_taskfile *tf)
86 struct ata_ioports *ioaddr = &ap->ioaddr;
87 unsigned int is_addr = tf->flags & ATA_TFLAG_ISADDR;
89 if (tf->ctl != ap->last_ctl) {
90 outb(tf->ctl, ioaddr->ctl_addr);
91 ap->last_ctl = tf->ctl;
92 ata_wait_idle(ap);
95 if (is_addr && (tf->flags & ATA_TFLAG_LBA48)) {
96 outb(tf->hob_feature, ioaddr->feature_addr);
97 outb(tf->hob_nsect, ioaddr->nsect_addr);
98 outb(tf->hob_lbal, ioaddr->lbal_addr);
99 outb(tf->hob_lbam, ioaddr->lbam_addr);
100 outb(tf->hob_lbah, ioaddr->lbah_addr);
101 VPRINTK("hob: feat 0x%X nsect 0x%X, lba 0x%X 0x%X 0x%X\n",
102 tf->hob_feature,
103 tf->hob_nsect,
104 tf->hob_lbal,
105 tf->hob_lbam,
106 tf->hob_lbah);
109 if (is_addr) {
110 outb(tf->feature, ioaddr->feature_addr);
111 outb(tf->nsect, ioaddr->nsect_addr);
112 outb(tf->lbal, ioaddr->lbal_addr);
113 outb(tf->lbam, ioaddr->lbam_addr);
114 outb(tf->lbah, ioaddr->lbah_addr);
115 VPRINTK("feat 0x%X nsect 0x%X lba 0x%X 0x%X 0x%X\n",
116 tf->feature,
117 tf->nsect,
118 tf->lbal,
119 tf->lbam,
120 tf->lbah);
123 if (tf->flags & ATA_TFLAG_DEVICE) {
124 outb(tf->device, ioaddr->device_addr);
125 VPRINTK("device 0x%X\n", tf->device);
128 ata_wait_idle(ap);
132 * ata_tf_load_mmio - send taskfile registers to host controller
133 * @ap: Port to which output is sent
134 * @tf: ATA taskfile register set
136 * Outputs ATA taskfile to standard ATA host controller using MMIO.
138 * LOCKING:
139 * Inherited from caller.
142 static void ata_tf_load_mmio(struct ata_port *ap, struct ata_taskfile *tf)
144 struct ata_ioports *ioaddr = &ap->ioaddr;
145 unsigned int is_addr = tf->flags & ATA_TFLAG_ISADDR;
147 if (tf->ctl != ap->last_ctl) {
148 writeb(tf->ctl, (void __iomem *) ap->ioaddr.ctl_addr);
149 ap->last_ctl = tf->ctl;
150 ata_wait_idle(ap);
153 if (is_addr && (tf->flags & ATA_TFLAG_LBA48)) {
154 writeb(tf->hob_feature, (void __iomem *) ioaddr->feature_addr);
155 writeb(tf->hob_nsect, (void __iomem *) ioaddr->nsect_addr);
156 writeb(tf->hob_lbal, (void __iomem *) ioaddr->lbal_addr);
157 writeb(tf->hob_lbam, (void __iomem *) ioaddr->lbam_addr);
158 writeb(tf->hob_lbah, (void __iomem *) ioaddr->lbah_addr);
159 VPRINTK("hob: feat 0x%X nsect 0x%X, lba 0x%X 0x%X 0x%X\n",
160 tf->hob_feature,
161 tf->hob_nsect,
162 tf->hob_lbal,
163 tf->hob_lbam,
164 tf->hob_lbah);
167 if (is_addr) {
168 writeb(tf->feature, (void __iomem *) ioaddr->feature_addr);
169 writeb(tf->nsect, (void __iomem *) ioaddr->nsect_addr);
170 writeb(tf->lbal, (void __iomem *) ioaddr->lbal_addr);
171 writeb(tf->lbam, (void __iomem *) ioaddr->lbam_addr);
172 writeb(tf->lbah, (void __iomem *) ioaddr->lbah_addr);
173 VPRINTK("feat 0x%X nsect 0x%X lba 0x%X 0x%X 0x%X\n",
174 tf->feature,
175 tf->nsect,
176 tf->lbal,
177 tf->lbam,
178 tf->lbah);
181 if (tf->flags & ATA_TFLAG_DEVICE) {
182 writeb(tf->device, (void __iomem *) ioaddr->device_addr);
183 VPRINTK("device 0x%X\n", tf->device);
186 ata_wait_idle(ap);
191 * ata_tf_load - send taskfile registers to host controller
192 * @ap: Port to which output is sent
193 * @tf: ATA taskfile register set
195 * Outputs ATA taskfile to standard ATA host controller using MMIO
196 * or PIO as indicated by the ATA_FLAG_MMIO flag.
197 * Writes the control, feature, nsect, lbal, lbam, and lbah registers.
198 * Optionally (ATA_TFLAG_LBA48) writes hob_feature, hob_nsect,
199 * hob_lbal, hob_lbam, and hob_lbah.
201 * This function waits for idle (!BUSY and !DRQ) after writing
202 * registers. If the control register has a new value, this
203 * function also waits for idle after writing control and before
204 * writing the remaining registers.
206 * May be used as the tf_load() entry in ata_port_operations.
208 * LOCKING:
209 * Inherited from caller.
211 void ata_tf_load(struct ata_port *ap, struct ata_taskfile *tf)
213 if (ap->flags & ATA_FLAG_MMIO)
214 ata_tf_load_mmio(ap, tf);
215 else
216 ata_tf_load_pio(ap, tf);
220 * ata_exec_command_pio - issue ATA command to host controller
221 * @ap: port to which command is being issued
222 * @tf: ATA taskfile register set
224 * Issues PIO write to ATA command register, with proper
225 * synchronization with interrupt handler / other threads.
227 * LOCKING:
228 * spin_lock_irqsave(host_set lock)
231 static void ata_exec_command_pio(struct ata_port *ap, struct ata_taskfile *tf)
233 DPRINTK("ata%u: cmd 0x%X\n", ap->id, tf->command);
235 outb(tf->command, ap->ioaddr.command_addr);
236 ata_pause(ap);
241 * ata_exec_command_mmio - issue ATA command to host controller
242 * @ap: port to which command is being issued
243 * @tf: ATA taskfile register set
245 * Issues MMIO write to ATA command register, with proper
246 * synchronization with interrupt handler / other threads.
248 * LOCKING:
249 * spin_lock_irqsave(host_set lock)
252 static void ata_exec_command_mmio(struct ata_port *ap, struct ata_taskfile *tf)
254 DPRINTK("ata%u: cmd 0x%X\n", ap->id, tf->command);
256 writeb(tf->command, (void __iomem *) ap->ioaddr.command_addr);
257 ata_pause(ap);
262 * ata_exec_command - issue ATA command to host controller
263 * @ap: port to which command is being issued
264 * @tf: ATA taskfile register set
266 * Issues PIO/MMIO write to ATA command register, with proper
267 * synchronization with interrupt handler / other threads.
269 * LOCKING:
270 * spin_lock_irqsave(host_set lock)
272 void ata_exec_command(struct ata_port *ap, struct ata_taskfile *tf)
274 if (ap->flags & ATA_FLAG_MMIO)
275 ata_exec_command_mmio(ap, tf);
276 else
277 ata_exec_command_pio(ap, tf);
281 * ata_exec - issue ATA command to host controller
282 * @ap: port to which command is being issued
283 * @tf: ATA taskfile register set
285 * Issues PIO/MMIO write to ATA command register, with proper
286 * synchronization with interrupt handler / other threads.
288 * LOCKING:
289 * Obtains host_set lock.
292 static inline void ata_exec(struct ata_port *ap, struct ata_taskfile *tf)
294 unsigned long flags;
296 DPRINTK("ata%u: cmd 0x%X\n", ap->id, tf->command);
297 spin_lock_irqsave(&ap->host_set->lock, flags);
298 ap->ops->exec_command(ap, tf);
299 spin_unlock_irqrestore(&ap->host_set->lock, flags);
303 * ata_tf_to_host - issue ATA taskfile to host controller
304 * @ap: port to which command is being issued
305 * @tf: ATA taskfile register set
307 * Issues ATA taskfile register set to ATA host controller,
308 * with proper synchronization with interrupt handler and
309 * other threads.
311 * LOCKING:
312 * Obtains host_set lock.
315 static void ata_tf_to_host(struct ata_port *ap, struct ata_taskfile *tf)
317 ap->ops->tf_load(ap, tf);
319 ata_exec(ap, tf);
323 * ata_tf_to_host_nolock - issue ATA taskfile to host controller
324 * @ap: port to which command is being issued
325 * @tf: ATA taskfile register set
327 * Issues ATA taskfile register set to ATA host controller,
328 * with proper synchronization with interrupt handler and
329 * other threads.
331 * LOCKING:
332 * spin_lock_irqsave(host_set lock)
335 void ata_tf_to_host_nolock(struct ata_port *ap, struct ata_taskfile *tf)
337 ap->ops->tf_load(ap, tf);
338 ap->ops->exec_command(ap, tf);
342 * ata_tf_read_pio - input device's ATA taskfile shadow registers
343 * @ap: Port from which input is read
344 * @tf: ATA taskfile register set for storing input
346 * Reads ATA taskfile registers for currently-selected device
347 * into @tf.
349 * LOCKING:
350 * Inherited from caller.
353 static void ata_tf_read_pio(struct ata_port *ap, struct ata_taskfile *tf)
355 struct ata_ioports *ioaddr = &ap->ioaddr;
357 tf->nsect = inb(ioaddr->nsect_addr);
358 tf->lbal = inb(ioaddr->lbal_addr);
359 tf->lbam = inb(ioaddr->lbam_addr);
360 tf->lbah = inb(ioaddr->lbah_addr);
361 tf->device = inb(ioaddr->device_addr);
363 if (tf->flags & ATA_TFLAG_LBA48) {
364 outb(tf->ctl | ATA_HOB, ioaddr->ctl_addr);
365 tf->hob_feature = inb(ioaddr->error_addr);
366 tf->hob_nsect = inb(ioaddr->nsect_addr);
367 tf->hob_lbal = inb(ioaddr->lbal_addr);
368 tf->hob_lbam = inb(ioaddr->lbam_addr);
369 tf->hob_lbah = inb(ioaddr->lbah_addr);
374 * ata_tf_read_mmio - input device's ATA taskfile shadow registers
375 * @ap: Port from which input is read
376 * @tf: ATA taskfile register set for storing input
378 * Reads ATA taskfile registers for currently-selected device
379 * into @tf via MMIO.
381 * LOCKING:
382 * Inherited from caller.
385 static void ata_tf_read_mmio(struct ata_port *ap, struct ata_taskfile *tf)
387 struct ata_ioports *ioaddr = &ap->ioaddr;
389 tf->nsect = readb((void __iomem *)ioaddr->nsect_addr);
390 tf->lbal = readb((void __iomem *)ioaddr->lbal_addr);
391 tf->lbam = readb((void __iomem *)ioaddr->lbam_addr);
392 tf->lbah = readb((void __iomem *)ioaddr->lbah_addr);
393 tf->device = readb((void __iomem *)ioaddr->device_addr);
395 if (tf->flags & ATA_TFLAG_LBA48) {
396 writeb(tf->ctl | ATA_HOB, (void __iomem *) ap->ioaddr.ctl_addr);
397 tf->hob_feature = readb((void __iomem *)ioaddr->error_addr);
398 tf->hob_nsect = readb((void __iomem *)ioaddr->nsect_addr);
399 tf->hob_lbal = readb((void __iomem *)ioaddr->lbal_addr);
400 tf->hob_lbam = readb((void __iomem *)ioaddr->lbam_addr);
401 tf->hob_lbah = readb((void __iomem *)ioaddr->lbah_addr);
407 * ata_tf_read - input device's ATA taskfile shadow registers
408 * @ap: Port from which input is read
409 * @tf: ATA taskfile register set for storing input
411 * Reads ATA taskfile registers for currently-selected device
412 * into @tf.
414 * Reads nsect, lbal, lbam, lbah, and device. If ATA_TFLAG_LBA48
415 * is set, also reads the hob registers.
417 * May be used as the tf_read() entry in ata_port_operations.
419 * LOCKING:
420 * Inherited from caller.
422 void ata_tf_read(struct ata_port *ap, struct ata_taskfile *tf)
424 if (ap->flags & ATA_FLAG_MMIO)
425 ata_tf_read_mmio(ap, tf);
426 else
427 ata_tf_read_pio(ap, tf);
431 * ata_check_status_pio - Read device status reg & clear interrupt
432 * @ap: port where the device is
434 * Reads ATA taskfile status register for currently-selected device
435 * and return its value. This also clears pending interrupts
436 * from this device
438 * LOCKING:
439 * Inherited from caller.
441 static u8 ata_check_status_pio(struct ata_port *ap)
443 return inb(ap->ioaddr.status_addr);
447 * ata_check_status_mmio - Read device status reg & clear interrupt
448 * @ap: port where the device is
450 * Reads ATA taskfile status register for currently-selected device
451 * via MMIO and return its value. This also clears pending interrupts
452 * from this device
454 * LOCKING:
455 * Inherited from caller.
457 static u8 ata_check_status_mmio(struct ata_port *ap)
459 return readb((void __iomem *) ap->ioaddr.status_addr);
464 * ata_check_status - Read device status reg & clear interrupt
465 * @ap: port where the device is
467 * Reads ATA taskfile status register for currently-selected device
468 * and return its value. This also clears pending interrupts
469 * from this device
471 * May be used as the check_status() entry in ata_port_operations.
473 * LOCKING:
474 * Inherited from caller.
476 u8 ata_check_status(struct ata_port *ap)
478 if (ap->flags & ATA_FLAG_MMIO)
479 return ata_check_status_mmio(ap);
480 return ata_check_status_pio(ap);
485 * ata_altstatus - Read device alternate status reg
486 * @ap: port where the device is
488 * Reads ATA taskfile alternate status register for
489 * currently-selected device and return its value.
491 * Note: may NOT be used as the check_altstatus() entry in
492 * ata_port_operations.
494 * LOCKING:
495 * Inherited from caller.
497 u8 ata_altstatus(struct ata_port *ap)
499 if (ap->ops->check_altstatus)
500 return ap->ops->check_altstatus(ap);
502 if (ap->flags & ATA_FLAG_MMIO)
503 return readb((void __iomem *)ap->ioaddr.altstatus_addr);
504 return inb(ap->ioaddr.altstatus_addr);
509 * ata_chk_err - Read device error reg
510 * @ap: port where the device is
512 * Reads ATA taskfile error register for
513 * currently-selected device and return its value.
515 * Note: may NOT be used as the check_err() entry in
516 * ata_port_operations.
518 * LOCKING:
519 * Inherited from caller.
521 u8 ata_chk_err(struct ata_port *ap)
523 if (ap->ops->check_err)
524 return ap->ops->check_err(ap);
526 if (ap->flags & ATA_FLAG_MMIO) {
527 return readb((void __iomem *) ap->ioaddr.error_addr);
529 return inb(ap->ioaddr.error_addr);
533 * ata_tf_to_fis - Convert ATA taskfile to SATA FIS structure
534 * @tf: Taskfile to convert
535 * @fis: Buffer into which data will output
536 * @pmp: Port multiplier port
538 * Converts a standard ATA taskfile to a Serial ATA
539 * FIS structure (Register - Host to Device).
541 * LOCKING:
542 * Inherited from caller.
545 void ata_tf_to_fis(struct ata_taskfile *tf, u8 *fis, u8 pmp)
547 fis[0] = 0x27; /* Register - Host to Device FIS */
548 fis[1] = (pmp & 0xf) | (1 << 7); /* Port multiplier number,
549 bit 7 indicates Command FIS */
550 fis[2] = tf->command;
551 fis[3] = tf->feature;
553 fis[4] = tf->lbal;
554 fis[5] = tf->lbam;
555 fis[6] = tf->lbah;
556 fis[7] = tf->device;
558 fis[8] = tf->hob_lbal;
559 fis[9] = tf->hob_lbam;
560 fis[10] = tf->hob_lbah;
561 fis[11] = tf->hob_feature;
563 fis[12] = tf->nsect;
564 fis[13] = tf->hob_nsect;
565 fis[14] = 0;
566 fis[15] = tf->ctl;
568 fis[16] = 0;
569 fis[17] = 0;
570 fis[18] = 0;
571 fis[19] = 0;
575 * ata_tf_from_fis - Convert SATA FIS to ATA taskfile
576 * @fis: Buffer from which data will be input
577 * @tf: Taskfile to output
579 * Converts a standard ATA taskfile to a Serial ATA
580 * FIS structure (Register - Host to Device).
582 * LOCKING:
583 * Inherited from caller.
586 void ata_tf_from_fis(u8 *fis, struct ata_taskfile *tf)
588 tf->command = fis[2]; /* status */
589 tf->feature = fis[3]; /* error */
591 tf->lbal = fis[4];
592 tf->lbam = fis[5];
593 tf->lbah = fis[6];
594 tf->device = fis[7];
596 tf->hob_lbal = fis[8];
597 tf->hob_lbam = fis[9];
598 tf->hob_lbah = fis[10];
600 tf->nsect = fis[12];
601 tf->hob_nsect = fis[13];
605 * ata_prot_to_cmd - determine which read/write opcodes to use
606 * @protocol: ATA_PROT_xxx taskfile protocol
607 * @lba48: true is lba48 is present
609 * Given necessary input, determine which read/write commands
610 * to use to transfer data.
612 * LOCKING:
613 * None.
615 static int ata_prot_to_cmd(int protocol, int lba48)
617 int rcmd = 0, wcmd = 0;
619 switch (protocol) {
620 case ATA_PROT_PIO:
621 if (lba48) {
622 rcmd = ATA_CMD_PIO_READ_EXT;
623 wcmd = ATA_CMD_PIO_WRITE_EXT;
624 } else {
625 rcmd = ATA_CMD_PIO_READ;
626 wcmd = ATA_CMD_PIO_WRITE;
628 break;
630 case ATA_PROT_DMA:
631 if (lba48) {
632 rcmd = ATA_CMD_READ_EXT;
633 wcmd = ATA_CMD_WRITE_EXT;
634 } else {
635 rcmd = ATA_CMD_READ;
636 wcmd = ATA_CMD_WRITE;
638 break;
640 default:
641 return -1;
644 return rcmd | (wcmd << 8);
648 * ata_dev_set_protocol - set taskfile protocol and r/w commands
649 * @dev: device to examine and configure
651 * Examine the device configuration, after we have
652 * read the identify-device page and configured the
653 * data transfer mode. Set internal state related to
654 * the ATA taskfile protocol (pio, pio mult, dma, etc.)
655 * and calculate the proper read/write commands to use.
657 * LOCKING:
658 * caller.
660 static void ata_dev_set_protocol(struct ata_device *dev)
662 int pio = (dev->flags & ATA_DFLAG_PIO);
663 int lba48 = (dev->flags & ATA_DFLAG_LBA48);
664 int proto, cmd;
666 if (pio)
667 proto = dev->xfer_protocol = ATA_PROT_PIO;
668 else
669 proto = dev->xfer_protocol = ATA_PROT_DMA;
671 cmd = ata_prot_to_cmd(proto, lba48);
672 if (cmd < 0)
673 BUG();
675 dev->read_cmd = cmd & 0xff;
676 dev->write_cmd = (cmd >> 8) & 0xff;
679 static const char * xfer_mode_str[] = {
680 "UDMA/16",
681 "UDMA/25",
682 "UDMA/33",
683 "UDMA/44",
684 "UDMA/66",
685 "UDMA/100",
686 "UDMA/133",
687 "UDMA7",
688 "MWDMA0",
689 "MWDMA1",
690 "MWDMA2",
691 "PIO0",
692 "PIO1",
693 "PIO2",
694 "PIO3",
695 "PIO4",
699 * ata_udma_string - convert UDMA bit offset to string
700 * @mask: mask of bits supported; only highest bit counts.
702 * Determine string which represents the highest speed
703 * (highest bit in @udma_mask).
705 * LOCKING:
706 * None.
708 * RETURNS:
709 * Constant C string representing highest speed listed in
710 * @udma_mask, or the constant C string "<n/a>".
713 static const char *ata_mode_string(unsigned int mask)
715 int i;
717 for (i = 7; i >= 0; i--)
718 if (mask & (1 << i))
719 goto out;
720 for (i = ATA_SHIFT_MWDMA + 2; i >= ATA_SHIFT_MWDMA; i--)
721 if (mask & (1 << i))
722 goto out;
723 for (i = ATA_SHIFT_PIO + 4; i >= ATA_SHIFT_PIO; i--)
724 if (mask & (1 << i))
725 goto out;
727 return "<n/a>";
729 out:
730 return xfer_mode_str[i];
734 * ata_pio_devchk - PATA device presence detection
735 * @ap: ATA channel to examine
736 * @device: Device to examine (starting at zero)
738 * This technique was originally described in
739 * Hale Landis's ATADRVR (www.ata-atapi.com), and
740 * later found its way into the ATA/ATAPI spec.
742 * Write a pattern to the ATA shadow registers,
743 * and if a device is present, it will respond by
744 * correctly storing and echoing back the
745 * ATA shadow register contents.
747 * LOCKING:
748 * caller.
751 static unsigned int ata_pio_devchk(struct ata_port *ap,
752 unsigned int device)
754 struct ata_ioports *ioaddr = &ap->ioaddr;
755 u8 nsect, lbal;
757 ap->ops->dev_select(ap, device);
759 outb(0x55, ioaddr->nsect_addr);
760 outb(0xaa, ioaddr->lbal_addr);
762 outb(0xaa, ioaddr->nsect_addr);
763 outb(0x55, ioaddr->lbal_addr);
765 outb(0x55, ioaddr->nsect_addr);
766 outb(0xaa, ioaddr->lbal_addr);
768 nsect = inb(ioaddr->nsect_addr);
769 lbal = inb(ioaddr->lbal_addr);
771 if ((nsect == 0x55) && (lbal == 0xaa))
772 return 1; /* we found a device */
774 return 0; /* nothing found */
778 * ata_mmio_devchk - PATA device presence detection
779 * @ap: ATA channel to examine
780 * @device: Device to examine (starting at zero)
782 * This technique was originally described in
783 * Hale Landis's ATADRVR (www.ata-atapi.com), and
784 * later found its way into the ATA/ATAPI spec.
786 * Write a pattern to the ATA shadow registers,
787 * and if a device is present, it will respond by
788 * correctly storing and echoing back the
789 * ATA shadow register contents.
791 * LOCKING:
792 * caller.
795 static unsigned int ata_mmio_devchk(struct ata_port *ap,
796 unsigned int device)
798 struct ata_ioports *ioaddr = &ap->ioaddr;
799 u8 nsect, lbal;
801 ap->ops->dev_select(ap, device);
803 writeb(0x55, (void __iomem *) ioaddr->nsect_addr);
804 writeb(0xaa, (void __iomem *) ioaddr->lbal_addr);
806 writeb(0xaa, (void __iomem *) ioaddr->nsect_addr);
807 writeb(0x55, (void __iomem *) ioaddr->lbal_addr);
809 writeb(0x55, (void __iomem *) ioaddr->nsect_addr);
810 writeb(0xaa, (void __iomem *) ioaddr->lbal_addr);
812 nsect = readb((void __iomem *) ioaddr->nsect_addr);
813 lbal = readb((void __iomem *) ioaddr->lbal_addr);
815 if ((nsect == 0x55) && (lbal == 0xaa))
816 return 1; /* we found a device */
818 return 0; /* nothing found */
822 * ata_devchk - PATA device presence detection
823 * @ap: ATA channel to examine
824 * @device: Device to examine (starting at zero)
826 * Dispatch ATA device presence detection, depending
827 * on whether we are using PIO or MMIO to talk to the
828 * ATA shadow registers.
830 * LOCKING:
831 * caller.
834 static unsigned int ata_devchk(struct ata_port *ap,
835 unsigned int device)
837 if (ap->flags & ATA_FLAG_MMIO)
838 return ata_mmio_devchk(ap, device);
839 return ata_pio_devchk(ap, device);
843 * ata_dev_classify - determine device type based on ATA-spec signature
844 * @tf: ATA taskfile register set for device to be identified
846 * Determine from taskfile register contents whether a device is
847 * ATA or ATAPI, as per "Signature and persistence" section
848 * of ATA/PI spec (volume 1, sect 5.14).
850 * LOCKING:
851 * None.
853 * RETURNS:
854 * Device type, %ATA_DEV_ATA, %ATA_DEV_ATAPI, or %ATA_DEV_UNKNOWN
855 * the event of failure.
858 unsigned int ata_dev_classify(struct ata_taskfile *tf)
860 /* Apple's open source Darwin code hints that some devices only
861 * put a proper signature into the LBA mid/high registers,
862 * So, we only check those. It's sufficient for uniqueness.
865 if (((tf->lbam == 0) && (tf->lbah == 0)) ||
866 ((tf->lbam == 0x3c) && (tf->lbah == 0xc3))) {
867 DPRINTK("found ATA device by sig\n");
868 return ATA_DEV_ATA;
871 if (((tf->lbam == 0x14) && (tf->lbah == 0xeb)) ||
872 ((tf->lbam == 0x69) && (tf->lbah == 0x96))) {
873 DPRINTK("found ATAPI device by sig\n");
874 return ATA_DEV_ATAPI;
877 DPRINTK("unknown device\n");
878 return ATA_DEV_UNKNOWN;
882 * ata_dev_try_classify - Parse returned ATA device signature
883 * @ap: ATA channel to examine
884 * @device: Device to examine (starting at zero)
886 * After an event -- SRST, E.D.D., or SATA COMRESET -- occurs,
887 * an ATA/ATAPI-defined set of values is placed in the ATA
888 * shadow registers, indicating the results of device detection
889 * and diagnostics.
891 * Select the ATA device, and read the values from the ATA shadow
892 * registers. Then parse according to the Error register value,
893 * and the spec-defined values examined by ata_dev_classify().
895 * LOCKING:
896 * caller.
899 static u8 ata_dev_try_classify(struct ata_port *ap, unsigned int device)
901 struct ata_device *dev = &ap->device[device];
902 struct ata_taskfile tf;
903 unsigned int class;
904 u8 err;
906 ap->ops->dev_select(ap, device);
908 memset(&tf, 0, sizeof(tf));
910 err = ata_chk_err(ap);
911 ap->ops->tf_read(ap, &tf);
913 dev->class = ATA_DEV_NONE;
915 /* see if device passed diags */
916 if (err == 1)
917 /* do nothing */ ;
918 else if ((device == 0) && (err == 0x81))
919 /* do nothing */ ;
920 else
921 return err;
923 /* determine if device if ATA or ATAPI */
924 class = ata_dev_classify(&tf);
925 if (class == ATA_DEV_UNKNOWN)
926 return err;
927 if ((class == ATA_DEV_ATA) && (ata_chk_status(ap) == 0))
928 return err;
930 dev->class = class;
932 return err;
936 * ata_dev_id_string - Convert IDENTIFY DEVICE page into string
937 * @id: IDENTIFY DEVICE results we will examine
938 * @s: string into which data is output
939 * @ofs: offset into identify device page
940 * @len: length of string to return. must be an even number.
942 * The strings in the IDENTIFY DEVICE page are broken up into
943 * 16-bit chunks. Run through the string, and output each
944 * 8-bit chunk linearly, regardless of platform.
946 * LOCKING:
947 * caller.
950 void ata_dev_id_string(u16 *id, unsigned char *s,
951 unsigned int ofs, unsigned int len)
953 unsigned int c;
955 while (len > 0) {
956 c = id[ofs] >> 8;
957 *s = c;
958 s++;
960 c = id[ofs] & 0xff;
961 *s = c;
962 s++;
964 ofs++;
965 len -= 2;
971 * ata_noop_dev_select - Select device 0/1 on ATA bus
972 * @ap: ATA channel to manipulate
973 * @device: ATA device (numbered from zero) to select
975 * This function performs no actual function.
977 * May be used as the dev_select() entry in ata_port_operations.
979 * LOCKING:
980 * caller.
982 void ata_noop_dev_select (struct ata_port *ap, unsigned int device)
988 * ata_std_dev_select - Select device 0/1 on ATA bus
989 * @ap: ATA channel to manipulate
990 * @device: ATA device (numbered from zero) to select
992 * Use the method defined in the ATA specification to
993 * make either device 0, or device 1, active on the
994 * ATA channel. Works with both PIO and MMIO.
996 * May be used as the dev_select() entry in ata_port_operations.
998 * LOCKING:
999 * caller.
1002 void ata_std_dev_select (struct ata_port *ap, unsigned int device)
1004 u8 tmp;
1006 if (device == 0)
1007 tmp = ATA_DEVICE_OBS;
1008 else
1009 tmp = ATA_DEVICE_OBS | ATA_DEV1;
1011 if (ap->flags & ATA_FLAG_MMIO) {
1012 writeb(tmp, (void __iomem *) ap->ioaddr.device_addr);
1013 } else {
1014 outb(tmp, ap->ioaddr.device_addr);
1016 ata_pause(ap); /* needed; also flushes, for mmio */
1020 * ata_dev_select - Select device 0/1 on ATA bus
1021 * @ap: ATA channel to manipulate
1022 * @device: ATA device (numbered from zero) to select
1023 * @wait: non-zero to wait for Status register BSY bit to clear
1024 * @can_sleep: non-zero if context allows sleeping
1026 * Use the method defined in the ATA specification to
1027 * make either device 0, or device 1, active on the
1028 * ATA channel.
1030 * This is a high-level version of ata_std_dev_select(),
1031 * which additionally provides the services of inserting
1032 * the proper pauses and status polling, where needed.
1034 * LOCKING:
1035 * caller.
1038 void ata_dev_select(struct ata_port *ap, unsigned int device,
1039 unsigned int wait, unsigned int can_sleep)
1041 VPRINTK("ENTER, ata%u: device %u, wait %u\n",
1042 ap->id, device, wait);
1044 if (wait)
1045 ata_wait_idle(ap);
1047 ap->ops->dev_select(ap, device);
1049 if (wait) {
1050 if (can_sleep && ap->device[device].class == ATA_DEV_ATAPI)
1051 msleep(150);
1052 ata_wait_idle(ap);
1057 * ata_dump_id - IDENTIFY DEVICE info debugging output
1058 * @dev: Device whose IDENTIFY DEVICE page we will dump
1060 * Dump selected 16-bit words from a detected device's
1061 * IDENTIFY PAGE page.
1063 * LOCKING:
1064 * caller.
1067 static inline void ata_dump_id(struct ata_device *dev)
1069 DPRINTK("49==0x%04x "
1070 "53==0x%04x "
1071 "63==0x%04x "
1072 "64==0x%04x "
1073 "75==0x%04x \n",
1074 dev->id[49],
1075 dev->id[53],
1076 dev->id[63],
1077 dev->id[64],
1078 dev->id[75]);
1079 DPRINTK("80==0x%04x "
1080 "81==0x%04x "
1081 "82==0x%04x "
1082 "83==0x%04x "
1083 "84==0x%04x \n",
1084 dev->id[80],
1085 dev->id[81],
1086 dev->id[82],
1087 dev->id[83],
1088 dev->id[84]);
1089 DPRINTK("88==0x%04x "
1090 "93==0x%04x\n",
1091 dev->id[88],
1092 dev->id[93]);
1096 * ata_dev_identify - obtain IDENTIFY x DEVICE page
1097 * @ap: port on which device we wish to probe resides
1098 * @device: device bus address, starting at zero
1100 * Following bus reset, we issue the IDENTIFY [PACKET] DEVICE
1101 * command, and read back the 512-byte device information page.
1102 * The device information page is fed to us via the standard
1103 * PIO-IN protocol, but we hand-code it here. (TODO: investigate
1104 * using standard PIO-IN paths)
1106 * After reading the device information page, we use several
1107 * bits of information from it to initialize data structures
1108 * that will be used during the lifetime of the ata_device.
1109 * Other data from the info page is used to disqualify certain
1110 * older ATA devices we do not wish to support.
1112 * LOCKING:
1113 * Inherited from caller. Some functions called by this function
1114 * obtain the host_set lock.
1117 static void ata_dev_identify(struct ata_port *ap, unsigned int device)
1119 struct ata_device *dev = &ap->device[device];
1120 unsigned int i;
1121 u16 tmp;
1122 unsigned long xfer_modes;
1123 u8 status;
1124 unsigned int using_edd;
1125 DECLARE_COMPLETION(wait);
1126 struct ata_queued_cmd *qc;
1127 unsigned long flags;
1128 int rc;
1130 if (!ata_dev_present(dev)) {
1131 DPRINTK("ENTER/EXIT (host %u, dev %u) -- nodev\n",
1132 ap->id, device);
1133 return;
1136 if (ap->flags & (ATA_FLAG_SRST | ATA_FLAG_SATA_RESET))
1137 using_edd = 0;
1138 else
1139 using_edd = 1;
1141 DPRINTK("ENTER, host %u, dev %u\n", ap->id, device);
1143 assert (dev->class == ATA_DEV_ATA || dev->class == ATA_DEV_ATAPI ||
1144 dev->class == ATA_DEV_NONE);
1146 ata_dev_select(ap, device, 1, 1); /* select device 0/1 */
1148 qc = ata_qc_new_init(ap, dev);
1149 BUG_ON(qc == NULL);
1151 ata_sg_init_one(qc, dev->id, sizeof(dev->id));
1152 qc->dma_dir = DMA_FROM_DEVICE;
1153 qc->tf.protocol = ATA_PROT_PIO;
1154 qc->nsect = 1;
1156 retry:
1157 if (dev->class == ATA_DEV_ATA) {
1158 qc->tf.command = ATA_CMD_ID_ATA;
1159 DPRINTK("do ATA identify\n");
1160 } else {
1161 qc->tf.command = ATA_CMD_ID_ATAPI;
1162 DPRINTK("do ATAPI identify\n");
1165 qc->waiting = &wait;
1166 qc->complete_fn = ata_qc_complete_noop;
1168 spin_lock_irqsave(&ap->host_set->lock, flags);
1169 rc = ata_qc_issue(qc);
1170 spin_unlock_irqrestore(&ap->host_set->lock, flags);
1172 if (rc)
1173 goto err_out;
1174 else
1175 wait_for_completion(&wait);
1177 status = ata_chk_status(ap);
1178 if (status & ATA_ERR) {
1180 * arg! EDD works for all test cases, but seems to return
1181 * the ATA signature for some ATAPI devices. Until the
1182 * reason for this is found and fixed, we fix up the mess
1183 * here. If IDENTIFY DEVICE returns command aborted
1184 * (as ATAPI devices do), then we issue an
1185 * IDENTIFY PACKET DEVICE.
1187 * ATA software reset (SRST, the default) does not appear
1188 * to have this problem.
1190 if ((using_edd) && (qc->tf.command == ATA_CMD_ID_ATA)) {
1191 u8 err = ata_chk_err(ap);
1192 if (err & ATA_ABORTED) {
1193 dev->class = ATA_DEV_ATAPI;
1194 qc->cursg = 0;
1195 qc->cursg_ofs = 0;
1196 qc->cursect = 0;
1197 qc->nsect = 1;
1198 goto retry;
1201 goto err_out;
1204 swap_buf_le16(dev->id, ATA_ID_WORDS);
1206 /* print device capabilities */
1207 printk(KERN_DEBUG "ata%u: dev %u cfg "
1208 "49:%04x 82:%04x 83:%04x 84:%04x 85:%04x 86:%04x 87:%04x 88:%04x\n",
1209 ap->id, device, dev->id[49],
1210 dev->id[82], dev->id[83], dev->id[84],
1211 dev->id[85], dev->id[86], dev->id[87],
1212 dev->id[88]);
1215 * common ATA, ATAPI feature tests
1218 /* we require LBA and DMA support (bits 8 & 9 of word 49) */
1219 if (!ata_id_has_dma(dev->id) || !ata_id_has_lba(dev->id)) {
1220 printk(KERN_DEBUG "ata%u: no dma/lba\n", ap->id);
1221 goto err_out_nosup;
1224 /* quick-n-dirty find max transfer mode; for printk only */
1225 xfer_modes = dev->id[ATA_ID_UDMA_MODES];
1226 if (!xfer_modes)
1227 xfer_modes = (dev->id[ATA_ID_MWDMA_MODES]) << ATA_SHIFT_MWDMA;
1228 if (!xfer_modes) {
1229 xfer_modes = (dev->id[ATA_ID_PIO_MODES]) << (ATA_SHIFT_PIO + 3);
1230 xfer_modes |= (0x7 << ATA_SHIFT_PIO);
1233 ata_dump_id(dev);
1235 /* ATA-specific feature tests */
1236 if (dev->class == ATA_DEV_ATA) {
1237 if (!ata_id_is_ata(dev->id)) /* sanity check */
1238 goto err_out_nosup;
1240 tmp = dev->id[ATA_ID_MAJOR_VER];
1241 for (i = 14; i >= 1; i--)
1242 if (tmp & (1 << i))
1243 break;
1245 /* we require at least ATA-3 */
1246 if (i < 3) {
1247 printk(KERN_DEBUG "ata%u: no ATA-3\n", ap->id);
1248 goto err_out_nosup;
1251 if (ata_id_has_lba48(dev->id)) {
1252 dev->flags |= ATA_DFLAG_LBA48;
1253 dev->n_sectors = ata_id_u64(dev->id, 100);
1254 } else {
1255 dev->n_sectors = ata_id_u32(dev->id, 60);
1258 ap->host->max_cmd_len = 16;
1260 /* print device info to dmesg */
1261 printk(KERN_INFO "ata%u: dev %u ATA, max %s, %Lu sectors:%s\n",
1262 ap->id, device,
1263 ata_mode_string(xfer_modes),
1264 (unsigned long long)dev->n_sectors,
1265 dev->flags & ATA_DFLAG_LBA48 ? " lba48" : "");
1268 /* ATAPI-specific feature tests */
1269 else {
1270 if (ata_id_is_ata(dev->id)) /* sanity check */
1271 goto err_out_nosup;
1273 rc = atapi_cdb_len(dev->id);
1274 if ((rc < 12) || (rc > ATAPI_CDB_LEN)) {
1275 printk(KERN_WARNING "ata%u: unsupported CDB len\n", ap->id);
1276 goto err_out_nosup;
1278 ap->cdb_len = (unsigned int) rc;
1279 ap->host->max_cmd_len = (unsigned char) ap->cdb_len;
1281 /* print device info to dmesg */
1282 printk(KERN_INFO "ata%u: dev %u ATAPI, max %s\n",
1283 ap->id, device,
1284 ata_mode_string(xfer_modes));
1287 DPRINTK("EXIT, drv_stat = 0x%x\n", ata_chk_status(ap));
1288 return;
1290 err_out_nosup:
1291 printk(KERN_WARNING "ata%u: dev %u not supported, ignoring\n",
1292 ap->id, device);
1293 err_out:
1294 dev->class++; /* converts ATA_DEV_xxx into ATA_DEV_xxx_UNSUP */
1295 DPRINTK("EXIT, err\n");
1299 static inline u8 ata_dev_knobble(struct ata_port *ap)
1301 return ((ap->cbl == ATA_CBL_SATA) && (!ata_id_is_sata(ap->device->id)));
1305 * ata_dev_config - Run device specific handlers and check for
1306 * SATA->PATA bridges
1307 * @ap: Bus
1308 * @i: Device
1310 * LOCKING:
1313 void ata_dev_config(struct ata_port *ap, unsigned int i)
1315 /* limit bridge transfers to udma5, 200 sectors */
1316 if (ata_dev_knobble(ap)) {
1317 printk(KERN_INFO "ata%u(%u): applying bridge limits\n",
1318 ap->id, ap->device->devno);
1319 ap->udma_mask &= ATA_UDMA5;
1320 ap->host->max_sectors = ATA_MAX_SECTORS;
1321 ap->host->hostt->max_sectors = ATA_MAX_SECTORS;
1322 ap->device->flags |= ATA_DFLAG_LOCK_SECTORS;
1325 if (ap->ops->dev_config)
1326 ap->ops->dev_config(ap, &ap->device[i]);
1330 * ata_bus_probe - Reset and probe ATA bus
1331 * @ap: Bus to probe
1333 * Master ATA bus probing function. Initiates a hardware-dependent
1334 * bus reset, then attempts to identify any devices found on
1335 * the bus.
1337 * LOCKING:
1338 * PCI/etc. bus probe sem.
1340 * RETURNS:
1341 * Zero on success, non-zero on error.
1344 static int ata_bus_probe(struct ata_port *ap)
1346 unsigned int i, found = 0;
1348 ap->ops->phy_reset(ap);
1349 if (ap->flags & ATA_FLAG_PORT_DISABLED)
1350 goto err_out;
1352 for (i = 0; i < ATA_MAX_DEVICES; i++) {
1353 ata_dev_identify(ap, i);
1354 if (ata_dev_present(&ap->device[i])) {
1355 found = 1;
1356 ata_dev_config(ap,i);
1360 if ((!found) || (ap->flags & ATA_FLAG_PORT_DISABLED))
1361 goto err_out_disable;
1363 ata_set_mode(ap);
1364 if (ap->flags & ATA_FLAG_PORT_DISABLED)
1365 goto err_out_disable;
1367 return 0;
1369 err_out_disable:
1370 ap->ops->port_disable(ap);
1371 err_out:
1372 return -1;
1376 * ata_port_probe - Mark port as enabled
1377 * @ap: Port for which we indicate enablement
1379 * Modify @ap data structure such that the system
1380 * thinks that the entire port is enabled.
1382 * LOCKING: host_set lock, or some other form of
1383 * serialization.
1386 void ata_port_probe(struct ata_port *ap)
1388 ap->flags &= ~ATA_FLAG_PORT_DISABLED;
1392 * __sata_phy_reset - Wake/reset a low-level SATA PHY
1393 * @ap: SATA port associated with target SATA PHY.
1395 * This function issues commands to standard SATA Sxxx
1396 * PHY registers, to wake up the phy (and device), and
1397 * clear any reset condition.
1399 * LOCKING:
1400 * PCI/etc. bus probe sem.
1403 void __sata_phy_reset(struct ata_port *ap)
1405 u32 sstatus;
1406 unsigned long timeout = jiffies + (HZ * 5);
1408 if (ap->flags & ATA_FLAG_SATA_RESET) {
1409 /* issue phy wake/reset */
1410 scr_write_flush(ap, SCR_CONTROL, 0x301);
1411 /* Couldn't find anything in SATA I/II specs, but
1412 * AHCI-1.1 10.4.2 says at least 1 ms. */
1413 mdelay(1);
1415 scr_write_flush(ap, SCR_CONTROL, 0x300); /* phy wake/clear reset */
1417 /* wait for phy to become ready, if necessary */
1418 do {
1419 msleep(200);
1420 sstatus = scr_read(ap, SCR_STATUS);
1421 if ((sstatus & 0xf) != 1)
1422 break;
1423 } while (time_before(jiffies, timeout));
1425 /* TODO: phy layer with polling, timeouts, etc. */
1426 if (sata_dev_present(ap))
1427 ata_port_probe(ap);
1428 else {
1429 sstatus = scr_read(ap, SCR_STATUS);
1430 printk(KERN_INFO "ata%u: no device found (phy stat %08x)\n",
1431 ap->id, sstatus);
1432 ata_port_disable(ap);
1435 if (ap->flags & ATA_FLAG_PORT_DISABLED)
1436 return;
1438 if (ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT)) {
1439 ata_port_disable(ap);
1440 return;
1443 ap->cbl = ATA_CBL_SATA;
1447 * sata_phy_reset - Reset SATA bus.
1448 * @ap: SATA port associated with target SATA PHY.
1450 * This function resets the SATA bus, and then probes
1451 * the bus for devices.
1453 * LOCKING:
1454 * PCI/etc. bus probe sem.
1457 void sata_phy_reset(struct ata_port *ap)
1459 __sata_phy_reset(ap);
1460 if (ap->flags & ATA_FLAG_PORT_DISABLED)
1461 return;
1462 ata_bus_reset(ap);
1466 * ata_port_disable - Disable port.
1467 * @ap: Port to be disabled.
1469 * Modify @ap data structure such that the system
1470 * thinks that the entire port is disabled, and should
1471 * never attempt to probe or communicate with devices
1472 * on this port.
1474 * LOCKING: host_set lock, or some other form of
1475 * serialization.
1478 void ata_port_disable(struct ata_port *ap)
1480 ap->device[0].class = ATA_DEV_NONE;
1481 ap->device[1].class = ATA_DEV_NONE;
1482 ap->flags |= ATA_FLAG_PORT_DISABLED;
1485 static struct {
1486 unsigned int shift;
1487 u8 base;
1488 } xfer_mode_classes[] = {
1489 { ATA_SHIFT_UDMA, XFER_UDMA_0 },
1490 { ATA_SHIFT_MWDMA, XFER_MW_DMA_0 },
1491 { ATA_SHIFT_PIO, XFER_PIO_0 },
1494 static inline u8 base_from_shift(unsigned int shift)
1496 int i;
1498 for (i = 0; i < ARRAY_SIZE(xfer_mode_classes); i++)
1499 if (xfer_mode_classes[i].shift == shift)
1500 return xfer_mode_classes[i].base;
1502 return 0xff;
1505 static void ata_dev_set_mode(struct ata_port *ap, struct ata_device *dev)
1507 int ofs, idx;
1508 u8 base;
1510 if (!ata_dev_present(dev) || (ap->flags & ATA_FLAG_PORT_DISABLED))
1511 return;
1513 if (dev->xfer_shift == ATA_SHIFT_PIO)
1514 dev->flags |= ATA_DFLAG_PIO;
1516 ata_dev_set_xfermode(ap, dev);
1518 base = base_from_shift(dev->xfer_shift);
1519 ofs = dev->xfer_mode - base;
1520 idx = ofs + dev->xfer_shift;
1521 WARN_ON(idx >= ARRAY_SIZE(xfer_mode_str));
1523 DPRINTK("idx=%d xfer_shift=%u, xfer_mode=0x%x, base=0x%x, offset=%d\n",
1524 idx, dev->xfer_shift, (int)dev->xfer_mode, (int)base, ofs);
1526 printk(KERN_INFO "ata%u: dev %u configured for %s\n",
1527 ap->id, dev->devno, xfer_mode_str[idx]);
1530 static int ata_host_set_pio(struct ata_port *ap)
1532 unsigned int mask;
1533 int x, i;
1534 u8 base, xfer_mode;
1536 mask = ata_get_mode_mask(ap, ATA_SHIFT_PIO);
1537 x = fgb(mask);
1538 if (x < 0) {
1539 printk(KERN_WARNING "ata%u: no PIO support\n", ap->id);
1540 return -1;
1543 base = base_from_shift(ATA_SHIFT_PIO);
1544 xfer_mode = base + x;
1546 DPRINTK("base 0x%x xfer_mode 0x%x mask 0x%x x %d\n",
1547 (int)base, (int)xfer_mode, mask, x);
1549 for (i = 0; i < ATA_MAX_DEVICES; i++) {
1550 struct ata_device *dev = &ap->device[i];
1551 if (ata_dev_present(dev)) {
1552 dev->pio_mode = xfer_mode;
1553 dev->xfer_mode = xfer_mode;
1554 dev->xfer_shift = ATA_SHIFT_PIO;
1555 if (ap->ops->set_piomode)
1556 ap->ops->set_piomode(ap, dev);
1560 return 0;
1563 static void ata_host_set_dma(struct ata_port *ap, u8 xfer_mode,
1564 unsigned int xfer_shift)
1566 int i;
1568 for (i = 0; i < ATA_MAX_DEVICES; i++) {
1569 struct ata_device *dev = &ap->device[i];
1570 if (ata_dev_present(dev)) {
1571 dev->dma_mode = xfer_mode;
1572 dev->xfer_mode = xfer_mode;
1573 dev->xfer_shift = xfer_shift;
1574 if (ap->ops->set_dmamode)
1575 ap->ops->set_dmamode(ap, dev);
1581 * ata_set_mode - Program timings and issue SET FEATURES - XFER
1582 * @ap: port on which timings will be programmed
1584 * Set ATA device disk transfer mode (PIO3, UDMA6, etc.).
1586 * LOCKING:
1587 * PCI/etc. bus probe sem.
1590 static void ata_set_mode(struct ata_port *ap)
1592 unsigned int i, xfer_shift;
1593 u8 xfer_mode;
1594 int rc;
1596 /* step 1: always set host PIO timings */
1597 rc = ata_host_set_pio(ap);
1598 if (rc)
1599 goto err_out;
1601 /* step 2: choose the best data xfer mode */
1602 xfer_mode = xfer_shift = 0;
1603 rc = ata_choose_xfer_mode(ap, &xfer_mode, &xfer_shift);
1604 if (rc)
1605 goto err_out;
1607 /* step 3: if that xfer mode isn't PIO, set host DMA timings */
1608 if (xfer_shift != ATA_SHIFT_PIO)
1609 ata_host_set_dma(ap, xfer_mode, xfer_shift);
1611 /* step 4: update devices' xfer mode */
1612 ata_dev_set_mode(ap, &ap->device[0]);
1613 ata_dev_set_mode(ap, &ap->device[1]);
1615 if (ap->flags & ATA_FLAG_PORT_DISABLED)
1616 return;
1618 if (ap->ops->post_set_mode)
1619 ap->ops->post_set_mode(ap);
1621 for (i = 0; i < 2; i++) {
1622 struct ata_device *dev = &ap->device[i];
1623 ata_dev_set_protocol(dev);
1626 return;
1628 err_out:
1629 ata_port_disable(ap);
1633 * ata_busy_sleep - sleep until BSY clears, or timeout
1634 * @ap: port containing status register to be polled
1635 * @tmout_pat: impatience timeout
1636 * @tmout: overall timeout
1638 * Sleep until ATA Status register bit BSY clears,
1639 * or a timeout occurs.
1641 * LOCKING: None.
1645 static unsigned int ata_busy_sleep (struct ata_port *ap,
1646 unsigned long tmout_pat,
1647 unsigned long tmout)
1649 unsigned long timer_start, timeout;
1650 u8 status;
1652 status = ata_busy_wait(ap, ATA_BUSY, 300);
1653 timer_start = jiffies;
1654 timeout = timer_start + tmout_pat;
1655 while ((status & ATA_BUSY) && (time_before(jiffies, timeout))) {
1656 msleep(50);
1657 status = ata_busy_wait(ap, ATA_BUSY, 3);
1660 if (status & ATA_BUSY)
1661 printk(KERN_WARNING "ata%u is slow to respond, "
1662 "please be patient\n", ap->id);
1664 timeout = timer_start + tmout;
1665 while ((status & ATA_BUSY) && (time_before(jiffies, timeout))) {
1666 msleep(50);
1667 status = ata_chk_status(ap);
1670 if (status & ATA_BUSY) {
1671 printk(KERN_ERR "ata%u failed to respond (%lu secs)\n",
1672 ap->id, tmout / HZ);
1673 return 1;
1676 return 0;
1679 static void ata_bus_post_reset(struct ata_port *ap, unsigned int devmask)
1681 struct ata_ioports *ioaddr = &ap->ioaddr;
1682 unsigned int dev0 = devmask & (1 << 0);
1683 unsigned int dev1 = devmask & (1 << 1);
1684 unsigned long timeout;
1686 /* if device 0 was found in ata_devchk, wait for its
1687 * BSY bit to clear
1689 if (dev0)
1690 ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT);
1692 /* if device 1 was found in ata_devchk, wait for
1693 * register access, then wait for BSY to clear
1695 timeout = jiffies + ATA_TMOUT_BOOT;
1696 while (dev1) {
1697 u8 nsect, lbal;
1699 ap->ops->dev_select(ap, 1);
1700 if (ap->flags & ATA_FLAG_MMIO) {
1701 nsect = readb((void __iomem *) ioaddr->nsect_addr);
1702 lbal = readb((void __iomem *) ioaddr->lbal_addr);
1703 } else {
1704 nsect = inb(ioaddr->nsect_addr);
1705 lbal = inb(ioaddr->lbal_addr);
1707 if ((nsect == 1) && (lbal == 1))
1708 break;
1709 if (time_after(jiffies, timeout)) {
1710 dev1 = 0;
1711 break;
1713 msleep(50); /* give drive a breather */
1715 if (dev1)
1716 ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT);
1718 /* is all this really necessary? */
1719 ap->ops->dev_select(ap, 0);
1720 if (dev1)
1721 ap->ops->dev_select(ap, 1);
1722 if (dev0)
1723 ap->ops->dev_select(ap, 0);
1727 * ata_bus_edd - Issue EXECUTE DEVICE DIAGNOSTIC command.
1728 * @ap: Port to reset and probe
1730 * Use the EXECUTE DEVICE DIAGNOSTIC command to reset and
1731 * probe the bus. Not often used these days.
1733 * LOCKING:
1734 * PCI/etc. bus probe sem.
1738 static unsigned int ata_bus_edd(struct ata_port *ap)
1740 struct ata_taskfile tf;
1742 /* set up execute-device-diag (bus reset) taskfile */
1743 /* also, take interrupts to a known state (disabled) */
1744 DPRINTK("execute-device-diag\n");
1745 ata_tf_init(ap, &tf, 0);
1746 tf.ctl |= ATA_NIEN;
1747 tf.command = ATA_CMD_EDD;
1748 tf.protocol = ATA_PROT_NODATA;
1750 /* do bus reset */
1751 ata_tf_to_host(ap, &tf);
1753 /* spec says at least 2ms. but who knows with those
1754 * crazy ATAPI devices...
1756 msleep(150);
1758 return ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT);
1761 static unsigned int ata_bus_softreset(struct ata_port *ap,
1762 unsigned int devmask)
1764 struct ata_ioports *ioaddr = &ap->ioaddr;
1766 DPRINTK("ata%u: bus reset via SRST\n", ap->id);
1768 /* software reset. causes dev0 to be selected */
1769 if (ap->flags & ATA_FLAG_MMIO) {
1770 writeb(ap->ctl, (void __iomem *) ioaddr->ctl_addr);
1771 udelay(20); /* FIXME: flush */
1772 writeb(ap->ctl | ATA_SRST, (void __iomem *) ioaddr->ctl_addr);
1773 udelay(20); /* FIXME: flush */
1774 writeb(ap->ctl, (void __iomem *) ioaddr->ctl_addr);
1775 } else {
1776 outb(ap->ctl, ioaddr->ctl_addr);
1777 udelay(10);
1778 outb(ap->ctl | ATA_SRST, ioaddr->ctl_addr);
1779 udelay(10);
1780 outb(ap->ctl, ioaddr->ctl_addr);
1783 /* spec mandates ">= 2ms" before checking status.
1784 * We wait 150ms, because that was the magic delay used for
1785 * ATAPI devices in Hale Landis's ATADRVR, for the period of time
1786 * between when the ATA command register is written, and then
1787 * status is checked. Because waiting for "a while" before
1788 * checking status is fine, post SRST, we perform this magic
1789 * delay here as well.
1791 msleep(150);
1793 ata_bus_post_reset(ap, devmask);
1795 return 0;
1799 * ata_bus_reset - reset host port and associated ATA channel
1800 * @ap: port to reset
1802 * This is typically the first time we actually start issuing
1803 * commands to the ATA channel. We wait for BSY to clear, then
1804 * issue EXECUTE DEVICE DIAGNOSTIC command, polling for its
1805 * result. Determine what devices, if any, are on the channel
1806 * by looking at the device 0/1 error register. Look at the signature
1807 * stored in each device's taskfile registers, to determine if
1808 * the device is ATA or ATAPI.
1810 * LOCKING:
1811 * PCI/etc. bus probe sem.
1812 * Obtains host_set lock.
1814 * SIDE EFFECTS:
1815 * Sets ATA_FLAG_PORT_DISABLED if bus reset fails.
1818 void ata_bus_reset(struct ata_port *ap)
1820 struct ata_ioports *ioaddr = &ap->ioaddr;
1821 unsigned int slave_possible = ap->flags & ATA_FLAG_SLAVE_POSS;
1822 u8 err;
1823 unsigned int dev0, dev1 = 0, rc = 0, devmask = 0;
1825 DPRINTK("ENTER, host %u, port %u\n", ap->id, ap->port_no);
1827 /* determine if device 0/1 are present */
1828 if (ap->flags & ATA_FLAG_SATA_RESET)
1829 dev0 = 1;
1830 else {
1831 dev0 = ata_devchk(ap, 0);
1832 if (slave_possible)
1833 dev1 = ata_devchk(ap, 1);
1836 if (dev0)
1837 devmask |= (1 << 0);
1838 if (dev1)
1839 devmask |= (1 << 1);
1841 /* select device 0 again */
1842 ap->ops->dev_select(ap, 0);
1844 /* issue bus reset */
1845 if (ap->flags & ATA_FLAG_SRST)
1846 rc = ata_bus_softreset(ap, devmask);
1847 else if ((ap->flags & ATA_FLAG_SATA_RESET) == 0) {
1848 /* set up device control */
1849 if (ap->flags & ATA_FLAG_MMIO)
1850 writeb(ap->ctl, (void __iomem *) ioaddr->ctl_addr);
1851 else
1852 outb(ap->ctl, ioaddr->ctl_addr);
1853 rc = ata_bus_edd(ap);
1856 if (rc)
1857 goto err_out;
1860 * determine by signature whether we have ATA or ATAPI devices
1862 err = ata_dev_try_classify(ap, 0);
1863 if ((slave_possible) && (err != 0x81))
1864 ata_dev_try_classify(ap, 1);
1866 /* re-enable interrupts */
1867 if (ap->ioaddr.ctl_addr) /* FIXME: hack. create a hook instead */
1868 ata_irq_on(ap);
1870 /* is double-select really necessary? */
1871 if (ap->device[1].class != ATA_DEV_NONE)
1872 ap->ops->dev_select(ap, 1);
1873 if (ap->device[0].class != ATA_DEV_NONE)
1874 ap->ops->dev_select(ap, 0);
1876 /* if no devices were detected, disable this port */
1877 if ((ap->device[0].class == ATA_DEV_NONE) &&
1878 (ap->device[1].class == ATA_DEV_NONE))
1879 goto err_out;
1881 if (ap->flags & (ATA_FLAG_SATA_RESET | ATA_FLAG_SRST)) {
1882 /* set up device control for ATA_FLAG_SATA_RESET */
1883 if (ap->flags & ATA_FLAG_MMIO)
1884 writeb(ap->ctl, (void __iomem *) ioaddr->ctl_addr);
1885 else
1886 outb(ap->ctl, ioaddr->ctl_addr);
1889 DPRINTK("EXIT\n");
1890 return;
1892 err_out:
1893 printk(KERN_ERR "ata%u: disabling port\n", ap->id);
1894 ap->ops->port_disable(ap);
1896 DPRINTK("EXIT\n");
1899 static void ata_pr_blacklisted(struct ata_port *ap, struct ata_device *dev)
1901 printk(KERN_WARNING "ata%u: dev %u is on DMA blacklist, disabling DMA\n",
1902 ap->id, dev->devno);
1905 static const char * ata_dma_blacklist [] = {
1906 "WDC AC11000H",
1907 "WDC AC22100H",
1908 "WDC AC32500H",
1909 "WDC AC33100H",
1910 "WDC AC31600H",
1911 "WDC AC32100H",
1912 "WDC AC23200L",
1913 "Compaq CRD-8241B",
1914 "CRD-8400B",
1915 "CRD-8480B",
1916 "CRD-8482B",
1917 "CRD-84",
1918 "SanDisk SDP3B",
1919 "SanDisk SDP3B-64",
1920 "SANYO CD-ROM CRD",
1921 "HITACHI CDR-8",
1922 "HITACHI CDR-8335",
1923 "HITACHI CDR-8435",
1924 "Toshiba CD-ROM XM-6202B",
1925 "TOSHIBA CD-ROM XM-1702BC",
1926 "CD-532E-A",
1927 "E-IDE CD-ROM CR-840",
1928 "CD-ROM Drive/F5A",
1929 "WPI CDD-820",
1930 "SAMSUNG CD-ROM SC-148C",
1931 "SAMSUNG CD-ROM SC",
1932 "SanDisk SDP3B-64",
1933 "ATAPI CD-ROM DRIVE 40X MAXIMUM",
1934 "_NEC DV5800A",
1937 static int ata_dma_blacklisted(struct ata_port *ap, struct ata_device *dev)
1939 unsigned char model_num[40];
1940 char *s;
1941 unsigned int len;
1942 int i;
1944 ata_dev_id_string(dev->id, model_num, ATA_ID_PROD_OFS,
1945 sizeof(model_num));
1946 s = &model_num[0];
1947 len = strnlen(s, sizeof(model_num));
1949 /* ATAPI specifies that empty space is blank-filled; remove blanks */
1950 while ((len > 0) && (s[len - 1] == ' ')) {
1951 len--;
1952 s[len] = 0;
1955 for (i = 0; i < ARRAY_SIZE(ata_dma_blacklist); i++)
1956 if (!strncmp(ata_dma_blacklist[i], s, len))
1957 return 1;
1959 return 0;
1962 static unsigned int ata_get_mode_mask(struct ata_port *ap, int shift)
1964 struct ata_device *master, *slave;
1965 unsigned int mask;
1967 master = &ap->device[0];
1968 slave = &ap->device[1];
1970 assert (ata_dev_present(master) || ata_dev_present(slave));
1972 if (shift == ATA_SHIFT_UDMA) {
1973 mask = ap->udma_mask;
1974 if (ata_dev_present(master)) {
1975 mask &= (master->id[ATA_ID_UDMA_MODES] & 0xff);
1976 if (ata_dma_blacklisted(ap, master)) {
1977 mask = 0;
1978 ata_pr_blacklisted(ap, master);
1981 if (ata_dev_present(slave)) {
1982 mask &= (slave->id[ATA_ID_UDMA_MODES] & 0xff);
1983 if (ata_dma_blacklisted(ap, slave)) {
1984 mask = 0;
1985 ata_pr_blacklisted(ap, slave);
1989 else if (shift == ATA_SHIFT_MWDMA) {
1990 mask = ap->mwdma_mask;
1991 if (ata_dev_present(master)) {
1992 mask &= (master->id[ATA_ID_MWDMA_MODES] & 0x07);
1993 if (ata_dma_blacklisted(ap, master)) {
1994 mask = 0;
1995 ata_pr_blacklisted(ap, master);
1998 if (ata_dev_present(slave)) {
1999 mask &= (slave->id[ATA_ID_MWDMA_MODES] & 0x07);
2000 if (ata_dma_blacklisted(ap, slave)) {
2001 mask = 0;
2002 ata_pr_blacklisted(ap, slave);
2006 else if (shift == ATA_SHIFT_PIO) {
2007 mask = ap->pio_mask;
2008 if (ata_dev_present(master)) {
2009 /* spec doesn't return explicit support for
2010 * PIO0-2, so we fake it
2012 u16 tmp_mode = master->id[ATA_ID_PIO_MODES] & 0x03;
2013 tmp_mode <<= 3;
2014 tmp_mode |= 0x7;
2015 mask &= tmp_mode;
2017 if (ata_dev_present(slave)) {
2018 /* spec doesn't return explicit support for
2019 * PIO0-2, so we fake it
2021 u16 tmp_mode = slave->id[ATA_ID_PIO_MODES] & 0x03;
2022 tmp_mode <<= 3;
2023 tmp_mode |= 0x7;
2024 mask &= tmp_mode;
2027 else {
2028 mask = 0xffffffff; /* shut up compiler warning */
2029 BUG();
2032 return mask;
2035 /* find greatest bit */
2036 static int fgb(u32 bitmap)
2038 unsigned int i;
2039 int x = -1;
2041 for (i = 0; i < 32; i++)
2042 if (bitmap & (1 << i))
2043 x = i;
2045 return x;
2049 * ata_choose_xfer_mode - attempt to find best transfer mode
2050 * @ap: Port for which an xfer mode will be selected
2051 * @xfer_mode_out: (output) SET FEATURES - XFER MODE code
2052 * @xfer_shift_out: (output) bit shift that selects this mode
2054 * Based on host and device capabilities, determine the
2055 * maximum transfer mode that is amenable to all.
2057 * LOCKING:
2058 * PCI/etc. bus probe sem.
2060 * RETURNS:
2061 * Zero on success, negative on error.
2064 static int ata_choose_xfer_mode(struct ata_port *ap,
2065 u8 *xfer_mode_out,
2066 unsigned int *xfer_shift_out)
2068 unsigned int mask, shift;
2069 int x, i;
2071 for (i = 0; i < ARRAY_SIZE(xfer_mode_classes); i++) {
2072 shift = xfer_mode_classes[i].shift;
2073 mask = ata_get_mode_mask(ap, shift);
2075 x = fgb(mask);
2076 if (x >= 0) {
2077 *xfer_mode_out = xfer_mode_classes[i].base + x;
2078 *xfer_shift_out = shift;
2079 return 0;
2083 return -1;
2087 * ata_dev_set_xfermode - Issue SET FEATURES - XFER MODE command
2088 * @ap: Port associated with device @dev
2089 * @dev: Device to which command will be sent
2091 * Issue SET FEATURES - XFER MODE command to device @dev
2092 * on port @ap.
2094 * LOCKING:
2095 * PCI/etc. bus probe sem.
2098 static void ata_dev_set_xfermode(struct ata_port *ap, struct ata_device *dev)
2100 DECLARE_COMPLETION(wait);
2101 struct ata_queued_cmd *qc;
2102 int rc;
2103 unsigned long flags;
2105 /* set up set-features taskfile */
2106 DPRINTK("set features - xfer mode\n");
2108 qc = ata_qc_new_init(ap, dev);
2109 BUG_ON(qc == NULL);
2111 qc->tf.command = ATA_CMD_SET_FEATURES;
2112 qc->tf.feature = SETFEATURES_XFER;
2113 qc->tf.flags |= ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE;
2114 qc->tf.protocol = ATA_PROT_NODATA;
2115 qc->tf.nsect = dev->xfer_mode;
2117 qc->waiting = &wait;
2118 qc->complete_fn = ata_qc_complete_noop;
2120 spin_lock_irqsave(&ap->host_set->lock, flags);
2121 rc = ata_qc_issue(qc);
2122 spin_unlock_irqrestore(&ap->host_set->lock, flags);
2124 if (rc)
2125 ata_port_disable(ap);
2126 else
2127 wait_for_completion(&wait);
2129 DPRINTK("EXIT\n");
2133 * ata_sg_clean - Unmap DMA memory associated with command
2134 * @qc: Command containing DMA memory to be released
2136 * Unmap all mapped DMA memory associated with this command.
2138 * LOCKING:
2139 * spin_lock_irqsave(host_set lock)
2142 static void ata_sg_clean(struct ata_queued_cmd *qc)
2144 struct ata_port *ap = qc->ap;
2145 struct scatterlist *sg = qc->sg;
2146 int dir = qc->dma_dir;
2148 assert(qc->flags & ATA_QCFLAG_DMAMAP);
2149 assert(sg != NULL);
2151 if (qc->flags & ATA_QCFLAG_SINGLE)
2152 assert(qc->n_elem == 1);
2154 DPRINTK("unmapping %u sg elements\n", qc->n_elem);
2156 if (qc->flags & ATA_QCFLAG_SG)
2157 dma_unmap_sg(ap->host_set->dev, sg, qc->n_elem, dir);
2158 else
2159 dma_unmap_single(ap->host_set->dev, sg_dma_address(&sg[0]),
2160 sg_dma_len(&sg[0]), dir);
2162 qc->flags &= ~ATA_QCFLAG_DMAMAP;
2163 qc->sg = NULL;
2167 * ata_fill_sg - Fill PCI IDE PRD table
2168 * @qc: Metadata associated with taskfile to be transferred
2170 * Fill PCI IDE PRD (scatter-gather) table with segments
2171 * associated with the current disk command.
2173 * LOCKING:
2174 * spin_lock_irqsave(host_set lock)
2177 static void ata_fill_sg(struct ata_queued_cmd *qc)
2179 struct scatterlist *sg = qc->sg;
2180 struct ata_port *ap = qc->ap;
2181 unsigned int idx, nelem;
2183 assert(sg != NULL);
2184 assert(qc->n_elem > 0);
2186 idx = 0;
2187 for (nelem = qc->n_elem; nelem; nelem--,sg++) {
2188 u32 addr, offset;
2189 u32 sg_len, len;
2191 /* determine if physical DMA addr spans 64K boundary.
2192 * Note h/w doesn't support 64-bit, so we unconditionally
2193 * truncate dma_addr_t to u32.
2195 addr = (u32) sg_dma_address(sg);
2196 sg_len = sg_dma_len(sg);
2198 while (sg_len) {
2199 offset = addr & 0xffff;
2200 len = sg_len;
2201 if ((offset + sg_len) > 0x10000)
2202 len = 0x10000 - offset;
2204 ap->prd[idx].addr = cpu_to_le32(addr);
2205 ap->prd[idx].flags_len = cpu_to_le32(len & 0xffff);
2206 VPRINTK("PRD[%u] = (0x%X, 0x%X)\n", idx, addr, len);
2208 idx++;
2209 sg_len -= len;
2210 addr += len;
2214 if (idx)
2215 ap->prd[idx - 1].flags_len |= cpu_to_le32(ATA_PRD_EOT);
2218 * ata_check_atapi_dma - Check whether ATAPI DMA can be supported
2219 * @qc: Metadata associated with taskfile to check
2221 * Allow low-level driver to filter ATA PACKET commands, returning
2222 * a status indicating whether or not it is OK to use DMA for the
2223 * supplied PACKET command.
2225 * LOCKING:
2226 * spin_lock_irqsave(host_set lock)
2228 * RETURNS: 0 when ATAPI DMA can be used
2229 * nonzero otherwise
2231 int ata_check_atapi_dma(struct ata_queued_cmd *qc)
2233 struct ata_port *ap = qc->ap;
2234 int rc = 0; /* Assume ATAPI DMA is OK by default */
2236 if (ap->ops->check_atapi_dma)
2237 rc = ap->ops->check_atapi_dma(qc);
2239 return rc;
2242 * ata_qc_prep - Prepare taskfile for submission
2243 * @qc: Metadata associated with taskfile to be prepared
2245 * Prepare ATA taskfile for submission.
2247 * LOCKING:
2248 * spin_lock_irqsave(host_set lock)
2250 void ata_qc_prep(struct ata_queued_cmd *qc)
2252 if (!(qc->flags & ATA_QCFLAG_DMAMAP))
2253 return;
2255 ata_fill_sg(qc);
2259 * ata_sg_init_one - Associate command with memory buffer
2260 * @qc: Command to be associated
2261 * @buf: Memory buffer
2262 * @buflen: Length of memory buffer, in bytes.
2264 * Initialize the data-related elements of queued_cmd @qc
2265 * to point to a single memory buffer, @buf of byte length @buflen.
2267 * LOCKING:
2268 * spin_lock_irqsave(host_set lock)
2271 void ata_sg_init_one(struct ata_queued_cmd *qc, void *buf, unsigned int buflen)
2273 struct scatterlist *sg;
2275 qc->flags |= ATA_QCFLAG_SINGLE;
2277 memset(&qc->sgent, 0, sizeof(qc->sgent));
2278 qc->sg = &qc->sgent;
2279 qc->n_elem = 1;
2280 qc->buf_virt = buf;
2282 sg = qc->sg;
2283 sg->page = virt_to_page(buf);
2284 sg->offset = (unsigned long) buf & ~PAGE_MASK;
2285 sg->length = buflen;
2289 * ata_sg_init - Associate command with scatter-gather table.
2290 * @qc: Command to be associated
2291 * @sg: Scatter-gather table.
2292 * @n_elem: Number of elements in s/g table.
2294 * Initialize the data-related elements of queued_cmd @qc
2295 * to point to a scatter-gather table @sg, containing @n_elem
2296 * elements.
2298 * LOCKING:
2299 * spin_lock_irqsave(host_set lock)
2302 void ata_sg_init(struct ata_queued_cmd *qc, struct scatterlist *sg,
2303 unsigned int n_elem)
2305 qc->flags |= ATA_QCFLAG_SG;
2306 qc->sg = sg;
2307 qc->n_elem = n_elem;
2311 * ata_sg_setup_one - DMA-map the memory buffer associated with a command.
2312 * @qc: Command with memory buffer to be mapped.
2314 * DMA-map the memory buffer associated with queued_cmd @qc.
2316 * LOCKING:
2317 * spin_lock_irqsave(host_set lock)
2319 * RETURNS:
2320 * Zero on success, negative on error.
2323 static int ata_sg_setup_one(struct ata_queued_cmd *qc)
2325 struct ata_port *ap = qc->ap;
2326 int dir = qc->dma_dir;
2327 struct scatterlist *sg = qc->sg;
2328 dma_addr_t dma_address;
2330 dma_address = dma_map_single(ap->host_set->dev, qc->buf_virt,
2331 sg->length, dir);
2332 if (dma_mapping_error(dma_address))
2333 return -1;
2335 sg_dma_address(sg) = dma_address;
2336 sg_dma_len(sg) = sg->length;
2338 DPRINTK("mapped buffer of %d bytes for %s\n", sg_dma_len(sg),
2339 qc->tf.flags & ATA_TFLAG_WRITE ? "write" : "read");
2341 return 0;
2345 * ata_sg_setup - DMA-map the scatter-gather table associated with a command.
2346 * @qc: Command with scatter-gather table to be mapped.
2348 * DMA-map the scatter-gather table associated with queued_cmd @qc.
2350 * LOCKING:
2351 * spin_lock_irqsave(host_set lock)
2353 * RETURNS:
2354 * Zero on success, negative on error.
2358 static int ata_sg_setup(struct ata_queued_cmd *qc)
2360 struct ata_port *ap = qc->ap;
2361 struct scatterlist *sg = qc->sg;
2362 int n_elem, dir;
2364 VPRINTK("ENTER, ata%u\n", ap->id);
2365 assert(qc->flags & ATA_QCFLAG_SG);
2367 dir = qc->dma_dir;
2368 n_elem = dma_map_sg(ap->host_set->dev, sg, qc->n_elem, dir);
2369 if (n_elem < 1)
2370 return -1;
2372 DPRINTK("%d sg elements mapped\n", n_elem);
2374 qc->n_elem = n_elem;
2376 return 0;
2380 * ata_poll_qc_complete - turn irq back on and finish qc
2381 * @qc: Command to complete
2382 * @drv_stat: ATA status register content
2384 * LOCKING:
2385 * None. (grabs host lock)
2388 void ata_poll_qc_complete(struct ata_queued_cmd *qc, u8 drv_stat)
2390 struct ata_port *ap = qc->ap;
2391 unsigned long flags;
2393 spin_lock_irqsave(&ap->host_set->lock, flags);
2394 ap->flags &= ~ATA_FLAG_NOINTR;
2395 ata_irq_on(ap);
2396 ata_qc_complete(qc, drv_stat);
2397 spin_unlock_irqrestore(&ap->host_set->lock, flags);
2401 * ata_pio_poll -
2402 * @ap:
2404 * LOCKING:
2405 * None. (executing in kernel thread context)
2407 * RETURNS:
2411 static unsigned long ata_pio_poll(struct ata_port *ap)
2413 u8 status;
2414 unsigned int poll_state = PIO_ST_UNKNOWN;
2415 unsigned int reg_state = PIO_ST_UNKNOWN;
2416 const unsigned int tmout_state = PIO_ST_TMOUT;
2418 switch (ap->pio_task_state) {
2419 case PIO_ST:
2420 case PIO_ST_POLL:
2421 poll_state = PIO_ST_POLL;
2422 reg_state = PIO_ST;
2423 break;
2424 case PIO_ST_LAST:
2425 case PIO_ST_LAST_POLL:
2426 poll_state = PIO_ST_LAST_POLL;
2427 reg_state = PIO_ST_LAST;
2428 break;
2429 default:
2430 BUG();
2431 break;
2434 status = ata_chk_status(ap);
2435 if (status & ATA_BUSY) {
2436 if (time_after(jiffies, ap->pio_task_timeout)) {
2437 ap->pio_task_state = tmout_state;
2438 return 0;
2440 ap->pio_task_state = poll_state;
2441 return ATA_SHORT_PAUSE;
2444 ap->pio_task_state = reg_state;
2445 return 0;
2449 * ata_pio_complete -
2450 * @ap:
2452 * LOCKING:
2453 * None. (executing in kernel thread context)
2456 static void ata_pio_complete (struct ata_port *ap)
2458 struct ata_queued_cmd *qc;
2459 u8 drv_stat;
2462 * This is purely heuristic. This is a fast path. Sometimes when
2463 * we enter, BSY will be cleared in a chk-status or two. If not,
2464 * the drive is probably seeking or something. Snooze for a couple
2465 * msecs, then chk-status again. If still busy, fall back to
2466 * PIO_ST_POLL state.
2468 drv_stat = ata_busy_wait(ap, ATA_BUSY | ATA_DRQ, 10);
2469 if (drv_stat & (ATA_BUSY | ATA_DRQ)) {
2470 msleep(2);
2471 drv_stat = ata_busy_wait(ap, ATA_BUSY | ATA_DRQ, 10);
2472 if (drv_stat & (ATA_BUSY | ATA_DRQ)) {
2473 ap->pio_task_state = PIO_ST_LAST_POLL;
2474 ap->pio_task_timeout = jiffies + ATA_TMOUT_PIO;
2475 return;
2479 drv_stat = ata_wait_idle(ap);
2480 if (!ata_ok(drv_stat)) {
2481 ap->pio_task_state = PIO_ST_ERR;
2482 return;
2485 qc = ata_qc_from_tag(ap, ap->active_tag);
2486 assert(qc != NULL);
2488 ap->pio_task_state = PIO_ST_IDLE;
2490 ata_poll_qc_complete(qc, drv_stat);
2495 * swap_buf_le16 -
2496 * @buf: Buffer to swap
2497 * @buf_words: Number of 16-bit words in buffer.
2499 * Swap halves of 16-bit words if needed to convert from
2500 * little-endian byte order to native cpu byte order, or
2501 * vice-versa.
2503 * LOCKING:
2505 void swap_buf_le16(u16 *buf, unsigned int buf_words)
2507 #ifdef __BIG_ENDIAN
2508 unsigned int i;
2510 for (i = 0; i < buf_words; i++)
2511 buf[i] = le16_to_cpu(buf[i]);
2512 #endif /* __BIG_ENDIAN */
2516 * ata_mmio_data_xfer - Transfer data by MMIO
2517 * @ap: port to read/write
2518 * @buf: data buffer
2519 * @buflen: buffer length
2520 * @do_write: read/write
2522 * Transfer data from/to the device data register by MMIO.
2524 * LOCKING:
2525 * Inherited from caller.
2529 static void ata_mmio_data_xfer(struct ata_port *ap, unsigned char *buf,
2530 unsigned int buflen, int write_data)
2532 unsigned int i;
2533 unsigned int words = buflen >> 1;
2534 u16 *buf16 = (u16 *) buf;
2535 void __iomem *mmio = (void __iomem *)ap->ioaddr.data_addr;
2537 /* Transfer multiple of 2 bytes */
2538 if (write_data) {
2539 for (i = 0; i < words; i++)
2540 writew(le16_to_cpu(buf16[i]), mmio);
2541 } else {
2542 for (i = 0; i < words; i++)
2543 buf16[i] = cpu_to_le16(readw(mmio));
2546 /* Transfer trailing 1 byte, if any. */
2547 if (unlikely(buflen & 0x01)) {
2548 u16 align_buf[1] = { 0 };
2549 unsigned char *trailing_buf = buf + buflen - 1;
2551 if (write_data) {
2552 memcpy(align_buf, trailing_buf, 1);
2553 writew(le16_to_cpu(align_buf[0]), mmio);
2554 } else {
2555 align_buf[0] = cpu_to_le16(readw(mmio));
2556 memcpy(trailing_buf, align_buf, 1);
2562 * ata_pio_data_xfer - Transfer data by PIO
2563 * @ap: port to read/write
2564 * @buf: data buffer
2565 * @buflen: buffer length
2566 * @do_write: read/write
2568 * Transfer data from/to the device data register by PIO.
2570 * LOCKING:
2571 * Inherited from caller.
2575 static void ata_pio_data_xfer(struct ata_port *ap, unsigned char *buf,
2576 unsigned int buflen, int write_data)
2578 unsigned int words = buflen >> 1;
2580 /* Transfer multiple of 2 bytes */
2581 if (write_data)
2582 outsw(ap->ioaddr.data_addr, buf, words);
2583 else
2584 insw(ap->ioaddr.data_addr, buf, words);
2586 /* Transfer trailing 1 byte, if any. */
2587 if (unlikely(buflen & 0x01)) {
2588 u16 align_buf[1] = { 0 };
2589 unsigned char *trailing_buf = buf + buflen - 1;
2591 if (write_data) {
2592 memcpy(align_buf, trailing_buf, 1);
2593 outw(le16_to_cpu(align_buf[0]), ap->ioaddr.data_addr);
2594 } else {
2595 align_buf[0] = cpu_to_le16(inw(ap->ioaddr.data_addr));
2596 memcpy(trailing_buf, align_buf, 1);
2602 * ata_data_xfer - Transfer data from/to the data register.
2603 * @ap: port to read/write
2604 * @buf: data buffer
2605 * @buflen: buffer length
2606 * @do_write: read/write
2608 * Transfer data from/to the device data register.
2610 * LOCKING:
2611 * Inherited from caller.
2615 static void ata_data_xfer(struct ata_port *ap, unsigned char *buf,
2616 unsigned int buflen, int do_write)
2618 if (ap->flags & ATA_FLAG_MMIO)
2619 ata_mmio_data_xfer(ap, buf, buflen, do_write);
2620 else
2621 ata_pio_data_xfer(ap, buf, buflen, do_write);
2625 * ata_pio_sector - Transfer ATA_SECT_SIZE (512 bytes) of data.
2626 * @qc: Command on going
2628 * Transfer ATA_SECT_SIZE of data from/to the ATA device.
2630 * LOCKING:
2631 * Inherited from caller.
2634 static void ata_pio_sector(struct ata_queued_cmd *qc)
2636 int do_write = (qc->tf.flags & ATA_TFLAG_WRITE);
2637 struct scatterlist *sg = qc->sg;
2638 struct ata_port *ap = qc->ap;
2639 struct page *page;
2640 unsigned int offset;
2641 unsigned char *buf;
2643 if (qc->cursect == (qc->nsect - 1))
2644 ap->pio_task_state = PIO_ST_LAST;
2646 page = sg[qc->cursg].page;
2647 offset = sg[qc->cursg].offset + qc->cursg_ofs * ATA_SECT_SIZE;
2649 /* get the current page and offset */
2650 page = nth_page(page, (offset >> PAGE_SHIFT));
2651 offset %= PAGE_SIZE;
2653 buf = kmap(page) + offset;
2655 qc->cursect++;
2656 qc->cursg_ofs++;
2658 if ((qc->cursg_ofs * ATA_SECT_SIZE) == (&sg[qc->cursg])->length) {
2659 qc->cursg++;
2660 qc->cursg_ofs = 0;
2663 DPRINTK("data %s\n", qc->tf.flags & ATA_TFLAG_WRITE ? "write" : "read");
2665 /* do the actual data transfer */
2666 do_write = (qc->tf.flags & ATA_TFLAG_WRITE);
2667 ata_data_xfer(ap, buf, ATA_SECT_SIZE, do_write);
2669 kunmap(page);
2673 * __atapi_pio_bytes - Transfer data from/to the ATAPI device.
2674 * @qc: Command on going
2675 * @bytes: number of bytes
2677 * Transfer Transfer data from/to the ATAPI device.
2679 * LOCKING:
2680 * Inherited from caller.
2684 static void __atapi_pio_bytes(struct ata_queued_cmd *qc, unsigned int bytes)
2686 int do_write = (qc->tf.flags & ATA_TFLAG_WRITE);
2687 struct scatterlist *sg = qc->sg;
2688 struct ata_port *ap = qc->ap;
2689 struct page *page;
2690 unsigned char *buf;
2691 unsigned int offset, count;
2693 if (qc->curbytes + bytes >= qc->nbytes)
2694 ap->pio_task_state = PIO_ST_LAST;
2696 next_sg:
2697 if (unlikely(qc->cursg >= qc->n_elem)) {
2699 * The end of qc->sg is reached and the device expects
2700 * more data to transfer. In order not to overrun qc->sg
2701 * and fulfill length specified in the byte count register,
2702 * - for read case, discard trailing data from the device
2703 * - for write case, padding zero data to the device
2705 u16 pad_buf[1] = { 0 };
2706 unsigned int words = bytes >> 1;
2707 unsigned int i;
2709 if (words) /* warning if bytes > 1 */
2710 printk(KERN_WARNING "ata%u: %u bytes trailing data\n",
2711 ap->id, bytes);
2713 for (i = 0; i < words; i++)
2714 ata_data_xfer(ap, (unsigned char*)pad_buf, 2, do_write);
2716 ap->pio_task_state = PIO_ST_LAST;
2717 return;
2720 sg = &qc->sg[qc->cursg];
2722 page = sg->page;
2723 offset = sg->offset + qc->cursg_ofs;
2725 /* get the current page and offset */
2726 page = nth_page(page, (offset >> PAGE_SHIFT));
2727 offset %= PAGE_SIZE;
2729 /* don't overrun current sg */
2730 count = min(sg->length - qc->cursg_ofs, bytes);
2732 /* don't cross page boundaries */
2733 count = min(count, (unsigned int)PAGE_SIZE - offset);
2735 buf = kmap(page) + offset;
2737 bytes -= count;
2738 qc->curbytes += count;
2739 qc->cursg_ofs += count;
2741 if (qc->cursg_ofs == sg->length) {
2742 qc->cursg++;
2743 qc->cursg_ofs = 0;
2746 DPRINTK("data %s\n", qc->tf.flags & ATA_TFLAG_WRITE ? "write" : "read");
2748 /* do the actual data transfer */
2749 ata_data_xfer(ap, buf, count, do_write);
2751 kunmap(page);
2753 if (bytes)
2754 goto next_sg;
2758 * atapi_pio_bytes - Transfer data from/to the ATAPI device.
2759 * @qc: Command on going
2761 * Transfer Transfer data from/to the ATAPI device.
2763 * LOCKING:
2764 * Inherited from caller.
2768 static void atapi_pio_bytes(struct ata_queued_cmd *qc)
2770 struct ata_port *ap = qc->ap;
2771 struct ata_device *dev = qc->dev;
2772 unsigned int ireason, bc_lo, bc_hi, bytes;
2773 int i_write, do_write = (qc->tf.flags & ATA_TFLAG_WRITE) ? 1 : 0;
2775 ap->ops->tf_read(ap, &qc->tf);
2776 ireason = qc->tf.nsect;
2777 bc_lo = qc->tf.lbam;
2778 bc_hi = qc->tf.lbah;
2779 bytes = (bc_hi << 8) | bc_lo;
2781 /* shall be cleared to zero, indicating xfer of data */
2782 if (ireason & (1 << 0))
2783 goto err_out;
2785 /* make sure transfer direction matches expected */
2786 i_write = ((ireason & (1 << 1)) == 0) ? 1 : 0;
2787 if (do_write != i_write)
2788 goto err_out;
2790 __atapi_pio_bytes(qc, bytes);
2792 return;
2794 err_out:
2795 printk(KERN_INFO "ata%u: dev %u: ATAPI check failed\n",
2796 ap->id, dev->devno);
2797 ap->pio_task_state = PIO_ST_ERR;
2801 * ata_pio_sector -
2802 * @ap:
2804 * LOCKING:
2805 * None. (executing in kernel thread context)
2808 static void ata_pio_block(struct ata_port *ap)
2810 struct ata_queued_cmd *qc;
2811 u8 status;
2814 * This is purely hueristic. This is a fast path.
2815 * Sometimes when we enter, BSY will be cleared in
2816 * a chk-status or two. If not, the drive is probably seeking
2817 * or something. Snooze for a couple msecs, then
2818 * chk-status again. If still busy, fall back to
2819 * PIO_ST_POLL state.
2821 status = ata_busy_wait(ap, ATA_BUSY, 5);
2822 if (status & ATA_BUSY) {
2823 msleep(2);
2824 status = ata_busy_wait(ap, ATA_BUSY, 10);
2825 if (status & ATA_BUSY) {
2826 ap->pio_task_state = PIO_ST_POLL;
2827 ap->pio_task_timeout = jiffies + ATA_TMOUT_PIO;
2828 return;
2832 qc = ata_qc_from_tag(ap, ap->active_tag);
2833 assert(qc != NULL);
2835 if (is_atapi_taskfile(&qc->tf)) {
2836 /* no more data to transfer or unsupported ATAPI command */
2837 if ((status & ATA_DRQ) == 0) {
2838 ap->pio_task_state = PIO_ST_IDLE;
2840 ata_poll_qc_complete(qc, status);
2841 return;
2844 atapi_pio_bytes(qc);
2845 } else {
2846 /* handle BSY=0, DRQ=0 as error */
2847 if ((status & ATA_DRQ) == 0) {
2848 ap->pio_task_state = PIO_ST_ERR;
2849 return;
2852 ata_pio_sector(qc);
2856 static void ata_pio_error(struct ata_port *ap)
2858 struct ata_queued_cmd *qc;
2859 u8 drv_stat;
2861 qc = ata_qc_from_tag(ap, ap->active_tag);
2862 assert(qc != NULL);
2864 drv_stat = ata_chk_status(ap);
2865 printk(KERN_WARNING "ata%u: PIO error, drv_stat 0x%x\n",
2866 ap->id, drv_stat);
2868 ap->pio_task_state = PIO_ST_IDLE;
2870 ata_poll_qc_complete(qc, drv_stat | ATA_ERR);
2873 static void ata_pio_task(void *_data)
2875 struct ata_port *ap = _data;
2876 unsigned long timeout = 0;
2878 switch (ap->pio_task_state) {
2879 case PIO_ST_IDLE:
2880 return;
2882 case PIO_ST:
2883 ata_pio_block(ap);
2884 break;
2886 case PIO_ST_LAST:
2887 ata_pio_complete(ap);
2888 break;
2890 case PIO_ST_POLL:
2891 case PIO_ST_LAST_POLL:
2892 timeout = ata_pio_poll(ap);
2893 break;
2895 case PIO_ST_TMOUT:
2896 case PIO_ST_ERR:
2897 ata_pio_error(ap);
2898 return;
2901 if (timeout)
2902 queue_delayed_work(ata_wq, &ap->pio_task,
2903 timeout);
2904 else
2905 queue_work(ata_wq, &ap->pio_task);
2908 static void atapi_request_sense(struct ata_port *ap, struct ata_device *dev,
2909 struct scsi_cmnd *cmd)
2911 DECLARE_COMPLETION(wait);
2912 struct ata_queued_cmd *qc;
2913 unsigned long flags;
2914 int rc;
2916 DPRINTK("ATAPI request sense\n");
2918 qc = ata_qc_new_init(ap, dev);
2919 BUG_ON(qc == NULL);
2921 /* FIXME: is this needed? */
2922 memset(cmd->sense_buffer, 0, sizeof(cmd->sense_buffer));
2924 ata_sg_init_one(qc, cmd->sense_buffer, sizeof(cmd->sense_buffer));
2925 qc->dma_dir = DMA_FROM_DEVICE;
2927 memset(&qc->cdb, 0, ap->cdb_len);
2928 qc->cdb[0] = REQUEST_SENSE;
2929 qc->cdb[4] = SCSI_SENSE_BUFFERSIZE;
2931 qc->tf.flags |= ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE;
2932 qc->tf.command = ATA_CMD_PACKET;
2934 qc->tf.protocol = ATA_PROT_ATAPI;
2935 qc->tf.lbam = (8 * 1024) & 0xff;
2936 qc->tf.lbah = (8 * 1024) >> 8;
2937 qc->nbytes = SCSI_SENSE_BUFFERSIZE;
2939 qc->waiting = &wait;
2940 qc->complete_fn = ata_qc_complete_noop;
2942 spin_lock_irqsave(&ap->host_set->lock, flags);
2943 rc = ata_qc_issue(qc);
2944 spin_unlock_irqrestore(&ap->host_set->lock, flags);
2946 if (rc)
2947 ata_port_disable(ap);
2948 else
2949 wait_for_completion(&wait);
2951 DPRINTK("EXIT\n");
2955 * ata_qc_timeout - Handle timeout of queued command
2956 * @qc: Command that timed out
2958 * Some part of the kernel (currently, only the SCSI layer)
2959 * has noticed that the active command on port @ap has not
2960 * completed after a specified length of time. Handle this
2961 * condition by disabling DMA (if necessary) and completing
2962 * transactions, with error if necessary.
2964 * This also handles the case of the "lost interrupt", where
2965 * for some reason (possibly hardware bug, possibly driver bug)
2966 * an interrupt was not delivered to the driver, even though the
2967 * transaction completed successfully.
2969 * LOCKING:
2970 * Inherited from SCSI layer (none, can sleep)
2973 static void ata_qc_timeout(struct ata_queued_cmd *qc)
2975 struct ata_port *ap = qc->ap;
2976 struct ata_host_set *host_set = ap->host_set;
2977 struct ata_device *dev = qc->dev;
2978 u8 host_stat = 0, drv_stat;
2979 unsigned long flags;
2981 DPRINTK("ENTER\n");
2983 /* FIXME: doesn't this conflict with timeout handling? */
2984 if (qc->dev->class == ATA_DEV_ATAPI && qc->scsicmd) {
2985 struct scsi_cmnd *cmd = qc->scsicmd;
2987 if (!(cmd->eh_eflags & SCSI_EH_CANCEL_CMD)) {
2989 /* finish completing original command */
2990 spin_lock_irqsave(&host_set->lock, flags);
2991 __ata_qc_complete(qc);
2992 spin_unlock_irqrestore(&host_set->lock, flags);
2994 atapi_request_sense(ap, dev, cmd);
2996 cmd->result = (CHECK_CONDITION << 1) | (DID_OK << 16);
2997 scsi_finish_command(cmd);
2999 goto out;
3003 spin_lock_irqsave(&host_set->lock, flags);
3005 /* hack alert! We cannot use the supplied completion
3006 * function from inside the ->eh_strategy_handler() thread.
3007 * libata is the only user of ->eh_strategy_handler() in
3008 * any kernel, so the default scsi_done() assumes it is
3009 * not being called from the SCSI EH.
3011 qc->scsidone = scsi_finish_command;
3013 switch (qc->tf.protocol) {
3015 case ATA_PROT_DMA:
3016 case ATA_PROT_ATAPI_DMA:
3017 host_stat = ap->ops->bmdma_status(ap);
3019 /* before we do anything else, clear DMA-Start bit */
3020 ap->ops->bmdma_stop(ap);
3022 /* fall through */
3024 default:
3025 ata_altstatus(ap);
3026 drv_stat = ata_chk_status(ap);
3028 /* ack bmdma irq events */
3029 ap->ops->irq_clear(ap);
3031 printk(KERN_ERR "ata%u: command 0x%x timeout, stat 0x%x host_stat 0x%x\n",
3032 ap->id, qc->tf.command, drv_stat, host_stat);
3034 /* complete taskfile transaction */
3035 ata_qc_complete(qc, drv_stat);
3036 break;
3039 spin_unlock_irqrestore(&host_set->lock, flags);
3041 out:
3042 DPRINTK("EXIT\n");
3046 * ata_eng_timeout - Handle timeout of queued command
3047 * @ap: Port on which timed-out command is active
3049 * Some part of the kernel (currently, only the SCSI layer)
3050 * has noticed that the active command on port @ap has not
3051 * completed after a specified length of time. Handle this
3052 * condition by disabling DMA (if necessary) and completing
3053 * transactions, with error if necessary.
3055 * This also handles the case of the "lost interrupt", where
3056 * for some reason (possibly hardware bug, possibly driver bug)
3057 * an interrupt was not delivered to the driver, even though the
3058 * transaction completed successfully.
3060 * LOCKING:
3061 * Inherited from SCSI layer (none, can sleep)
3064 void ata_eng_timeout(struct ata_port *ap)
3066 struct ata_queued_cmd *qc;
3068 DPRINTK("ENTER\n");
3070 qc = ata_qc_from_tag(ap, ap->active_tag);
3071 if (!qc) {
3072 printk(KERN_ERR "ata%u: BUG: timeout without command\n",
3073 ap->id);
3074 goto out;
3077 ata_qc_timeout(qc);
3079 out:
3080 DPRINTK("EXIT\n");
3084 * ata_qc_new - Request an available ATA command, for queueing
3085 * @ap: Port associated with device @dev
3086 * @dev: Device from whom we request an available command structure
3088 * LOCKING:
3089 * None.
3092 static struct ata_queued_cmd *ata_qc_new(struct ata_port *ap)
3094 struct ata_queued_cmd *qc = NULL;
3095 unsigned int i;
3097 for (i = 0; i < ATA_MAX_QUEUE; i++)
3098 if (!test_and_set_bit(i, &ap->qactive)) {
3099 qc = ata_qc_from_tag(ap, i);
3100 break;
3103 if (qc)
3104 qc->tag = i;
3106 return qc;
3110 * ata_qc_new_init - Request an available ATA command, and initialize it
3111 * @ap: Port associated with device @dev
3112 * @dev: Device from whom we request an available command structure
3114 * LOCKING:
3115 * None.
3118 struct ata_queued_cmd *ata_qc_new_init(struct ata_port *ap,
3119 struct ata_device *dev)
3121 struct ata_queued_cmd *qc;
3123 qc = ata_qc_new(ap);
3124 if (qc) {
3125 qc->sg = NULL;
3126 qc->flags = 0;
3127 qc->scsicmd = NULL;
3128 qc->ap = ap;
3129 qc->dev = dev;
3130 qc->cursect = qc->cursg = qc->cursg_ofs = 0;
3131 qc->nsect = 0;
3132 qc->nbytes = qc->curbytes = 0;
3134 ata_tf_init(ap, &qc->tf, dev->devno);
3136 if (dev->flags & ATA_DFLAG_LBA48)
3137 qc->tf.flags |= ATA_TFLAG_LBA48;
3140 return qc;
3143 static int ata_qc_complete_noop(struct ata_queued_cmd *qc, u8 drv_stat)
3145 return 0;
3148 static void __ata_qc_complete(struct ata_queued_cmd *qc)
3150 struct ata_port *ap = qc->ap;
3151 unsigned int tag, do_clear = 0;
3153 qc->flags = 0;
3154 tag = qc->tag;
3155 if (likely(ata_tag_valid(tag))) {
3156 if (tag == ap->active_tag)
3157 ap->active_tag = ATA_TAG_POISON;
3158 qc->tag = ATA_TAG_POISON;
3159 do_clear = 1;
3162 if (qc->waiting) {
3163 struct completion *waiting = qc->waiting;
3164 qc->waiting = NULL;
3165 complete(waiting);
3168 if (likely(do_clear))
3169 clear_bit(tag, &ap->qactive);
3173 * ata_qc_free - free unused ata_queued_cmd
3174 * @qc: Command to complete
3176 * Designed to free unused ata_queued_cmd object
3177 * in case something prevents using it.
3179 * LOCKING:
3180 * spin_lock_irqsave(host_set lock)
3183 void ata_qc_free(struct ata_queued_cmd *qc)
3185 assert(qc != NULL); /* ata_qc_from_tag _might_ return NULL */
3186 assert(qc->waiting == NULL); /* nothing should be waiting */
3188 __ata_qc_complete(qc);
3192 * ata_qc_complete - Complete an active ATA command
3193 * @qc: Command to complete
3194 * @drv_stat: ATA Status register contents
3196 * Indicate to the mid and upper layers that an ATA
3197 * command has completed, with either an ok or not-ok status.
3199 * LOCKING:
3200 * spin_lock_irqsave(host_set lock)
3204 void ata_qc_complete(struct ata_queued_cmd *qc, u8 drv_stat)
3206 int rc;
3208 assert(qc != NULL); /* ata_qc_from_tag _might_ return NULL */
3209 assert(qc->flags & ATA_QCFLAG_ACTIVE);
3211 if (likely(qc->flags & ATA_QCFLAG_DMAMAP))
3212 ata_sg_clean(qc);
3214 /* atapi: mark qc as inactive to prevent the interrupt handler
3215 * from completing the command twice later, before the error handler
3216 * is called. (when rc != 0 and atapi request sense is needed)
3218 qc->flags &= ~ATA_QCFLAG_ACTIVE;
3220 /* call completion callback */
3221 rc = qc->complete_fn(qc, drv_stat);
3223 /* if callback indicates not to complete command (non-zero),
3224 * return immediately
3226 if (rc != 0)
3227 return;
3229 __ata_qc_complete(qc);
3231 VPRINTK("EXIT\n");
3234 static inline int ata_should_dma_map(struct ata_queued_cmd *qc)
3236 struct ata_port *ap = qc->ap;
3238 switch (qc->tf.protocol) {
3239 case ATA_PROT_DMA:
3240 case ATA_PROT_ATAPI_DMA:
3241 return 1;
3243 case ATA_PROT_ATAPI:
3244 case ATA_PROT_PIO:
3245 case ATA_PROT_PIO_MULT:
3246 if (ap->flags & ATA_FLAG_PIO_DMA)
3247 return 1;
3249 /* fall through */
3251 default:
3252 return 0;
3255 /* never reached */
3259 * ata_qc_issue - issue taskfile to device
3260 * @qc: command to issue to device
3262 * Prepare an ATA command to submission to device.
3263 * This includes mapping the data into a DMA-able
3264 * area, filling in the S/G table, and finally
3265 * writing the taskfile to hardware, starting the command.
3267 * LOCKING:
3268 * spin_lock_irqsave(host_set lock)
3270 * RETURNS:
3271 * Zero on success, negative on error.
3274 int ata_qc_issue(struct ata_queued_cmd *qc)
3276 struct ata_port *ap = qc->ap;
3278 if (ata_should_dma_map(qc)) {
3279 if (qc->flags & ATA_QCFLAG_SG) {
3280 if (ata_sg_setup(qc))
3281 goto err_out;
3282 } else if (qc->flags & ATA_QCFLAG_SINGLE) {
3283 if (ata_sg_setup_one(qc))
3284 goto err_out;
3286 } else {
3287 qc->flags &= ~ATA_QCFLAG_DMAMAP;
3290 ap->ops->qc_prep(qc);
3292 qc->ap->active_tag = qc->tag;
3293 qc->flags |= ATA_QCFLAG_ACTIVE;
3295 return ap->ops->qc_issue(qc);
3297 err_out:
3298 return -1;
3303 * ata_qc_issue_prot - issue taskfile to device in proto-dependent manner
3304 * @qc: command to issue to device
3306 * Using various libata functions and hooks, this function
3307 * starts an ATA command. ATA commands are grouped into
3308 * classes called "protocols", and issuing each type of protocol
3309 * is slightly different.
3311 * May be used as the qc_issue() entry in ata_port_operations.
3313 * LOCKING:
3314 * spin_lock_irqsave(host_set lock)
3316 * RETURNS:
3317 * Zero on success, negative on error.
3320 int ata_qc_issue_prot(struct ata_queued_cmd *qc)
3322 struct ata_port *ap = qc->ap;
3324 ata_dev_select(ap, qc->dev->devno, 1, 0);
3326 switch (qc->tf.protocol) {
3327 case ATA_PROT_NODATA:
3328 ata_tf_to_host_nolock(ap, &qc->tf);
3329 break;
3331 case ATA_PROT_DMA:
3332 ap->ops->tf_load(ap, &qc->tf); /* load tf registers */
3333 ap->ops->bmdma_setup(qc); /* set up bmdma */
3334 ap->ops->bmdma_start(qc); /* initiate bmdma */
3335 break;
3337 case ATA_PROT_PIO: /* load tf registers, initiate polling pio */
3338 ata_qc_set_polling(qc);
3339 ata_tf_to_host_nolock(ap, &qc->tf);
3340 ap->pio_task_state = PIO_ST;
3341 queue_work(ata_wq, &ap->pio_task);
3342 break;
3344 case ATA_PROT_ATAPI:
3345 ata_qc_set_polling(qc);
3346 ata_tf_to_host_nolock(ap, &qc->tf);
3347 queue_work(ata_wq, &ap->packet_task);
3348 break;
3350 case ATA_PROT_ATAPI_NODATA:
3351 ap->flags |= ATA_FLAG_NOINTR;
3352 ata_tf_to_host_nolock(ap, &qc->tf);
3353 queue_work(ata_wq, &ap->packet_task);
3354 break;
3356 case ATA_PROT_ATAPI_DMA:
3357 ap->flags |= ATA_FLAG_NOINTR;
3358 ap->ops->tf_load(ap, &qc->tf); /* load tf registers */
3359 ap->ops->bmdma_setup(qc); /* set up bmdma */
3360 queue_work(ata_wq, &ap->packet_task);
3361 break;
3363 default:
3364 WARN_ON(1);
3365 return -1;
3368 return 0;
3372 * ata_bmdma_setup_mmio - Set up PCI IDE BMDMA transaction
3373 * @qc: Info associated with this ATA transaction.
3375 * LOCKING:
3376 * spin_lock_irqsave(host_set lock)
3379 static void ata_bmdma_setup_mmio (struct ata_queued_cmd *qc)
3381 struct ata_port *ap = qc->ap;
3382 unsigned int rw = (qc->tf.flags & ATA_TFLAG_WRITE);
3383 u8 dmactl;
3384 void __iomem *mmio = (void __iomem *) ap->ioaddr.bmdma_addr;
3386 /* load PRD table addr. */
3387 mb(); /* make sure PRD table writes are visible to controller */
3388 writel(ap->prd_dma, mmio + ATA_DMA_TABLE_OFS);
3390 /* specify data direction, triple-check start bit is clear */
3391 dmactl = readb(mmio + ATA_DMA_CMD);
3392 dmactl &= ~(ATA_DMA_WR | ATA_DMA_START);
3393 if (!rw)
3394 dmactl |= ATA_DMA_WR;
3395 writeb(dmactl, mmio + ATA_DMA_CMD);
3397 /* issue r/w command */
3398 ap->ops->exec_command(ap, &qc->tf);
3402 * ata_bmdma_start - Start a PCI IDE BMDMA transaction
3403 * @qc: Info associated with this ATA transaction.
3405 * LOCKING:
3406 * spin_lock_irqsave(host_set lock)
3409 static void ata_bmdma_start_mmio (struct ata_queued_cmd *qc)
3411 struct ata_port *ap = qc->ap;
3412 void __iomem *mmio = (void __iomem *) ap->ioaddr.bmdma_addr;
3413 u8 dmactl;
3415 /* start host DMA transaction */
3416 dmactl = readb(mmio + ATA_DMA_CMD);
3417 writeb(dmactl | ATA_DMA_START, mmio + ATA_DMA_CMD);
3419 /* Strictly, one may wish to issue a readb() here, to
3420 * flush the mmio write. However, control also passes
3421 * to the hardware at this point, and it will interrupt
3422 * us when we are to resume control. So, in effect,
3423 * we don't care when the mmio write flushes.
3424 * Further, a read of the DMA status register _immediately_
3425 * following the write may not be what certain flaky hardware
3426 * is expected, so I think it is best to not add a readb()
3427 * without first all the MMIO ATA cards/mobos.
3428 * Or maybe I'm just being paranoid.
3433 * ata_bmdma_setup_pio - Set up PCI IDE BMDMA transaction (PIO)
3434 * @qc: Info associated with this ATA transaction.
3436 * LOCKING:
3437 * spin_lock_irqsave(host_set lock)
3440 static void ata_bmdma_setup_pio (struct ata_queued_cmd *qc)
3442 struct ata_port *ap = qc->ap;
3443 unsigned int rw = (qc->tf.flags & ATA_TFLAG_WRITE);
3444 u8 dmactl;
3446 /* load PRD table addr. */
3447 outl(ap->prd_dma, ap->ioaddr.bmdma_addr + ATA_DMA_TABLE_OFS);
3449 /* specify data direction, triple-check start bit is clear */
3450 dmactl = inb(ap->ioaddr.bmdma_addr + ATA_DMA_CMD);
3451 dmactl &= ~(ATA_DMA_WR | ATA_DMA_START);
3452 if (!rw)
3453 dmactl |= ATA_DMA_WR;
3454 outb(dmactl, ap->ioaddr.bmdma_addr + ATA_DMA_CMD);
3456 /* issue r/w command */
3457 ap->ops->exec_command(ap, &qc->tf);
3461 * ata_bmdma_start_pio - Start a PCI IDE BMDMA transaction (PIO)
3462 * @qc: Info associated with this ATA transaction.
3464 * LOCKING:
3465 * spin_lock_irqsave(host_set lock)
3468 static void ata_bmdma_start_pio (struct ata_queued_cmd *qc)
3470 struct ata_port *ap = qc->ap;
3471 u8 dmactl;
3473 /* start host DMA transaction */
3474 dmactl = inb(ap->ioaddr.bmdma_addr + ATA_DMA_CMD);
3475 outb(dmactl | ATA_DMA_START,
3476 ap->ioaddr.bmdma_addr + ATA_DMA_CMD);
3481 * ata_bmdma_start - Start a PCI IDE BMDMA transaction
3482 * @qc: Info associated with this ATA transaction.
3484 * Writes the ATA_DMA_START flag to the DMA command register.
3486 * May be used as the bmdma_start() entry in ata_port_operations.
3488 * LOCKING:
3489 * spin_lock_irqsave(host_set lock)
3491 void ata_bmdma_start(struct ata_queued_cmd *qc)
3493 if (qc->ap->flags & ATA_FLAG_MMIO)
3494 ata_bmdma_start_mmio(qc);
3495 else
3496 ata_bmdma_start_pio(qc);
3501 * ata_bmdma_setup - Set up PCI IDE BMDMA transaction
3502 * @qc: Info associated with this ATA transaction.
3504 * Writes address of PRD table to device's PRD Table Address
3505 * register, sets the DMA control register, and calls
3506 * ops->exec_command() to start the transfer.
3508 * May be used as the bmdma_setup() entry in ata_port_operations.
3510 * LOCKING:
3511 * spin_lock_irqsave(host_set lock)
3513 void ata_bmdma_setup(struct ata_queued_cmd *qc)
3515 if (qc->ap->flags & ATA_FLAG_MMIO)
3516 ata_bmdma_setup_mmio(qc);
3517 else
3518 ata_bmdma_setup_pio(qc);
3523 * ata_bmdma_irq_clear - Clear PCI IDE BMDMA interrupt.
3524 * @ap: Port associated with this ATA transaction.
3526 * Clear interrupt and error flags in DMA status register.
3528 * May be used as the irq_clear() entry in ata_port_operations.
3530 * LOCKING:
3531 * spin_lock_irqsave(host_set lock)
3534 void ata_bmdma_irq_clear(struct ata_port *ap)
3536 if (ap->flags & ATA_FLAG_MMIO) {
3537 void __iomem *mmio = ((void __iomem *) ap->ioaddr.bmdma_addr) + ATA_DMA_STATUS;
3538 writeb(readb(mmio), mmio);
3539 } else {
3540 unsigned long addr = ap->ioaddr.bmdma_addr + ATA_DMA_STATUS;
3541 outb(inb(addr), addr);
3548 * ata_bmdma_status - Read PCI IDE BMDMA status
3549 * @ap: Port associated with this ATA transaction.
3551 * Read and return BMDMA status register.
3553 * May be used as the bmdma_status() entry in ata_port_operations.
3555 * LOCKING:
3556 * spin_lock_irqsave(host_set lock)
3559 u8 ata_bmdma_status(struct ata_port *ap)
3561 u8 host_stat;
3562 if (ap->flags & ATA_FLAG_MMIO) {
3563 void __iomem *mmio = (void __iomem *) ap->ioaddr.bmdma_addr;
3564 host_stat = readb(mmio + ATA_DMA_STATUS);
3565 } else
3566 host_stat = inb(ap->ioaddr.bmdma_addr + ATA_DMA_STATUS);
3567 return host_stat;
3572 * ata_bmdma_stop - Stop PCI IDE BMDMA transfer
3573 * @ap: Port associated with this ATA transaction.
3575 * Clears the ATA_DMA_START flag in the dma control register
3577 * May be used as the bmdma_stop() entry in ata_port_operations.
3579 * LOCKING:
3580 * spin_lock_irqsave(host_set lock)
3583 void ata_bmdma_stop(struct ata_port *ap)
3585 if (ap->flags & ATA_FLAG_MMIO) {
3586 void __iomem *mmio = (void __iomem *) ap->ioaddr.bmdma_addr;
3588 /* clear start/stop bit */
3589 writeb(readb(mmio + ATA_DMA_CMD) & ~ATA_DMA_START,
3590 mmio + ATA_DMA_CMD);
3591 } else {
3592 /* clear start/stop bit */
3593 outb(inb(ap->ioaddr.bmdma_addr + ATA_DMA_CMD) & ~ATA_DMA_START,
3594 ap->ioaddr.bmdma_addr + ATA_DMA_CMD);
3597 /* one-PIO-cycle guaranteed wait, per spec, for HDMA1:0 transition */
3598 ata_altstatus(ap); /* dummy read */
3602 * ata_host_intr - Handle host interrupt for given (port, task)
3603 * @ap: Port on which interrupt arrived (possibly...)
3604 * @qc: Taskfile currently active in engine
3606 * Handle host interrupt for given queued command. Currently,
3607 * only DMA interrupts are handled. All other commands are
3608 * handled via polling with interrupts disabled (nIEN bit).
3610 * LOCKING:
3611 * spin_lock_irqsave(host_set lock)
3613 * RETURNS:
3614 * One if interrupt was handled, zero if not (shared irq).
3617 inline unsigned int ata_host_intr (struct ata_port *ap,
3618 struct ata_queued_cmd *qc)
3620 u8 status, host_stat;
3622 switch (qc->tf.protocol) {
3624 case ATA_PROT_DMA:
3625 case ATA_PROT_ATAPI_DMA:
3626 case ATA_PROT_ATAPI:
3627 /* check status of DMA engine */
3628 host_stat = ap->ops->bmdma_status(ap);
3629 VPRINTK("ata%u: host_stat 0x%X\n", ap->id, host_stat);
3631 /* if it's not our irq... */
3632 if (!(host_stat & ATA_DMA_INTR))
3633 goto idle_irq;
3635 /* before we do anything else, clear DMA-Start bit */
3636 ap->ops->bmdma_stop(ap);
3638 /* fall through */
3640 case ATA_PROT_ATAPI_NODATA:
3641 case ATA_PROT_NODATA:
3642 /* check altstatus */
3643 status = ata_altstatus(ap);
3644 if (status & ATA_BUSY)
3645 goto idle_irq;
3647 /* check main status, clearing INTRQ */
3648 status = ata_chk_status(ap);
3649 if (unlikely(status & ATA_BUSY))
3650 goto idle_irq;
3651 DPRINTK("ata%u: protocol %d (dev_stat 0x%X)\n",
3652 ap->id, qc->tf.protocol, status);
3654 /* ack bmdma irq events */
3655 ap->ops->irq_clear(ap);
3657 /* complete taskfile transaction */
3658 ata_qc_complete(qc, status);
3659 break;
3661 default:
3662 goto idle_irq;
3665 return 1; /* irq handled */
3667 idle_irq:
3668 ap->stats.idle_irq++;
3670 #ifdef ATA_IRQ_TRAP
3671 if ((ap->stats.idle_irq % 1000) == 0) {
3672 handled = 1;
3673 ata_irq_ack(ap, 0); /* debug trap */
3674 printk(KERN_WARNING "ata%d: irq trap\n", ap->id);
3676 #endif
3677 return 0; /* irq not handled */
3681 * ata_interrupt - Default ATA host interrupt handler
3682 * @irq: irq line (unused)
3683 * @dev_instance: pointer to our ata_host_set information structure
3684 * @regs: unused
3686 * Default interrupt handler for PCI IDE devices. Calls
3687 * ata_host_intr() for each port that is not disabled.
3689 * LOCKING:
3690 * Obtains host_set lock during operation.
3692 * RETURNS:
3693 * IRQ_NONE or IRQ_HANDLED.
3697 irqreturn_t ata_interrupt (int irq, void *dev_instance, struct pt_regs *regs)
3699 struct ata_host_set *host_set = dev_instance;
3700 unsigned int i;
3701 unsigned int handled = 0;
3702 unsigned long flags;
3704 /* TODO: make _irqsave conditional on x86 PCI IDE legacy mode */
3705 spin_lock_irqsave(&host_set->lock, flags);
3707 for (i = 0; i < host_set->n_ports; i++) {
3708 struct ata_port *ap;
3710 ap = host_set->ports[i];
3711 if (ap &&
3712 !(ap->flags & (ATA_FLAG_PORT_DISABLED | ATA_FLAG_NOINTR))) {
3713 struct ata_queued_cmd *qc;
3715 qc = ata_qc_from_tag(ap, ap->active_tag);
3716 if (qc && (!(qc->tf.ctl & ATA_NIEN)) &&
3717 (qc->flags & ATA_QCFLAG_ACTIVE))
3718 handled |= ata_host_intr(ap, qc);
3722 spin_unlock_irqrestore(&host_set->lock, flags);
3724 return IRQ_RETVAL(handled);
3728 * atapi_packet_task - Write CDB bytes to hardware
3729 * @_data: Port to which ATAPI device is attached.
3731 * When device has indicated its readiness to accept
3732 * a CDB, this function is called. Send the CDB.
3733 * If DMA is to be performed, exit immediately.
3734 * Otherwise, we are in polling mode, so poll
3735 * status under operation succeeds or fails.
3737 * LOCKING:
3738 * Kernel thread context (may sleep)
3741 static void atapi_packet_task(void *_data)
3743 struct ata_port *ap = _data;
3744 struct ata_queued_cmd *qc;
3745 u8 status;
3747 qc = ata_qc_from_tag(ap, ap->active_tag);
3748 assert(qc != NULL);
3749 assert(qc->flags & ATA_QCFLAG_ACTIVE);
3751 /* sleep-wait for BSY to clear */
3752 DPRINTK("busy wait\n");
3753 if (ata_busy_sleep(ap, ATA_TMOUT_CDB_QUICK, ATA_TMOUT_CDB))
3754 goto err_out;
3756 /* make sure DRQ is set */
3757 status = ata_chk_status(ap);
3758 if ((status & (ATA_BUSY | ATA_DRQ)) != ATA_DRQ)
3759 goto err_out;
3761 /* send SCSI cdb */
3762 DPRINTK("send cdb\n");
3763 assert(ap->cdb_len >= 12);
3765 if (qc->tf.protocol == ATA_PROT_ATAPI_DMA ||
3766 qc->tf.protocol == ATA_PROT_ATAPI_NODATA) {
3767 unsigned long flags;
3769 /* Once we're done issuing command and kicking bmdma,
3770 * irq handler takes over. To not lose irq, we need
3771 * to clear NOINTR flag before sending cdb, but
3772 * interrupt handler shouldn't be invoked before we're
3773 * finished. Hence, the following locking.
3775 spin_lock_irqsave(&ap->host_set->lock, flags);
3776 ap->flags &= ~ATA_FLAG_NOINTR;
3777 ata_data_xfer(ap, qc->cdb, ap->cdb_len, 1);
3778 if (qc->tf.protocol == ATA_PROT_ATAPI_DMA)
3779 ap->ops->bmdma_start(qc); /* initiate bmdma */
3780 spin_unlock_irqrestore(&ap->host_set->lock, flags);
3781 } else {
3782 ata_data_xfer(ap, qc->cdb, ap->cdb_len, 1);
3784 /* PIO commands are handled by polling */
3785 ap->pio_task_state = PIO_ST;
3786 queue_work(ata_wq, &ap->pio_task);
3789 return;
3791 err_out:
3792 ata_poll_qc_complete(qc, ATA_ERR);
3797 * ata_port_start - Set port up for dma.
3798 * @ap: Port to initialize
3800 * Called just after data structures for each port are
3801 * initialized. Allocates space for PRD table.
3803 * May be used as the port_start() entry in ata_port_operations.
3805 * LOCKING:
3808 int ata_port_start (struct ata_port *ap)
3810 struct device *dev = ap->host_set->dev;
3812 ap->prd = dma_alloc_coherent(dev, ATA_PRD_TBL_SZ, &ap->prd_dma, GFP_KERNEL);
3813 if (!ap->prd)
3814 return -ENOMEM;
3816 DPRINTK("prd alloc, virt %p, dma %llx\n", ap->prd, (unsigned long long) ap->prd_dma);
3818 return 0;
3823 * ata_port_stop - Undo ata_port_start()
3824 * @ap: Port to shut down
3826 * Frees the PRD table.
3828 * May be used as the port_stop() entry in ata_port_operations.
3830 * LOCKING:
3833 void ata_port_stop (struct ata_port *ap)
3835 struct device *dev = ap->host_set->dev;
3837 dma_free_coherent(dev, ATA_PRD_TBL_SZ, ap->prd, ap->prd_dma);
3840 void ata_host_stop (struct ata_host_set *host_set)
3842 if (host_set->mmio_base)
3843 iounmap(host_set->mmio_base);
3848 * ata_host_remove - Unregister SCSI host structure with upper layers
3849 * @ap: Port to unregister
3850 * @do_unregister: 1 if we fully unregister, 0 to just stop the port
3852 * LOCKING:
3855 static void ata_host_remove(struct ata_port *ap, unsigned int do_unregister)
3857 struct Scsi_Host *sh = ap->host;
3859 DPRINTK("ENTER\n");
3861 if (do_unregister)
3862 scsi_remove_host(sh);
3864 ap->ops->port_stop(ap);
3868 * ata_host_init - Initialize an ata_port structure
3869 * @ap: Structure to initialize
3870 * @host: associated SCSI mid-layer structure
3871 * @host_set: Collection of hosts to which @ap belongs
3872 * @ent: Probe information provided by low-level driver
3873 * @port_no: Port number associated with this ata_port
3875 * Initialize a new ata_port structure, and its associated
3876 * scsi_host.
3878 * LOCKING:
3879 * Inherited from caller.
3883 static void ata_host_init(struct ata_port *ap, struct Scsi_Host *host,
3884 struct ata_host_set *host_set,
3885 struct ata_probe_ent *ent, unsigned int port_no)
3887 unsigned int i;
3889 host->max_id = 16;
3890 host->max_lun = 1;
3891 host->max_channel = 1;
3892 host->unique_id = ata_unique_id++;
3893 host->max_cmd_len = 12;
3895 scsi_assign_lock(host, &host_set->lock);
3897 ap->flags = ATA_FLAG_PORT_DISABLED;
3898 ap->id = host->unique_id;
3899 ap->host = host;
3900 ap->ctl = ATA_DEVCTL_OBS;
3901 ap->host_set = host_set;
3902 ap->port_no = port_no;
3903 ap->hard_port_no =
3904 ent->legacy_mode ? ent->hard_port_no : port_no;
3905 ap->pio_mask = ent->pio_mask;
3906 ap->mwdma_mask = ent->mwdma_mask;
3907 ap->udma_mask = ent->udma_mask;
3908 ap->flags |= ent->host_flags;
3909 ap->ops = ent->port_ops;
3910 ap->cbl = ATA_CBL_NONE;
3911 ap->active_tag = ATA_TAG_POISON;
3912 ap->last_ctl = 0xFF;
3914 INIT_WORK(&ap->packet_task, atapi_packet_task, ap);
3915 INIT_WORK(&ap->pio_task, ata_pio_task, ap);
3917 for (i = 0; i < ATA_MAX_DEVICES; i++)
3918 ap->device[i].devno = i;
3920 #ifdef ATA_IRQ_TRAP
3921 ap->stats.unhandled_irq = 1;
3922 ap->stats.idle_irq = 1;
3923 #endif
3925 memcpy(&ap->ioaddr, &ent->port[port_no], sizeof(struct ata_ioports));
3929 * ata_host_add - Attach low-level ATA driver to system
3930 * @ent: Information provided by low-level driver
3931 * @host_set: Collections of ports to which we add
3932 * @port_no: Port number associated with this host
3934 * Attach low-level ATA driver to system.
3936 * LOCKING:
3937 * PCI/etc. bus probe sem.
3939 * RETURNS:
3940 * New ata_port on success, for NULL on error.
3944 static struct ata_port * ata_host_add(struct ata_probe_ent *ent,
3945 struct ata_host_set *host_set,
3946 unsigned int port_no)
3948 struct Scsi_Host *host;
3949 struct ata_port *ap;
3950 int rc;
3952 DPRINTK("ENTER\n");
3953 host = scsi_host_alloc(ent->sht, sizeof(struct ata_port));
3954 if (!host)
3955 return NULL;
3957 ap = (struct ata_port *) &host->hostdata[0];
3959 ata_host_init(ap, host, host_set, ent, port_no);
3961 rc = ap->ops->port_start(ap);
3962 if (rc)
3963 goto err_out;
3965 return ap;
3967 err_out:
3968 scsi_host_put(host);
3969 return NULL;
3973 * ata_device_add - Register hardware device with ATA and SCSI layers
3974 * @ent: Probe information describing hardware device to be registered
3976 * This function processes the information provided in the probe
3977 * information struct @ent, allocates the necessary ATA and SCSI
3978 * host information structures, initializes them, and registers
3979 * everything with requisite kernel subsystems.
3981 * This function requests irqs, probes the ATA bus, and probes
3982 * the SCSI bus.
3984 * LOCKING:
3985 * PCI/etc. bus probe sem.
3987 * RETURNS:
3988 * Number of ports registered. Zero on error (no ports registered).
3992 int ata_device_add(struct ata_probe_ent *ent)
3994 unsigned int count = 0, i;
3995 struct device *dev = ent->dev;
3996 struct ata_host_set *host_set;
3998 DPRINTK("ENTER\n");
3999 /* alloc a container for our list of ATA ports (buses) */
4000 host_set = kmalloc(sizeof(struct ata_host_set) +
4001 (ent->n_ports * sizeof(void *)), GFP_KERNEL);
4002 if (!host_set)
4003 return 0;
4004 memset(host_set, 0, sizeof(struct ata_host_set) + (ent->n_ports * sizeof(void *)));
4005 spin_lock_init(&host_set->lock);
4007 host_set->dev = dev;
4008 host_set->n_ports = ent->n_ports;
4009 host_set->irq = ent->irq;
4010 host_set->mmio_base = ent->mmio_base;
4011 host_set->private_data = ent->private_data;
4012 host_set->ops = ent->port_ops;
4014 /* register each port bound to this device */
4015 for (i = 0; i < ent->n_ports; i++) {
4016 struct ata_port *ap;
4017 unsigned long xfer_mode_mask;
4019 ap = ata_host_add(ent, host_set, i);
4020 if (!ap)
4021 goto err_out;
4023 host_set->ports[i] = ap;
4024 xfer_mode_mask =(ap->udma_mask << ATA_SHIFT_UDMA) |
4025 (ap->mwdma_mask << ATA_SHIFT_MWDMA) |
4026 (ap->pio_mask << ATA_SHIFT_PIO);
4028 /* print per-port info to dmesg */
4029 printk(KERN_INFO "ata%u: %cATA max %s cmd 0x%lX ctl 0x%lX "
4030 "bmdma 0x%lX irq %lu\n",
4031 ap->id,
4032 ap->flags & ATA_FLAG_SATA ? 'S' : 'P',
4033 ata_mode_string(xfer_mode_mask),
4034 ap->ioaddr.cmd_addr,
4035 ap->ioaddr.ctl_addr,
4036 ap->ioaddr.bmdma_addr,
4037 ent->irq);
4039 ata_chk_status(ap);
4040 host_set->ops->irq_clear(ap);
4041 count++;
4044 if (!count) {
4045 kfree(host_set);
4046 return 0;
4049 /* obtain irq, that is shared between channels */
4050 if (request_irq(ent->irq, ent->port_ops->irq_handler, ent->irq_flags,
4051 DRV_NAME, host_set))
4052 goto err_out;
4054 /* perform each probe synchronously */
4055 DPRINTK("probe begin\n");
4056 for (i = 0; i < count; i++) {
4057 struct ata_port *ap;
4058 int rc;
4060 ap = host_set->ports[i];
4062 DPRINTK("ata%u: probe begin\n", ap->id);
4063 rc = ata_bus_probe(ap);
4064 DPRINTK("ata%u: probe end\n", ap->id);
4066 if (rc) {
4067 /* FIXME: do something useful here?
4068 * Current libata behavior will
4069 * tear down everything when
4070 * the module is removed
4071 * or the h/w is unplugged.
4075 rc = scsi_add_host(ap->host, dev);
4076 if (rc) {
4077 printk(KERN_ERR "ata%u: scsi_add_host failed\n",
4078 ap->id);
4079 /* FIXME: do something useful here */
4080 /* FIXME: handle unconditional calls to
4081 * scsi_scan_host and ata_host_remove, below,
4082 * at the very least
4087 /* probes are done, now scan each port's disk(s) */
4088 DPRINTK("probe begin\n");
4089 for (i = 0; i < count; i++) {
4090 struct ata_port *ap = host_set->ports[i];
4092 scsi_scan_host(ap->host);
4095 dev_set_drvdata(dev, host_set);
4097 VPRINTK("EXIT, returning %u\n", ent->n_ports);
4098 return ent->n_ports; /* success */
4100 err_out:
4101 for (i = 0; i < count; i++) {
4102 ata_host_remove(host_set->ports[i], 1);
4103 scsi_host_put(host_set->ports[i]->host);
4105 kfree(host_set);
4106 VPRINTK("EXIT, returning 0\n");
4107 return 0;
4111 * ata_scsi_release - SCSI layer callback hook for host unload
4112 * @host: libata host to be unloaded
4114 * Performs all duties necessary to shut down a libata port...
4115 * Kill port kthread, disable port, and release resources.
4117 * LOCKING:
4118 * Inherited from SCSI layer.
4120 * RETURNS:
4121 * One.
4124 int ata_scsi_release(struct Scsi_Host *host)
4126 struct ata_port *ap = (struct ata_port *) &host->hostdata[0];
4128 DPRINTK("ENTER\n");
4130 ap->ops->port_disable(ap);
4131 ata_host_remove(ap, 0);
4133 DPRINTK("EXIT\n");
4134 return 1;
4138 * ata_std_ports - initialize ioaddr with standard port offsets.
4139 * @ioaddr: IO address structure to be initialized
4141 * Utility function which initializes data_addr, error_addr,
4142 * feature_addr, nsect_addr, lbal_addr, lbam_addr, lbah_addr,
4143 * device_addr, status_addr, and command_addr to standard offsets
4144 * relative to cmd_addr.
4146 * Does not set ctl_addr, altstatus_addr, bmdma_addr, or scr_addr.
4149 void ata_std_ports(struct ata_ioports *ioaddr)
4151 ioaddr->data_addr = ioaddr->cmd_addr + ATA_REG_DATA;
4152 ioaddr->error_addr = ioaddr->cmd_addr + ATA_REG_ERR;
4153 ioaddr->feature_addr = ioaddr->cmd_addr + ATA_REG_FEATURE;
4154 ioaddr->nsect_addr = ioaddr->cmd_addr + ATA_REG_NSECT;
4155 ioaddr->lbal_addr = ioaddr->cmd_addr + ATA_REG_LBAL;
4156 ioaddr->lbam_addr = ioaddr->cmd_addr + ATA_REG_LBAM;
4157 ioaddr->lbah_addr = ioaddr->cmd_addr + ATA_REG_LBAH;
4158 ioaddr->device_addr = ioaddr->cmd_addr + ATA_REG_DEVICE;
4159 ioaddr->status_addr = ioaddr->cmd_addr + ATA_REG_STATUS;
4160 ioaddr->command_addr = ioaddr->cmd_addr + ATA_REG_CMD;
4163 static struct ata_probe_ent *
4164 ata_probe_ent_alloc(struct device *dev, struct ata_port_info *port)
4166 struct ata_probe_ent *probe_ent;
4168 probe_ent = kmalloc(sizeof(*probe_ent), GFP_KERNEL);
4169 if (!probe_ent) {
4170 printk(KERN_ERR DRV_NAME "(%s): out of memory\n",
4171 kobject_name(&(dev->kobj)));
4172 return NULL;
4175 memset(probe_ent, 0, sizeof(*probe_ent));
4177 INIT_LIST_HEAD(&probe_ent->node);
4178 probe_ent->dev = dev;
4180 probe_ent->sht = port->sht;
4181 probe_ent->host_flags = port->host_flags;
4182 probe_ent->pio_mask = port->pio_mask;
4183 probe_ent->mwdma_mask = port->mwdma_mask;
4184 probe_ent->udma_mask = port->udma_mask;
4185 probe_ent->port_ops = port->port_ops;
4187 return probe_ent;
4193 * ata_pci_init_native_mode - Initialize native-mode driver
4194 * @pdev: pci device to be initialized
4195 * @port: array[2] of pointers to port info structures.
4197 * Utility function which allocates and initializes an
4198 * ata_probe_ent structure for a standard dual-port
4199 * PIO-based IDE controller. The returned ata_probe_ent
4200 * structure can be passed to ata_device_add(). The returned
4201 * ata_probe_ent structure should then be freed with kfree().
4204 #ifdef CONFIG_PCI
4205 struct ata_probe_ent *
4206 ata_pci_init_native_mode(struct pci_dev *pdev, struct ata_port_info **port)
4208 struct ata_probe_ent *probe_ent =
4209 ata_probe_ent_alloc(pci_dev_to_dev(pdev), port[0]);
4210 if (!probe_ent)
4211 return NULL;
4213 probe_ent->n_ports = 2;
4214 probe_ent->irq = pdev->irq;
4215 probe_ent->irq_flags = SA_SHIRQ;
4217 probe_ent->port[0].cmd_addr = pci_resource_start(pdev, 0);
4218 probe_ent->port[0].altstatus_addr =
4219 probe_ent->port[0].ctl_addr =
4220 pci_resource_start(pdev, 1) | ATA_PCI_CTL_OFS;
4221 probe_ent->port[0].bmdma_addr = pci_resource_start(pdev, 4);
4223 probe_ent->port[1].cmd_addr = pci_resource_start(pdev, 2);
4224 probe_ent->port[1].altstatus_addr =
4225 probe_ent->port[1].ctl_addr =
4226 pci_resource_start(pdev, 3) | ATA_PCI_CTL_OFS;
4227 probe_ent->port[1].bmdma_addr = pci_resource_start(pdev, 4) + 8;
4229 ata_std_ports(&probe_ent->port[0]);
4230 ata_std_ports(&probe_ent->port[1]);
4232 return probe_ent;
4235 static struct ata_probe_ent *
4236 ata_pci_init_legacy_mode(struct pci_dev *pdev, struct ata_port_info **port,
4237 struct ata_probe_ent **ppe2)
4239 struct ata_probe_ent *probe_ent, *probe_ent2;
4241 probe_ent = ata_probe_ent_alloc(pci_dev_to_dev(pdev), port[0]);
4242 if (!probe_ent)
4243 return NULL;
4244 probe_ent2 = ata_probe_ent_alloc(pci_dev_to_dev(pdev), port[1]);
4245 if (!probe_ent2) {
4246 kfree(probe_ent);
4247 return NULL;
4250 probe_ent->n_ports = 1;
4251 probe_ent->irq = 14;
4253 probe_ent->hard_port_no = 0;
4254 probe_ent->legacy_mode = 1;
4256 probe_ent2->n_ports = 1;
4257 probe_ent2->irq = 15;
4259 probe_ent2->hard_port_no = 1;
4260 probe_ent2->legacy_mode = 1;
4262 probe_ent->port[0].cmd_addr = 0x1f0;
4263 probe_ent->port[0].altstatus_addr =
4264 probe_ent->port[0].ctl_addr = 0x3f6;
4265 probe_ent->port[0].bmdma_addr = pci_resource_start(pdev, 4);
4267 probe_ent2->port[0].cmd_addr = 0x170;
4268 probe_ent2->port[0].altstatus_addr =
4269 probe_ent2->port[0].ctl_addr = 0x376;
4270 probe_ent2->port[0].bmdma_addr = pci_resource_start(pdev, 4)+8;
4272 ata_std_ports(&probe_ent->port[0]);
4273 ata_std_ports(&probe_ent2->port[0]);
4275 *ppe2 = probe_ent2;
4276 return probe_ent;
4280 * ata_pci_init_one - Initialize/register PCI IDE host controller
4281 * @pdev: Controller to be initialized
4282 * @port_info: Information from low-level host driver
4283 * @n_ports: Number of ports attached to host controller
4285 * This is a helper function which can be called from a driver's
4286 * xxx_init_one() probe function if the hardware uses traditional
4287 * IDE taskfile registers.
4289 * This function calls pci_enable_device(), reserves its register
4290 * regions, sets the dma mask, enables bus master mode, and calls
4291 * ata_device_add()
4293 * LOCKING:
4294 * Inherited from PCI layer (may sleep).
4296 * RETURNS:
4297 * Zero on success, negative on errno-based value on error.
4301 int ata_pci_init_one (struct pci_dev *pdev, struct ata_port_info **port_info,
4302 unsigned int n_ports)
4304 struct ata_probe_ent *probe_ent, *probe_ent2 = NULL;
4305 struct ata_port_info *port[2];
4306 u8 tmp8, mask;
4307 unsigned int legacy_mode = 0;
4308 int disable_dev_on_err = 1;
4309 int rc;
4311 DPRINTK("ENTER\n");
4313 port[0] = port_info[0];
4314 if (n_ports > 1)
4315 port[1] = port_info[1];
4316 else
4317 port[1] = port[0];
4319 if ((port[0]->host_flags & ATA_FLAG_NO_LEGACY) == 0
4320 && (pdev->class >> 8) == PCI_CLASS_STORAGE_IDE) {
4321 /* TODO: support transitioning to native mode? */
4322 pci_read_config_byte(pdev, PCI_CLASS_PROG, &tmp8);
4323 mask = (1 << 2) | (1 << 0);
4324 if ((tmp8 & mask) != mask)
4325 legacy_mode = (1 << 3);
4328 /* FIXME... */
4329 if ((!legacy_mode) && (n_ports > 1)) {
4330 printk(KERN_ERR "ata: BUG: native mode, n_ports > 1\n");
4331 return -EINVAL;
4334 rc = pci_enable_device(pdev);
4335 if (rc)
4336 return rc;
4338 rc = pci_request_regions(pdev, DRV_NAME);
4339 if (rc) {
4340 disable_dev_on_err = 0;
4341 goto err_out;
4344 if (legacy_mode) {
4345 if (!request_region(0x1f0, 8, "libata")) {
4346 struct resource *conflict, res;
4347 res.start = 0x1f0;
4348 res.end = 0x1f0 + 8 - 1;
4349 conflict = ____request_resource(&ioport_resource, &res);
4350 if (!strcmp(conflict->name, "libata"))
4351 legacy_mode |= (1 << 0);
4352 else {
4353 disable_dev_on_err = 0;
4354 printk(KERN_WARNING "ata: 0x1f0 IDE port busy\n");
4356 } else
4357 legacy_mode |= (1 << 0);
4359 if (!request_region(0x170, 8, "libata")) {
4360 struct resource *conflict, res;
4361 res.start = 0x170;
4362 res.end = 0x170 + 8 - 1;
4363 conflict = ____request_resource(&ioport_resource, &res);
4364 if (!strcmp(conflict->name, "libata"))
4365 legacy_mode |= (1 << 1);
4366 else {
4367 disable_dev_on_err = 0;
4368 printk(KERN_WARNING "ata: 0x170 IDE port busy\n");
4370 } else
4371 legacy_mode |= (1 << 1);
4374 /* we have legacy mode, but all ports are unavailable */
4375 if (legacy_mode == (1 << 3)) {
4376 rc = -EBUSY;
4377 goto err_out_regions;
4380 rc = pci_set_dma_mask(pdev, ATA_DMA_MASK);
4381 if (rc)
4382 goto err_out_regions;
4383 rc = pci_set_consistent_dma_mask(pdev, ATA_DMA_MASK);
4384 if (rc)
4385 goto err_out_regions;
4387 if (legacy_mode) {
4388 probe_ent = ata_pci_init_legacy_mode(pdev, port, &probe_ent2);
4389 } else
4390 probe_ent = ata_pci_init_native_mode(pdev, port);
4391 if (!probe_ent) {
4392 rc = -ENOMEM;
4393 goto err_out_regions;
4396 pci_set_master(pdev);
4398 /* FIXME: check ata_device_add return */
4399 if (legacy_mode) {
4400 if (legacy_mode & (1 << 0))
4401 ata_device_add(probe_ent);
4402 if (legacy_mode & (1 << 1))
4403 ata_device_add(probe_ent2);
4404 } else
4405 ata_device_add(probe_ent);
4407 kfree(probe_ent);
4408 kfree(probe_ent2);
4410 return 0;
4412 err_out_regions:
4413 if (legacy_mode & (1 << 0))
4414 release_region(0x1f0, 8);
4415 if (legacy_mode & (1 << 1))
4416 release_region(0x170, 8);
4417 pci_release_regions(pdev);
4418 err_out:
4419 if (disable_dev_on_err)
4420 pci_disable_device(pdev);
4421 return rc;
4425 * ata_pci_remove_one - PCI layer callback for device removal
4426 * @pdev: PCI device that was removed
4428 * PCI layer indicates to libata via this hook that
4429 * hot-unplug or module unload event has occured.
4430 * Handle this by unregistering all objects associated
4431 * with this PCI device. Free those objects. Then finally
4432 * release PCI resources and disable device.
4434 * LOCKING:
4435 * Inherited from PCI layer (may sleep).
4438 void ata_pci_remove_one (struct pci_dev *pdev)
4440 struct device *dev = pci_dev_to_dev(pdev);
4441 struct ata_host_set *host_set = dev_get_drvdata(dev);
4442 struct ata_port *ap;
4443 unsigned int i;
4445 for (i = 0; i < host_set->n_ports; i++) {
4446 ap = host_set->ports[i];
4448 scsi_remove_host(ap->host);
4451 free_irq(host_set->irq, host_set);
4453 for (i = 0; i < host_set->n_ports; i++) {
4454 ap = host_set->ports[i];
4456 ata_scsi_release(ap->host);
4458 if ((ap->flags & ATA_FLAG_NO_LEGACY) == 0) {
4459 struct ata_ioports *ioaddr = &ap->ioaddr;
4461 if (ioaddr->cmd_addr == 0x1f0)
4462 release_region(0x1f0, 8);
4463 else if (ioaddr->cmd_addr == 0x170)
4464 release_region(0x170, 8);
4467 scsi_host_put(ap->host);
4470 if (host_set->ops->host_stop)
4471 host_set->ops->host_stop(host_set);
4473 kfree(host_set);
4475 pci_release_regions(pdev);
4476 pci_disable_device(pdev);
4477 dev_set_drvdata(dev, NULL);
4480 /* move to PCI subsystem */
4481 int pci_test_config_bits(struct pci_dev *pdev, struct pci_bits *bits)
4483 unsigned long tmp = 0;
4485 switch (bits->width) {
4486 case 1: {
4487 u8 tmp8 = 0;
4488 pci_read_config_byte(pdev, bits->reg, &tmp8);
4489 tmp = tmp8;
4490 break;
4492 case 2: {
4493 u16 tmp16 = 0;
4494 pci_read_config_word(pdev, bits->reg, &tmp16);
4495 tmp = tmp16;
4496 break;
4498 case 4: {
4499 u32 tmp32 = 0;
4500 pci_read_config_dword(pdev, bits->reg, &tmp32);
4501 tmp = tmp32;
4502 break;
4505 default:
4506 return -EINVAL;
4509 tmp &= bits->mask;
4511 return (tmp == bits->val) ? 1 : 0;
4513 #endif /* CONFIG_PCI */
4516 static int __init ata_init(void)
4518 ata_wq = create_workqueue("ata");
4519 if (!ata_wq)
4520 return -ENOMEM;
4522 printk(KERN_DEBUG "libata version " DRV_VERSION " loaded.\n");
4523 return 0;
4526 static void __exit ata_exit(void)
4528 destroy_workqueue(ata_wq);
4531 module_init(ata_init);
4532 module_exit(ata_exit);
4535 * libata is essentially a library of internal helper functions for
4536 * low-level ATA host controller drivers. As such, the API/ABI is
4537 * likely to change as new drivers are added and updated.
4538 * Do not depend on ABI/API stability.
4541 EXPORT_SYMBOL_GPL(ata_std_bios_param);
4542 EXPORT_SYMBOL_GPL(ata_std_ports);
4543 EXPORT_SYMBOL_GPL(ata_device_add);
4544 EXPORT_SYMBOL_GPL(ata_sg_init);
4545 EXPORT_SYMBOL_GPL(ata_sg_init_one);
4546 EXPORT_SYMBOL_GPL(ata_qc_complete);
4547 EXPORT_SYMBOL_GPL(ata_qc_issue_prot);
4548 EXPORT_SYMBOL_GPL(ata_eng_timeout);
4549 EXPORT_SYMBOL_GPL(ata_tf_load);
4550 EXPORT_SYMBOL_GPL(ata_tf_read);
4551 EXPORT_SYMBOL_GPL(ata_noop_dev_select);
4552 EXPORT_SYMBOL_GPL(ata_std_dev_select);
4553 EXPORT_SYMBOL_GPL(ata_tf_to_fis);
4554 EXPORT_SYMBOL_GPL(ata_tf_from_fis);
4555 EXPORT_SYMBOL_GPL(ata_check_status);
4556 EXPORT_SYMBOL_GPL(ata_altstatus);
4557 EXPORT_SYMBOL_GPL(ata_chk_err);
4558 EXPORT_SYMBOL_GPL(ata_exec_command);
4559 EXPORT_SYMBOL_GPL(ata_port_start);
4560 EXPORT_SYMBOL_GPL(ata_port_stop);
4561 EXPORT_SYMBOL_GPL(ata_host_stop);
4562 EXPORT_SYMBOL_GPL(ata_interrupt);
4563 EXPORT_SYMBOL_GPL(ata_qc_prep);
4564 EXPORT_SYMBOL_GPL(ata_bmdma_setup);
4565 EXPORT_SYMBOL_GPL(ata_bmdma_start);
4566 EXPORT_SYMBOL_GPL(ata_bmdma_irq_clear);
4567 EXPORT_SYMBOL_GPL(ata_bmdma_status);
4568 EXPORT_SYMBOL_GPL(ata_bmdma_stop);
4569 EXPORT_SYMBOL_GPL(ata_port_probe);
4570 EXPORT_SYMBOL_GPL(sata_phy_reset);
4571 EXPORT_SYMBOL_GPL(__sata_phy_reset);
4572 EXPORT_SYMBOL_GPL(ata_bus_reset);
4573 EXPORT_SYMBOL_GPL(ata_port_disable);
4574 EXPORT_SYMBOL_GPL(ata_scsi_ioctl);
4575 EXPORT_SYMBOL_GPL(ata_scsi_queuecmd);
4576 EXPORT_SYMBOL_GPL(ata_scsi_error);
4577 EXPORT_SYMBOL_GPL(ata_scsi_slave_config);
4578 EXPORT_SYMBOL_GPL(ata_scsi_release);
4579 EXPORT_SYMBOL_GPL(ata_host_intr);
4580 EXPORT_SYMBOL_GPL(ata_dev_classify);
4581 EXPORT_SYMBOL_GPL(ata_dev_id_string);
4582 EXPORT_SYMBOL_GPL(ata_dev_config);
4583 EXPORT_SYMBOL_GPL(ata_scsi_simulate);
4585 #ifdef CONFIG_PCI
4586 EXPORT_SYMBOL_GPL(pci_test_config_bits);
4587 EXPORT_SYMBOL_GPL(ata_pci_init_native_mode);
4588 EXPORT_SYMBOL_GPL(ata_pci_init_one);
4589 EXPORT_SYMBOL_GPL(ata_pci_remove_one);
4590 #endif /* CONFIG_PCI */