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
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>
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>
43 #include "scsi_priv.h"
44 #include <scsi/scsi_host.h>
45 #include <linux/libata.h>
47 #include <asm/semaphore.h>
48 #include <asm/byteorder.h>
52 static unsigned int ata_busy_sleep (struct ata_port *ap,
53 unsigned long tmout_pat,
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,
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);
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.
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;
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",
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",
123 if (tf->flags & ATA_TFLAG_DEVICE) {
124 outb(tf->device, ioaddr->device_addr);
125 VPRINTK("device 0x%X\n", tf->device);
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.
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;
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",
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",
181 if (tf->flags & ATA_TFLAG_DEVICE) {
182 writeb(tf->device, (void __iomem *) ioaddr->device_addr);
183 VPRINTK("device 0x%X\n", tf->device);
189 void ata_tf_load(struct ata_port *ap, struct ata_taskfile *tf)
191 if (ap->flags & ATA_FLAG_MMIO)
192 ata_tf_load_mmio(ap, tf);
194 ata_tf_load_pio(ap, tf);
198 * ata_exec_command - issue ATA command to host controller
199 * @ap: port to which command is being issued
200 * @tf: ATA taskfile register set
202 * Issues PIO/MMIO write to ATA command register, with proper
203 * synchronization with interrupt handler / other threads.
206 * spin_lock_irqsave(host_set lock)
209 static void ata_exec_command_pio(struct ata_port *ap, struct ata_taskfile *tf)
211 DPRINTK("ata%u: cmd 0x%X\n", ap->id, tf->command);
213 outb(tf->command, ap->ioaddr.command_addr);
219 * ata_exec_command_mmio - issue ATA command to host controller
220 * @ap: port to which command is being issued
221 * @tf: ATA taskfile register set
223 * Issues MMIO write to ATA command register, with proper
224 * synchronization with interrupt handler / other threads.
227 * spin_lock_irqsave(host_set lock)
230 static void ata_exec_command_mmio(struct ata_port *ap, struct ata_taskfile *tf)
232 DPRINTK("ata%u: cmd 0x%X\n", ap->id, tf->command);
234 writeb(tf->command, (void __iomem *) ap->ioaddr.command_addr);
238 void ata_exec_command(struct ata_port *ap, struct ata_taskfile *tf)
240 if (ap->flags & ATA_FLAG_MMIO)
241 ata_exec_command_mmio(ap, tf);
243 ata_exec_command_pio(ap, tf);
247 * ata_exec - issue ATA command to host controller
248 * @ap: port to which command is being issued
249 * @tf: ATA taskfile register set
251 * Issues PIO/MMIO write to ATA command register, with proper
252 * synchronization with interrupt handler / other threads.
255 * Obtains host_set lock.
258 static inline void ata_exec(struct ata_port *ap, struct ata_taskfile *tf)
262 DPRINTK("ata%u: cmd 0x%X\n", ap->id, tf->command);
263 spin_lock_irqsave(&ap->host_set->lock, flags);
264 ap->ops->exec_command(ap, tf);
265 spin_unlock_irqrestore(&ap->host_set->lock, flags);
269 * ata_tf_to_host - issue ATA taskfile to host controller
270 * @ap: port to which command is being issued
271 * @tf: ATA taskfile register set
273 * Issues ATA taskfile register set to ATA host controller,
274 * with proper synchronization with interrupt handler and
278 * Obtains host_set lock.
281 static void ata_tf_to_host(struct ata_port *ap, struct ata_taskfile *tf)
283 ap->ops->tf_load(ap, tf);
289 * ata_tf_to_host_nolock - issue ATA taskfile to host controller
290 * @ap: port to which command is being issued
291 * @tf: ATA taskfile register set
293 * Issues ATA taskfile register set to ATA host controller,
294 * with proper synchronization with interrupt handler and
298 * spin_lock_irqsave(host_set lock)
301 void ata_tf_to_host_nolock(struct ata_port *ap, struct ata_taskfile *tf)
303 ap->ops->tf_load(ap, tf);
304 ap->ops->exec_command(ap, tf);
308 * ata_tf_read - input device's ATA taskfile shadow registers
309 * @ap: Port from which input is read
310 * @tf: ATA taskfile register set for storing input
312 * Reads ATA taskfile registers for currently-selected device
316 * Inherited from caller.
319 static void ata_tf_read_pio(struct ata_port *ap, struct ata_taskfile *tf)
321 struct ata_ioports *ioaddr = &ap->ioaddr;
323 tf->nsect = inb(ioaddr->nsect_addr);
324 tf->lbal = inb(ioaddr->lbal_addr);
325 tf->lbam = inb(ioaddr->lbam_addr);
326 tf->lbah = inb(ioaddr->lbah_addr);
327 tf->device = inb(ioaddr->device_addr);
329 if (tf->flags & ATA_TFLAG_LBA48) {
330 outb(tf->ctl | ATA_HOB, ioaddr->ctl_addr);
331 tf->hob_feature = inb(ioaddr->error_addr);
332 tf->hob_nsect = inb(ioaddr->nsect_addr);
333 tf->hob_lbal = inb(ioaddr->lbal_addr);
334 tf->hob_lbam = inb(ioaddr->lbam_addr);
335 tf->hob_lbah = inb(ioaddr->lbah_addr);
340 * ata_tf_read_mmio - input device's ATA taskfile shadow registers
341 * @ap: Port from which input is read
342 * @tf: ATA taskfile register set for storing input
344 * Reads ATA taskfile registers for currently-selected device
348 * Inherited from caller.
351 static void ata_tf_read_mmio(struct ata_port *ap, struct ata_taskfile *tf)
353 struct ata_ioports *ioaddr = &ap->ioaddr;
355 tf->nsect = readb((void __iomem *)ioaddr->nsect_addr);
356 tf->lbal = readb((void __iomem *)ioaddr->lbal_addr);
357 tf->lbam = readb((void __iomem *)ioaddr->lbam_addr);
358 tf->lbah = readb((void __iomem *)ioaddr->lbah_addr);
359 tf->device = readb((void __iomem *)ioaddr->device_addr);
361 if (tf->flags & ATA_TFLAG_LBA48) {
362 writeb(tf->ctl | ATA_HOB, (void __iomem *) ap->ioaddr.ctl_addr);
363 tf->hob_feature = readb((void __iomem *)ioaddr->error_addr);
364 tf->hob_nsect = readb((void __iomem *)ioaddr->nsect_addr);
365 tf->hob_lbal = readb((void __iomem *)ioaddr->lbal_addr);
366 tf->hob_lbam = readb((void __iomem *)ioaddr->lbam_addr);
367 tf->hob_lbah = readb((void __iomem *)ioaddr->lbah_addr);
371 void ata_tf_read(struct ata_port *ap, struct ata_taskfile *tf)
373 if (ap->flags & ATA_FLAG_MMIO)
374 ata_tf_read_mmio(ap, tf);
376 ata_tf_read_pio(ap, tf);
380 * ata_check_status_pio - Read device status reg & clear interrupt
381 * @ap: port where the device is
383 * Reads ATA taskfile status register for currently-selected device
384 * and return it's value. This also clears pending interrupts
388 * Inherited from caller.
390 static u8 ata_check_status_pio(struct ata_port *ap)
392 return inb(ap->ioaddr.status_addr);
396 * ata_check_status_mmio - Read device status reg & clear interrupt
397 * @ap: port where the device is
399 * Reads ATA taskfile status register for currently-selected device
400 * via MMIO and return it's value. This also clears pending interrupts
404 * Inherited from caller.
406 static u8 ata_check_status_mmio(struct ata_port *ap)
408 return readb((void __iomem *) ap->ioaddr.status_addr);
411 u8 ata_check_status(struct ata_port *ap)
413 if (ap->flags & ATA_FLAG_MMIO)
414 return ata_check_status_mmio(ap);
415 return ata_check_status_pio(ap);
418 u8 ata_altstatus(struct ata_port *ap)
420 if (ap->ops->check_altstatus)
421 return ap->ops->check_altstatus(ap);
423 if (ap->flags & ATA_FLAG_MMIO)
424 return readb((void __iomem *)ap->ioaddr.altstatus_addr);
425 return inb(ap->ioaddr.altstatus_addr);
428 u8 ata_chk_err(struct ata_port *ap)
430 if (ap->ops->check_err)
431 return ap->ops->check_err(ap);
433 if (ap->flags & ATA_FLAG_MMIO) {
434 return readb((void __iomem *) ap->ioaddr.error_addr);
436 return inb(ap->ioaddr.error_addr);
440 * ata_tf_to_fis - Convert ATA taskfile to SATA FIS structure
441 * @tf: Taskfile to convert
442 * @fis: Buffer into which data will output
443 * @pmp: Port multiplier port
445 * Converts a standard ATA taskfile to a Serial ATA
446 * FIS structure (Register - Host to Device).
449 * Inherited from caller.
452 void ata_tf_to_fis(struct ata_taskfile *tf, u8 *fis, u8 pmp)
454 fis[0] = 0x27; /* Register - Host to Device FIS */
455 fis[1] = (pmp & 0xf) | (1 << 7); /* Port multiplier number,
456 bit 7 indicates Command FIS */
457 fis[2] = tf->command;
458 fis[3] = tf->feature;
465 fis[8] = tf->hob_lbal;
466 fis[9] = tf->hob_lbam;
467 fis[10] = tf->hob_lbah;
468 fis[11] = tf->hob_feature;
471 fis[13] = tf->hob_nsect;
482 * ata_tf_from_fis - Convert SATA FIS to ATA taskfile
483 * @fis: Buffer from which data will be input
484 * @tf: Taskfile to output
486 * Converts a standard ATA taskfile to a Serial ATA
487 * FIS structure (Register - Host to Device).
490 * Inherited from caller.
493 void ata_tf_from_fis(u8 *fis, struct ata_taskfile *tf)
495 tf->command = fis[2]; /* status */
496 tf->feature = fis[3]; /* error */
503 tf->hob_lbal = fis[8];
504 tf->hob_lbam = fis[9];
505 tf->hob_lbah = fis[10];
508 tf->hob_nsect = fis[13];
512 * ata_prot_to_cmd - determine which read/write opcodes to use
513 * @protocol: ATA_PROT_xxx taskfile protocol
514 * @lba48: true is lba48 is present
516 * Given necessary input, determine which read/write commands
517 * to use to transfer data.
522 static int ata_prot_to_cmd(int protocol, int lba48)
524 int rcmd = 0, wcmd = 0;
529 rcmd = ATA_CMD_PIO_READ_EXT;
530 wcmd = ATA_CMD_PIO_WRITE_EXT;
532 rcmd = ATA_CMD_PIO_READ;
533 wcmd = ATA_CMD_PIO_WRITE;
539 rcmd = ATA_CMD_READ_EXT;
540 wcmd = ATA_CMD_WRITE_EXT;
543 wcmd = ATA_CMD_WRITE;
551 return rcmd | (wcmd << 8);
555 * ata_dev_set_protocol - set taskfile protocol and r/w commands
556 * @dev: device to examine and configure
558 * Examine the device configuration, after we have
559 * read the identify-device page and configured the
560 * data transfer mode. Set internal state related to
561 * the ATA taskfile protocol (pio, pio mult, dma, etc.)
562 * and calculate the proper read/write commands to use.
567 static void ata_dev_set_protocol(struct ata_device *dev)
569 int pio = (dev->flags & ATA_DFLAG_PIO);
570 int lba48 = (dev->flags & ATA_DFLAG_LBA48);
574 proto = dev->xfer_protocol = ATA_PROT_PIO;
576 proto = dev->xfer_protocol = ATA_PROT_DMA;
578 cmd = ata_prot_to_cmd(proto, lba48);
582 dev->read_cmd = cmd & 0xff;
583 dev->write_cmd = (cmd >> 8) & 0xff;
586 static const char * xfer_mode_str[] = {
606 * ata_udma_string - convert UDMA bit offset to string
607 * @mask: mask of bits supported; only highest bit counts.
609 * Determine string which represents the highest speed
610 * (highest bit in @udma_mask).
616 * Constant C string representing highest speed listed in
617 * @udma_mask, or the constant C string "<n/a>".
620 static const char *ata_mode_string(unsigned int mask)
624 for (i = 7; i >= 0; i--)
627 for (i = ATA_SHIFT_MWDMA + 2; i >= ATA_SHIFT_MWDMA; i--)
630 for (i = ATA_SHIFT_PIO + 4; i >= ATA_SHIFT_PIO; i--)
637 return xfer_mode_str[i];
641 * ata_pio_devchk - PATA device presence detection
642 * @ap: ATA channel to examine
643 * @device: Device to examine (starting at zero)
645 * This technique was originally described in
646 * Hale Landis's ATADRVR (www.ata-atapi.com), and
647 * later found its way into the ATA/ATAPI spec.
649 * Write a pattern to the ATA shadow registers,
650 * and if a device is present, it will respond by
651 * correctly storing and echoing back the
652 * ATA shadow register contents.
658 static unsigned int ata_pio_devchk(struct ata_port *ap,
661 struct ata_ioports *ioaddr = &ap->ioaddr;
664 ap->ops->dev_select(ap, device);
666 outb(0x55, ioaddr->nsect_addr);
667 outb(0xaa, ioaddr->lbal_addr);
669 outb(0xaa, ioaddr->nsect_addr);
670 outb(0x55, ioaddr->lbal_addr);
672 outb(0x55, ioaddr->nsect_addr);
673 outb(0xaa, ioaddr->lbal_addr);
675 nsect = inb(ioaddr->nsect_addr);
676 lbal = inb(ioaddr->lbal_addr);
678 if ((nsect == 0x55) && (lbal == 0xaa))
679 return 1; /* we found a device */
681 return 0; /* nothing found */
685 * ata_mmio_devchk - PATA device presence detection
686 * @ap: ATA channel to examine
687 * @device: Device to examine (starting at zero)
689 * This technique was originally described in
690 * Hale Landis's ATADRVR (www.ata-atapi.com), and
691 * later found its way into the ATA/ATAPI spec.
693 * Write a pattern to the ATA shadow registers,
694 * and if a device is present, it will respond by
695 * correctly storing and echoing back the
696 * ATA shadow register contents.
702 static unsigned int ata_mmio_devchk(struct ata_port *ap,
705 struct ata_ioports *ioaddr = &ap->ioaddr;
708 ap->ops->dev_select(ap, device);
710 writeb(0x55, (void __iomem *) ioaddr->nsect_addr);
711 writeb(0xaa, (void __iomem *) ioaddr->lbal_addr);
713 writeb(0xaa, (void __iomem *) ioaddr->nsect_addr);
714 writeb(0x55, (void __iomem *) ioaddr->lbal_addr);
716 writeb(0x55, (void __iomem *) ioaddr->nsect_addr);
717 writeb(0xaa, (void __iomem *) ioaddr->lbal_addr);
719 nsect = readb((void __iomem *) ioaddr->nsect_addr);
720 lbal = readb((void __iomem *) ioaddr->lbal_addr);
722 if ((nsect == 0x55) && (lbal == 0xaa))
723 return 1; /* we found a device */
725 return 0; /* nothing found */
729 * ata_devchk - PATA device presence detection
730 * @ap: ATA channel to examine
731 * @device: Device to examine (starting at zero)
733 * Dispatch ATA device presence detection, depending
734 * on whether we are using PIO or MMIO to talk to the
735 * ATA shadow registers.
741 static unsigned int ata_devchk(struct ata_port *ap,
744 if (ap->flags & ATA_FLAG_MMIO)
745 return ata_mmio_devchk(ap, device);
746 return ata_pio_devchk(ap, device);
750 * ata_dev_classify - determine device type based on ATA-spec signature
751 * @tf: ATA taskfile register set for device to be identified
753 * Determine from taskfile register contents whether a device is
754 * ATA or ATAPI, as per "Signature and persistence" section
755 * of ATA/PI spec (volume 1, sect 5.14).
761 * Device type, %ATA_DEV_ATA, %ATA_DEV_ATAPI, or %ATA_DEV_UNKNOWN
762 * the event of failure.
765 unsigned int ata_dev_classify(struct ata_taskfile *tf)
767 /* Apple's open source Darwin code hints that some devices only
768 * put a proper signature into the LBA mid/high registers,
769 * So, we only check those. It's sufficient for uniqueness.
772 if (((tf->lbam == 0) && (tf->lbah == 0)) ||
773 ((tf->lbam == 0x3c) && (tf->lbah == 0xc3))) {
774 DPRINTK("found ATA device by sig\n");
778 if (((tf->lbam == 0x14) && (tf->lbah == 0xeb)) ||
779 ((tf->lbam == 0x69) && (tf->lbah == 0x96))) {
780 DPRINTK("found ATAPI device by sig\n");
781 return ATA_DEV_ATAPI;
784 DPRINTK("unknown device\n");
785 return ATA_DEV_UNKNOWN;
789 * ata_dev_try_classify - Parse returned ATA device signature
790 * @ap: ATA channel to examine
791 * @device: Device to examine (starting at zero)
793 * After an event -- SRST, E.D.D., or SATA COMRESET -- occurs,
794 * an ATA/ATAPI-defined set of values is placed in the ATA
795 * shadow registers, indicating the results of device detection
798 * Select the ATA device, and read the values from the ATA shadow
799 * registers. Then parse according to the Error register value,
800 * and the spec-defined values examined by ata_dev_classify().
806 static u8 ata_dev_try_classify(struct ata_port *ap, unsigned int device)
808 struct ata_device *dev = &ap->device[device];
809 struct ata_taskfile tf;
813 ap->ops->dev_select(ap, device);
815 memset(&tf, 0, sizeof(tf));
817 err = ata_chk_err(ap);
818 ap->ops->tf_read(ap, &tf);
820 dev->class = ATA_DEV_NONE;
822 /* see if device passed diags */
825 else if ((device == 0) && (err == 0x81))
830 /* determine if device if ATA or ATAPI */
831 class = ata_dev_classify(&tf);
832 if (class == ATA_DEV_UNKNOWN)
834 if ((class == ATA_DEV_ATA) && (ata_chk_status(ap) == 0))
843 * ata_dev_id_string - Convert IDENTIFY DEVICE page into string
844 * @id: IDENTIFY DEVICE results we will examine
845 * @s: string into which data is output
846 * @ofs: offset into identify device page
847 * @len: length of string to return. must be an even number.
849 * The strings in the IDENTIFY DEVICE page are broken up into
850 * 16-bit chunks. Run through the string, and output each
851 * 8-bit chunk linearly, regardless of platform.
857 void ata_dev_id_string(u16 *id, unsigned char *s,
858 unsigned int ofs, unsigned int len)
876 void ata_noop_dev_select (struct ata_port *ap, unsigned int device)
881 * ata_std_dev_select - Select device 0/1 on ATA bus
882 * @ap: ATA channel to manipulate
883 * @device: ATA device (numbered from zero) to select
885 * Use the method defined in the ATA specification to
886 * make either device 0, or device 1, active on the
893 void ata_std_dev_select (struct ata_port *ap, unsigned int device)
898 tmp = ATA_DEVICE_OBS;
900 tmp = ATA_DEVICE_OBS | ATA_DEV1;
902 if (ap->flags & ATA_FLAG_MMIO) {
903 writeb(tmp, (void __iomem *) ap->ioaddr.device_addr);
905 outb(tmp, ap->ioaddr.device_addr);
907 ata_pause(ap); /* needed; also flushes, for mmio */
911 * ata_dev_select - Select device 0/1 on ATA bus
912 * @ap: ATA channel to manipulate
913 * @device: ATA device (numbered from zero) to select
914 * @wait: non-zero to wait for Status register BSY bit to clear
915 * @can_sleep: non-zero if context allows sleeping
917 * Use the method defined in the ATA specification to
918 * make either device 0, or device 1, active on the
921 * This is a high-level version of ata_std_dev_select(),
922 * which additionally provides the services of inserting
923 * the proper pauses and status polling, where needed.
929 void ata_dev_select(struct ata_port *ap, unsigned int device,
930 unsigned int wait, unsigned int can_sleep)
932 VPRINTK("ENTER, ata%u: device %u, wait %u\n",
933 ap->id, device, wait);
938 ap->ops->dev_select(ap, device);
941 if (can_sleep && ap->device[device].class == ATA_DEV_ATAPI)
948 * ata_dump_id - IDENTIFY DEVICE info debugging output
949 * @dev: Device whose IDENTIFY DEVICE page we will dump
951 * Dump selected 16-bit words from a detected device's
952 * IDENTIFY PAGE page.
958 static inline void ata_dump_id(struct ata_device *dev)
960 DPRINTK("49==0x%04x "
970 DPRINTK("80==0x%04x "
980 DPRINTK("88==0x%04x "
987 * ata_dev_identify - obtain IDENTIFY x DEVICE page
988 * @ap: port on which device we wish to probe resides
989 * @device: device bus address, starting at zero
991 * Following bus reset, we issue the IDENTIFY [PACKET] DEVICE
992 * command, and read back the 512-byte device information page.
993 * The device information page is fed to us via the standard
994 * PIO-IN protocol, but we hand-code it here. (TODO: investigate
995 * using standard PIO-IN paths)
997 * After reading the device information page, we use several
998 * bits of information from it to initialize data structures
999 * that will be used during the lifetime of the ata_device.
1000 * Other data from the info page is used to disqualify certain
1001 * older ATA devices we do not wish to support.
1004 * Inherited from caller. Some functions called by this function
1005 * obtain the host_set lock.
1008 static void ata_dev_identify(struct ata_port *ap, unsigned int device)
1010 struct ata_device *dev = &ap->device[device];
1013 unsigned long xfer_modes;
1015 unsigned int using_edd;
1016 DECLARE_COMPLETION(wait);
1017 struct ata_queued_cmd *qc;
1018 unsigned long flags;
1021 if (!ata_dev_present(dev)) {
1022 DPRINTK("ENTER/EXIT (host %u, dev %u) -- nodev\n",
1027 if (ap->flags & (ATA_FLAG_SRST | ATA_FLAG_SATA_RESET))
1032 DPRINTK("ENTER, host %u, dev %u\n", ap->id, device);
1034 assert (dev->class == ATA_DEV_ATA || dev->class == ATA_DEV_ATAPI ||
1035 dev->class == ATA_DEV_NONE);
1037 ata_dev_select(ap, device, 1, 1); /* select device 0/1 */
1039 qc = ata_qc_new_init(ap, dev);
1042 ata_sg_init_one(qc, dev->id, sizeof(dev->id));
1043 qc->dma_dir = DMA_FROM_DEVICE;
1044 qc->tf.protocol = ATA_PROT_PIO;
1048 if (dev->class == ATA_DEV_ATA) {
1049 qc->tf.command = ATA_CMD_ID_ATA;
1050 DPRINTK("do ATA identify\n");
1052 qc->tf.command = ATA_CMD_ID_ATAPI;
1053 DPRINTK("do ATAPI identify\n");
1056 qc->waiting = &wait;
1057 qc->complete_fn = ata_qc_complete_noop;
1059 spin_lock_irqsave(&ap->host_set->lock, flags);
1060 rc = ata_qc_issue(qc);
1061 spin_unlock_irqrestore(&ap->host_set->lock, flags);
1066 wait_for_completion(&wait);
1068 status = ata_chk_status(ap);
1069 if (status & ATA_ERR) {
1071 * arg! EDD works for all test cases, but seems to return
1072 * the ATA signature for some ATAPI devices. Until the
1073 * reason for this is found and fixed, we fix up the mess
1074 * here. If IDENTIFY DEVICE returns command aborted
1075 * (as ATAPI devices do), then we issue an
1076 * IDENTIFY PACKET DEVICE.
1078 * ATA software reset (SRST, the default) does not appear
1079 * to have this problem.
1081 if ((using_edd) && (qc->tf.command == ATA_CMD_ID_ATA)) {
1082 u8 err = ata_chk_err(ap);
1083 if (err & ATA_ABORTED) {
1084 dev->class = ATA_DEV_ATAPI;
1095 swap_buf_le16(dev->id, ATA_ID_WORDS);
1097 /* print device capabilities */
1098 printk(KERN_DEBUG "ata%u: dev %u cfg "
1099 "49:%04x 82:%04x 83:%04x 84:%04x 85:%04x 86:%04x 87:%04x 88:%04x\n",
1100 ap->id, device, dev->id[49],
1101 dev->id[82], dev->id[83], dev->id[84],
1102 dev->id[85], dev->id[86], dev->id[87],
1106 * common ATA, ATAPI feature tests
1109 /* we require LBA and DMA support (bits 8 & 9 of word 49) */
1110 if (!ata_id_has_dma(dev->id) || !ata_id_has_lba(dev->id)) {
1111 printk(KERN_DEBUG "ata%u: no dma/lba\n", ap->id);
1115 /* quick-n-dirty find max transfer mode; for printk only */
1116 xfer_modes = dev->id[ATA_ID_UDMA_MODES];
1118 xfer_modes = (dev->id[ATA_ID_MWDMA_MODES]) << ATA_SHIFT_MWDMA;
1120 xfer_modes = (dev->id[ATA_ID_PIO_MODES]) << (ATA_SHIFT_PIO + 3);
1121 xfer_modes |= (0x7 << ATA_SHIFT_PIO);
1126 /* ATA-specific feature tests */
1127 if (dev->class == ATA_DEV_ATA) {
1128 if (!ata_id_is_ata(dev->id)) /* sanity check */
1131 tmp = dev->id[ATA_ID_MAJOR_VER];
1132 for (i = 14; i >= 1; i--)
1136 /* we require at least ATA-3 */
1138 printk(KERN_DEBUG "ata%u: no ATA-3\n", ap->id);
1142 if (ata_id_has_lba48(dev->id)) {
1143 dev->flags |= ATA_DFLAG_LBA48;
1144 dev->n_sectors = ata_id_u64(dev->id, 100);
1146 dev->n_sectors = ata_id_u32(dev->id, 60);
1149 ap->host->max_cmd_len = 16;
1151 /* print device info to dmesg */
1152 printk(KERN_INFO "ata%u: dev %u ATA, max %s, %Lu sectors:%s\n",
1154 ata_mode_string(xfer_modes),
1155 (unsigned long long)dev->n_sectors,
1156 dev->flags & ATA_DFLAG_LBA48 ? " lba48" : "");
1159 /* ATAPI-specific feature tests */
1161 if (ata_id_is_ata(dev->id)) /* sanity check */
1164 rc = atapi_cdb_len(dev->id);
1165 if ((rc < 12) || (rc > ATAPI_CDB_LEN)) {
1166 printk(KERN_WARNING "ata%u: unsupported CDB len\n", ap->id);
1169 ap->cdb_len = (unsigned int) rc;
1170 ap->host->max_cmd_len = (unsigned char) ap->cdb_len;
1172 /* print device info to dmesg */
1173 printk(KERN_INFO "ata%u: dev %u ATAPI, max %s\n",
1175 ata_mode_string(xfer_modes));
1178 DPRINTK("EXIT, drv_stat = 0x%x\n", ata_chk_status(ap));
1182 printk(KERN_WARNING "ata%u: dev %u not supported, ignoring\n",
1185 dev->class++; /* converts ATA_DEV_xxx into ATA_DEV_xxx_UNSUP */
1186 DPRINTK("EXIT, err\n");
1190 * ata_bus_probe - Reset and probe ATA bus
1196 * Zero on success, non-zero on error.
1199 static int ata_bus_probe(struct ata_port *ap)
1201 unsigned int i, found = 0;
1203 ap->ops->phy_reset(ap);
1204 if (ap->flags & ATA_FLAG_PORT_DISABLED)
1207 for (i = 0; i < ATA_MAX_DEVICES; i++) {
1208 ata_dev_identify(ap, i);
1209 if (ata_dev_present(&ap->device[i])) {
1211 if (ap->ops->dev_config)
1212 ap->ops->dev_config(ap, &ap->device[i]);
1216 if ((!found) || (ap->flags & ATA_FLAG_PORT_DISABLED))
1217 goto err_out_disable;
1220 if (ap->flags & ATA_FLAG_PORT_DISABLED)
1221 goto err_out_disable;
1226 ap->ops->port_disable(ap);
1238 void ata_port_probe(struct ata_port *ap)
1240 ap->flags &= ~ATA_FLAG_PORT_DISABLED;
1244 * __sata_phy_reset -
1250 void __sata_phy_reset(struct ata_port *ap)
1253 unsigned long timeout = jiffies + (HZ * 5);
1255 if (ap->flags & ATA_FLAG_SATA_RESET) {
1256 /* issue phy wake/reset */
1257 scr_write_flush(ap, SCR_CONTROL, 0x301);
1258 udelay(400); /* FIXME: a guess */
1260 scr_write_flush(ap, SCR_CONTROL, 0x300); /* phy wake/clear reset */
1262 /* wait for phy to become ready, if necessary */
1265 sstatus = scr_read(ap, SCR_STATUS);
1266 if ((sstatus & 0xf) != 1)
1268 } while (time_before(jiffies, timeout));
1270 /* TODO: phy layer with polling, timeouts, etc. */
1271 if (sata_dev_present(ap))
1274 sstatus = scr_read(ap, SCR_STATUS);
1275 printk(KERN_INFO "ata%u: no device found (phy stat %08x)\n",
1277 ata_port_disable(ap);
1280 if (ap->flags & ATA_FLAG_PORT_DISABLED)
1283 if (ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT)) {
1284 ata_port_disable(ap);
1288 ap->cbl = ATA_CBL_SATA;
1292 * __sata_phy_reset -
1298 void sata_phy_reset(struct ata_port *ap)
1300 __sata_phy_reset(ap);
1301 if (ap->flags & ATA_FLAG_PORT_DISABLED)
1307 * ata_port_disable -
1313 void ata_port_disable(struct ata_port *ap)
1315 ap->device[0].class = ATA_DEV_NONE;
1316 ap->device[1].class = ATA_DEV_NONE;
1317 ap->flags |= ATA_FLAG_PORT_DISABLED;
1323 } xfer_mode_classes[] = {
1324 { ATA_SHIFT_UDMA, XFER_UDMA_0 },
1325 { ATA_SHIFT_MWDMA, XFER_MW_DMA_0 },
1326 { ATA_SHIFT_PIO, XFER_PIO_0 },
1329 static inline u8 base_from_shift(unsigned int shift)
1333 for (i = 0; i < ARRAY_SIZE(xfer_mode_classes); i++)
1334 if (xfer_mode_classes[i].shift == shift)
1335 return xfer_mode_classes[i].base;
1340 static void ata_dev_set_mode(struct ata_port *ap, struct ata_device *dev)
1345 if (!ata_dev_present(dev) || (ap->flags & ATA_FLAG_PORT_DISABLED))
1348 if (dev->xfer_shift == ATA_SHIFT_PIO)
1349 dev->flags |= ATA_DFLAG_PIO;
1351 ata_dev_set_xfermode(ap, dev);
1353 base = base_from_shift(dev->xfer_shift);
1354 ofs = dev->xfer_mode - base;
1355 idx = ofs + dev->xfer_shift;
1356 WARN_ON(idx >= ARRAY_SIZE(xfer_mode_str));
1358 DPRINTK("idx=%d xfer_shift=%u, xfer_mode=0x%x, base=0x%x, offset=%d\n",
1359 idx, dev->xfer_shift, (int)dev->xfer_mode, (int)base, ofs);
1361 printk(KERN_INFO "ata%u: dev %u configured for %s\n",
1362 ap->id, dev->devno, xfer_mode_str[idx]);
1365 static int ata_host_set_pio(struct ata_port *ap)
1371 mask = ata_get_mode_mask(ap, ATA_SHIFT_PIO);
1374 printk(KERN_WARNING "ata%u: no PIO support\n", ap->id);
1378 base = base_from_shift(ATA_SHIFT_PIO);
1379 xfer_mode = base + x;
1381 DPRINTK("base 0x%x xfer_mode 0x%x mask 0x%x x %d\n",
1382 (int)base, (int)xfer_mode, mask, x);
1384 for (i = 0; i < ATA_MAX_DEVICES; i++) {
1385 struct ata_device *dev = &ap->device[i];
1386 if (ata_dev_present(dev)) {
1387 dev->pio_mode = xfer_mode;
1388 dev->xfer_mode = xfer_mode;
1389 dev->xfer_shift = ATA_SHIFT_PIO;
1390 if (ap->ops->set_piomode)
1391 ap->ops->set_piomode(ap, dev);
1398 static void ata_host_set_dma(struct ata_port *ap, u8 xfer_mode,
1399 unsigned int xfer_shift)
1403 for (i = 0; i < ATA_MAX_DEVICES; i++) {
1404 struct ata_device *dev = &ap->device[i];
1405 if (ata_dev_present(dev)) {
1406 dev->dma_mode = xfer_mode;
1407 dev->xfer_mode = xfer_mode;
1408 dev->xfer_shift = xfer_shift;
1409 if (ap->ops->set_dmamode)
1410 ap->ops->set_dmamode(ap, dev);
1416 * ata_set_mode - Program timings and issue SET FEATURES - XFER
1417 * @ap: port on which timings will be programmed
1422 static void ata_set_mode(struct ata_port *ap)
1424 unsigned int i, xfer_shift;
1428 /* step 1: always set host PIO timings */
1429 rc = ata_host_set_pio(ap);
1433 /* step 2: choose the best data xfer mode */
1434 xfer_mode = xfer_shift = 0;
1435 rc = ata_choose_xfer_mode(ap, &xfer_mode, &xfer_shift);
1439 /* step 3: if that xfer mode isn't PIO, set host DMA timings */
1440 if (xfer_shift != ATA_SHIFT_PIO)
1441 ata_host_set_dma(ap, xfer_mode, xfer_shift);
1443 /* step 4: update devices' xfer mode */
1444 ata_dev_set_mode(ap, &ap->device[0]);
1445 ata_dev_set_mode(ap, &ap->device[1]);
1447 if (ap->flags & ATA_FLAG_PORT_DISABLED)
1450 if (ap->ops->post_set_mode)
1451 ap->ops->post_set_mode(ap);
1453 for (i = 0; i < 2; i++) {
1454 struct ata_device *dev = &ap->device[i];
1455 ata_dev_set_protocol(dev);
1461 ata_port_disable(ap);
1465 * ata_busy_sleep - sleep until BSY clears, or timeout
1466 * @ap: port containing status register to be polled
1467 * @tmout_pat: impatience timeout
1468 * @tmout: overall timeout
1474 static unsigned int ata_busy_sleep (struct ata_port *ap,
1475 unsigned long tmout_pat,
1476 unsigned long tmout)
1478 unsigned long timer_start, timeout;
1481 status = ata_busy_wait(ap, ATA_BUSY, 300);
1482 timer_start = jiffies;
1483 timeout = timer_start + tmout_pat;
1484 while ((status & ATA_BUSY) && (time_before(jiffies, timeout))) {
1486 status = ata_busy_wait(ap, ATA_BUSY, 3);
1489 if (status & ATA_BUSY)
1490 printk(KERN_WARNING "ata%u is slow to respond, "
1491 "please be patient\n", ap->id);
1493 timeout = timer_start + tmout;
1494 while ((status & ATA_BUSY) && (time_before(jiffies, timeout))) {
1496 status = ata_chk_status(ap);
1499 if (status & ATA_BUSY) {
1500 printk(KERN_ERR "ata%u failed to respond (%lu secs)\n",
1501 ap->id, tmout / HZ);
1508 static void ata_bus_post_reset(struct ata_port *ap, unsigned int devmask)
1510 struct ata_ioports *ioaddr = &ap->ioaddr;
1511 unsigned int dev0 = devmask & (1 << 0);
1512 unsigned int dev1 = devmask & (1 << 1);
1513 unsigned long timeout;
1515 /* if device 0 was found in ata_devchk, wait for its
1519 ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT);
1521 /* if device 1 was found in ata_devchk, wait for
1522 * register access, then wait for BSY to clear
1524 timeout = jiffies + ATA_TMOUT_BOOT;
1528 ap->ops->dev_select(ap, 1);
1529 if (ap->flags & ATA_FLAG_MMIO) {
1530 nsect = readb((void __iomem *) ioaddr->nsect_addr);
1531 lbal = readb((void __iomem *) ioaddr->lbal_addr);
1533 nsect = inb(ioaddr->nsect_addr);
1534 lbal = inb(ioaddr->lbal_addr);
1536 if ((nsect == 1) && (lbal == 1))
1538 if (time_after(jiffies, timeout)) {
1542 msleep(50); /* give drive a breather */
1545 ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT);
1547 /* is all this really necessary? */
1548 ap->ops->dev_select(ap, 0);
1550 ap->ops->dev_select(ap, 1);
1552 ap->ops->dev_select(ap, 0);
1563 static unsigned int ata_bus_edd(struct ata_port *ap)
1565 struct ata_taskfile tf;
1567 /* set up execute-device-diag (bus reset) taskfile */
1568 /* also, take interrupts to a known state (disabled) */
1569 DPRINTK("execute-device-diag\n");
1570 ata_tf_init(ap, &tf, 0);
1572 tf.command = ATA_CMD_EDD;
1573 tf.protocol = ATA_PROT_NODATA;
1576 ata_tf_to_host(ap, &tf);
1578 /* spec says at least 2ms. but who knows with those
1579 * crazy ATAPI devices...
1583 return ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT);
1586 static unsigned int ata_bus_softreset(struct ata_port *ap,
1587 unsigned int devmask)
1589 struct ata_ioports *ioaddr = &ap->ioaddr;
1591 DPRINTK("ata%u: bus reset via SRST\n", ap->id);
1593 /* software reset. causes dev0 to be selected */
1594 if (ap->flags & ATA_FLAG_MMIO) {
1595 writeb(ap->ctl, (void __iomem *) ioaddr->ctl_addr);
1596 udelay(20); /* FIXME: flush */
1597 writeb(ap->ctl | ATA_SRST, (void __iomem *) ioaddr->ctl_addr);
1598 udelay(20); /* FIXME: flush */
1599 writeb(ap->ctl, (void __iomem *) ioaddr->ctl_addr);
1601 outb(ap->ctl, ioaddr->ctl_addr);
1603 outb(ap->ctl | ATA_SRST, ioaddr->ctl_addr);
1605 outb(ap->ctl, ioaddr->ctl_addr);
1608 /* spec mandates ">= 2ms" before checking status.
1609 * We wait 150ms, because that was the magic delay used for
1610 * ATAPI devices in Hale Landis's ATADRVR, for the period of time
1611 * between when the ATA command register is written, and then
1612 * status is checked. Because waiting for "a while" before
1613 * checking status is fine, post SRST, we perform this magic
1614 * delay here as well.
1618 ata_bus_post_reset(ap, devmask);
1624 * ata_bus_reset - reset host port and associated ATA channel
1625 * @ap: port to reset
1627 * This is typically the first time we actually start issuing
1628 * commands to the ATA channel. We wait for BSY to clear, then
1629 * issue EXECUTE DEVICE DIAGNOSTIC command, polling for its
1630 * result. Determine what devices, if any, are on the channel
1631 * by looking at the device 0/1 error register. Look at the signature
1632 * stored in each device's taskfile registers, to determine if
1633 * the device is ATA or ATAPI.
1636 * Inherited from caller. Some functions called by this function
1637 * obtain the host_set lock.
1640 * Sets ATA_FLAG_PORT_DISABLED if bus reset fails.
1643 void ata_bus_reset(struct ata_port *ap)
1645 struct ata_ioports *ioaddr = &ap->ioaddr;
1646 unsigned int slave_possible = ap->flags & ATA_FLAG_SLAVE_POSS;
1648 unsigned int dev0, dev1 = 0, rc = 0, devmask = 0;
1650 DPRINTK("ENTER, host %u, port %u\n", ap->id, ap->port_no);
1652 /* determine if device 0/1 are present */
1653 if (ap->flags & ATA_FLAG_SATA_RESET)
1656 dev0 = ata_devchk(ap, 0);
1658 dev1 = ata_devchk(ap, 1);
1662 devmask |= (1 << 0);
1664 devmask |= (1 << 1);
1666 /* select device 0 again */
1667 ap->ops->dev_select(ap, 0);
1669 /* issue bus reset */
1670 if (ap->flags & ATA_FLAG_SRST)
1671 rc = ata_bus_softreset(ap, devmask);
1672 else if ((ap->flags & ATA_FLAG_SATA_RESET) == 0) {
1673 /* set up device control */
1674 if (ap->flags & ATA_FLAG_MMIO)
1675 writeb(ap->ctl, (void __iomem *) ioaddr->ctl_addr);
1677 outb(ap->ctl, ioaddr->ctl_addr);
1678 rc = ata_bus_edd(ap);
1685 * determine by signature whether we have ATA or ATAPI devices
1687 err = ata_dev_try_classify(ap, 0);
1688 if ((slave_possible) && (err != 0x81))
1689 ata_dev_try_classify(ap, 1);
1691 /* re-enable interrupts */
1692 if (ap->ioaddr.ctl_addr) /* FIXME: hack. create a hook instead */
1695 /* is double-select really necessary? */
1696 if (ap->device[1].class != ATA_DEV_NONE)
1697 ap->ops->dev_select(ap, 1);
1698 if (ap->device[0].class != ATA_DEV_NONE)
1699 ap->ops->dev_select(ap, 0);
1701 /* if no devices were detected, disable this port */
1702 if ((ap->device[0].class == ATA_DEV_NONE) &&
1703 (ap->device[1].class == ATA_DEV_NONE))
1706 if (ap->flags & (ATA_FLAG_SATA_RESET | ATA_FLAG_SRST)) {
1707 /* set up device control for ATA_FLAG_SATA_RESET */
1708 if (ap->flags & ATA_FLAG_MMIO)
1709 writeb(ap->ctl, (void __iomem *) ioaddr->ctl_addr);
1711 outb(ap->ctl, ioaddr->ctl_addr);
1718 printk(KERN_ERR "ata%u: disabling port\n", ap->id);
1719 ap->ops->port_disable(ap);
1724 static void ata_pr_blacklisted(struct ata_port *ap, struct ata_device *dev)
1726 printk(KERN_WARNING "ata%u: dev %u is on DMA blacklist, disabling DMA\n",
1727 ap->id, dev->devno);
1730 static const char * ata_dma_blacklist [] = {
1749 "Toshiba CD-ROM XM-6202B",
1751 "E-IDE CD-ROM CR-840",
1754 "SAMSUNG CD-ROM SC-148C",
1755 "SAMSUNG CD-ROM SC",
1757 "SAMSUNG CD-ROM SN-124",
1758 "ATAPI CD-ROM DRIVE 40X MAXIMUM",
1762 static int ata_dma_blacklisted(struct ata_port *ap, struct ata_device *dev)
1764 unsigned char model_num[40];
1769 ata_dev_id_string(dev->id, model_num, ATA_ID_PROD_OFS,
1772 len = strnlen(s, sizeof(model_num));
1774 /* ATAPI specifies that empty space is blank-filled; remove blanks */
1775 while ((len > 0) && (s[len - 1] == ' ')) {
1780 for (i = 0; i < ARRAY_SIZE(ata_dma_blacklist); i++)
1781 if (!strncmp(ata_dma_blacklist[i], s, len))
1787 static unsigned int ata_get_mode_mask(struct ata_port *ap, int shift)
1789 struct ata_device *master, *slave;
1792 master = &ap->device[0];
1793 slave = &ap->device[1];
1795 assert (ata_dev_present(master) || ata_dev_present(slave));
1797 if (shift == ATA_SHIFT_UDMA) {
1798 mask = ap->udma_mask;
1799 if (ata_dev_present(master)) {
1800 mask &= (master->id[ATA_ID_UDMA_MODES] & 0xff);
1801 if (ata_dma_blacklisted(ap, master)) {
1803 ata_pr_blacklisted(ap, master);
1806 if (ata_dev_present(slave)) {
1807 mask &= (slave->id[ATA_ID_UDMA_MODES] & 0xff);
1808 if (ata_dma_blacklisted(ap, slave)) {
1810 ata_pr_blacklisted(ap, slave);
1814 else if (shift == ATA_SHIFT_MWDMA) {
1815 mask = ap->mwdma_mask;
1816 if (ata_dev_present(master)) {
1817 mask &= (master->id[ATA_ID_MWDMA_MODES] & 0x07);
1818 if (ata_dma_blacklisted(ap, master)) {
1820 ata_pr_blacklisted(ap, master);
1823 if (ata_dev_present(slave)) {
1824 mask &= (slave->id[ATA_ID_MWDMA_MODES] & 0x07);
1825 if (ata_dma_blacklisted(ap, slave)) {
1827 ata_pr_blacklisted(ap, slave);
1831 else if (shift == ATA_SHIFT_PIO) {
1832 mask = ap->pio_mask;
1833 if (ata_dev_present(master)) {
1834 /* spec doesn't return explicit support for
1835 * PIO0-2, so we fake it
1837 u16 tmp_mode = master->id[ATA_ID_PIO_MODES] & 0x03;
1842 if (ata_dev_present(slave)) {
1843 /* spec doesn't return explicit support for
1844 * PIO0-2, so we fake it
1846 u16 tmp_mode = slave->id[ATA_ID_PIO_MODES] & 0x03;
1853 mask = 0xffffffff; /* shut up compiler warning */
1860 /* find greatest bit */
1861 static int fgb(u32 bitmap)
1866 for (i = 0; i < 32; i++)
1867 if (bitmap & (1 << i))
1874 * ata_choose_xfer_mode - attempt to find best transfer mode
1875 * @ap: Port for which an xfer mode will be selected
1876 * @xfer_mode_out: (output) SET FEATURES - XFER MODE code
1877 * @xfer_shift_out: (output) bit shift that selects this mode
1882 * Zero on success, negative on error.
1885 static int ata_choose_xfer_mode(struct ata_port *ap,
1887 unsigned int *xfer_shift_out)
1889 unsigned int mask, shift;
1892 for (i = 0; i < ARRAY_SIZE(xfer_mode_classes); i++) {
1893 shift = xfer_mode_classes[i].shift;
1894 mask = ata_get_mode_mask(ap, shift);
1898 *xfer_mode_out = xfer_mode_classes[i].base + x;
1899 *xfer_shift_out = shift;
1908 * ata_dev_set_xfermode - Issue SET FEATURES - XFER MODE command
1909 * @ap: Port associated with device @dev
1910 * @dev: Device to which command will be sent
1915 static void ata_dev_set_xfermode(struct ata_port *ap, struct ata_device *dev)
1917 DECLARE_COMPLETION(wait);
1918 struct ata_queued_cmd *qc;
1920 unsigned long flags;
1922 /* set up set-features taskfile */
1923 DPRINTK("set features - xfer mode\n");
1925 qc = ata_qc_new_init(ap, dev);
1928 qc->tf.command = ATA_CMD_SET_FEATURES;
1929 qc->tf.feature = SETFEATURES_XFER;
1930 qc->tf.flags |= ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE;
1931 qc->tf.protocol = ATA_PROT_NODATA;
1932 qc->tf.nsect = dev->xfer_mode;
1934 qc->waiting = &wait;
1935 qc->complete_fn = ata_qc_complete_noop;
1937 spin_lock_irqsave(&ap->host_set->lock, flags);
1938 rc = ata_qc_issue(qc);
1939 spin_unlock_irqrestore(&ap->host_set->lock, flags);
1942 ata_port_disable(ap);
1944 wait_for_completion(&wait);
1956 static void ata_sg_clean(struct ata_queued_cmd *qc)
1958 struct ata_port *ap = qc->ap;
1959 struct scatterlist *sg = qc->sg;
1960 int dir = qc->dma_dir;
1962 assert(qc->flags & ATA_QCFLAG_DMAMAP);
1965 if (qc->flags & ATA_QCFLAG_SINGLE)
1966 assert(qc->n_elem == 1);
1968 DPRINTK("unmapping %u sg elements\n", qc->n_elem);
1970 if (qc->flags & ATA_QCFLAG_SG)
1971 dma_unmap_sg(ap->host_set->dev, sg, qc->n_elem, dir);
1973 dma_unmap_single(ap->host_set->dev, sg_dma_address(&sg[0]),
1974 sg_dma_len(&sg[0]), dir);
1976 qc->flags &= ~ATA_QCFLAG_DMAMAP;
1981 * ata_fill_sg - Fill PCI IDE PRD table
1982 * @qc: Metadata associated with taskfile to be transferred
1987 static void ata_fill_sg(struct ata_queued_cmd *qc)
1989 struct scatterlist *sg = qc->sg;
1990 struct ata_port *ap = qc->ap;
1991 unsigned int idx, nelem;
1994 assert(qc->n_elem > 0);
1997 for (nelem = qc->n_elem; nelem; nelem--,sg++) {
2001 /* determine if physical DMA addr spans 64K boundary.
2002 * Note h/w doesn't support 64-bit, so we unconditionally
2003 * truncate dma_addr_t to u32.
2005 addr = (u32) sg_dma_address(sg);
2006 sg_len = sg_dma_len(sg);
2009 offset = addr & 0xffff;
2011 if ((offset + sg_len) > 0x10000)
2012 len = 0x10000 - offset;
2014 ap->prd[idx].addr = cpu_to_le32(addr);
2015 ap->prd[idx].flags_len = cpu_to_le32(len & 0xffff);
2016 VPRINTK("PRD[%u] = (0x%X, 0x%X)\n", idx, addr, len);
2025 ap->prd[idx - 1].flags_len |= cpu_to_le32(ATA_PRD_EOT);
2028 * ata_check_atapi_dma - Check whether ATAPI DMA can be supported
2029 * @qc: Metadata associated with taskfile to check
2032 * RETURNS: 0 when ATAPI DMA can be used
2035 int ata_check_atapi_dma(struct ata_queued_cmd *qc)
2037 struct ata_port *ap = qc->ap;
2038 int rc = 0; /* Assume ATAPI DMA is OK by default */
2040 if (ap->ops->check_atapi_dma)
2041 rc = ap->ops->check_atapi_dma(qc);
2046 * ata_qc_prep - Prepare taskfile for submission
2047 * @qc: Metadata associated with taskfile to be prepared
2050 * spin_lock_irqsave(host_set lock)
2052 void ata_qc_prep(struct ata_queued_cmd *qc)
2054 if (!(qc->flags & ATA_QCFLAG_DMAMAP))
2060 void ata_sg_init_one(struct ata_queued_cmd *qc, void *buf, unsigned int buflen)
2062 struct scatterlist *sg;
2064 qc->flags |= ATA_QCFLAG_SINGLE;
2066 memset(&qc->sgent, 0, sizeof(qc->sgent));
2067 qc->sg = &qc->sgent;
2072 sg->page = virt_to_page(buf);
2073 sg->offset = (unsigned long) buf & ~PAGE_MASK;
2074 sg_dma_len(sg) = buflen;
2077 void ata_sg_init(struct ata_queued_cmd *qc, struct scatterlist *sg,
2078 unsigned int n_elem)
2080 qc->flags |= ATA_QCFLAG_SG;
2082 qc->n_elem = n_elem;
2086 * ata_sg_setup_one -
2090 * spin_lock_irqsave(host_set lock)
2096 static int ata_sg_setup_one(struct ata_queued_cmd *qc)
2098 struct ata_port *ap = qc->ap;
2099 int dir = qc->dma_dir;
2100 struct scatterlist *sg = qc->sg;
2101 dma_addr_t dma_address;
2103 dma_address = dma_map_single(ap->host_set->dev, qc->buf_virt,
2104 sg_dma_len(sg), dir);
2105 if (dma_mapping_error(dma_address))
2108 sg_dma_address(sg) = dma_address;
2110 DPRINTK("mapped buffer of %d bytes for %s\n", sg_dma_len(sg),
2111 qc->tf.flags & ATA_TFLAG_WRITE ? "write" : "read");
2121 * spin_lock_irqsave(host_set lock)
2127 static int ata_sg_setup(struct ata_queued_cmd *qc)
2129 struct ata_port *ap = qc->ap;
2130 struct scatterlist *sg = qc->sg;
2133 VPRINTK("ENTER, ata%u\n", ap->id);
2134 assert(qc->flags & ATA_QCFLAG_SG);
2137 n_elem = dma_map_sg(ap->host_set->dev, sg, qc->n_elem, dir);
2141 DPRINTK("%d sg elements mapped\n", n_elem);
2143 qc->n_elem = n_elem;
2158 static unsigned long ata_pio_poll(struct ata_port *ap)
2161 unsigned int poll_state = PIO_ST_UNKNOWN;
2162 unsigned int reg_state = PIO_ST_UNKNOWN;
2163 const unsigned int tmout_state = PIO_ST_TMOUT;
2165 switch (ap->pio_task_state) {
2168 poll_state = PIO_ST_POLL;
2172 case PIO_ST_LAST_POLL:
2173 poll_state = PIO_ST_LAST_POLL;
2174 reg_state = PIO_ST_LAST;
2181 status = ata_chk_status(ap);
2182 if (status & ATA_BUSY) {
2183 if (time_after(jiffies, ap->pio_task_timeout)) {
2184 ap->pio_task_state = tmout_state;
2187 ap->pio_task_state = poll_state;
2188 return ATA_SHORT_PAUSE;
2191 ap->pio_task_state = reg_state;
2196 * ata_pio_complete -
2202 static void ata_pio_complete (struct ata_port *ap)
2204 struct ata_queued_cmd *qc;
2208 * This is purely hueristic. This is a fast path.
2209 * Sometimes when we enter, BSY will be cleared in
2210 * a chk-status or two. If not, the drive is probably seeking
2211 * or something. Snooze for a couple msecs, then
2212 * chk-status again. If still busy, fall back to
2213 * PIO_ST_POLL state.
2215 drv_stat = ata_busy_wait(ap, ATA_BUSY | ATA_DRQ, 10);
2216 if (drv_stat & (ATA_BUSY | ATA_DRQ)) {
2218 drv_stat = ata_busy_wait(ap, ATA_BUSY | ATA_DRQ, 10);
2219 if (drv_stat & (ATA_BUSY | ATA_DRQ)) {
2220 ap->pio_task_state = PIO_ST_LAST_POLL;
2221 ap->pio_task_timeout = jiffies + ATA_TMOUT_PIO;
2226 drv_stat = ata_wait_idle(ap);
2227 if (!ata_ok(drv_stat)) {
2228 ap->pio_task_state = PIO_ST_ERR;
2232 qc = ata_qc_from_tag(ap, ap->active_tag);
2235 ap->pio_task_state = PIO_ST_IDLE;
2239 ata_qc_complete(qc, drv_stat);
2242 void swap_buf_le16(u16 *buf, unsigned int buf_words)
2247 for (i = 0; i < buf_words; i++)
2248 buf[i] = le16_to_cpu(buf[i]);
2249 #endif /* __BIG_ENDIAN */
2252 static void ata_mmio_data_xfer(struct ata_port *ap, unsigned char *buf,
2253 unsigned int buflen, int write_data)
2256 unsigned int words = buflen >> 1;
2257 u16 *buf16 = (u16 *) buf;
2258 void __iomem *mmio = (void __iomem *)ap->ioaddr.data_addr;
2261 for (i = 0; i < words; i++)
2262 writew(le16_to_cpu(buf16[i]), mmio);
2264 for (i = 0; i < words; i++)
2265 buf16[i] = cpu_to_le16(readw(mmio));
2269 static void ata_pio_data_xfer(struct ata_port *ap, unsigned char *buf,
2270 unsigned int buflen, int write_data)
2272 unsigned int dwords = buflen >> 1;
2275 outsw(ap->ioaddr.data_addr, buf, dwords);
2277 insw(ap->ioaddr.data_addr, buf, dwords);
2280 static void ata_data_xfer(struct ata_port *ap, unsigned char *buf,
2281 unsigned int buflen, int do_write)
2283 if (ap->flags & ATA_FLAG_MMIO)
2284 ata_mmio_data_xfer(ap, buf, buflen, do_write);
2286 ata_pio_data_xfer(ap, buf, buflen, do_write);
2289 static void ata_pio_sector(struct ata_queued_cmd *qc)
2291 int do_write = (qc->tf.flags & ATA_TFLAG_WRITE);
2292 struct scatterlist *sg = qc->sg;
2293 struct ata_port *ap = qc->ap;
2295 unsigned int offset;
2298 if (qc->cursect == (qc->nsect - 1))
2299 ap->pio_task_state = PIO_ST_LAST;
2301 page = sg[qc->cursg].page;
2302 offset = sg[qc->cursg].offset + qc->cursg_ofs * ATA_SECT_SIZE;
2304 /* get the current page and offset */
2305 page = nth_page(page, (offset >> PAGE_SHIFT));
2306 offset %= PAGE_SIZE;
2308 buf = kmap(page) + offset;
2313 if ((qc->cursg_ofs * ATA_SECT_SIZE) == sg_dma_len(&sg[qc->cursg])) {
2318 DPRINTK("data %s\n", qc->tf.flags & ATA_TFLAG_WRITE ? "write" : "read");
2320 /* do the actual data transfer */
2321 do_write = (qc->tf.flags & ATA_TFLAG_WRITE);
2322 ata_data_xfer(ap, buf, ATA_SECT_SIZE, do_write);
2327 static void __atapi_pio_bytes(struct ata_queued_cmd *qc, unsigned int bytes)
2329 int do_write = (qc->tf.flags & ATA_TFLAG_WRITE);
2330 struct scatterlist *sg = qc->sg;
2331 struct ata_port *ap = qc->ap;
2334 unsigned int offset, count;
2336 if (qc->curbytes == qc->nbytes - bytes)
2337 ap->pio_task_state = PIO_ST_LAST;
2340 sg = &qc->sg[qc->cursg];
2344 offset = sg->offset + qc->cursg_ofs;
2346 /* get the current page and offset */
2347 page = nth_page(page, (offset >> PAGE_SHIFT));
2348 offset %= PAGE_SIZE;
2350 count = min(sg_dma_len(sg) - qc->cursg_ofs, bytes);
2352 /* don't cross page boundaries */
2353 count = min(count, (unsigned int)PAGE_SIZE - offset);
2355 buf = kmap(page) + offset;
2358 qc->curbytes += count;
2359 qc->cursg_ofs += count;
2361 if (qc->cursg_ofs == sg_dma_len(sg)) {
2366 DPRINTK("data %s\n", qc->tf.flags & ATA_TFLAG_WRITE ? "write" : "read");
2368 /* do the actual data transfer */
2369 ata_data_xfer(ap, buf, count, do_write);
2374 if (qc->cursg_ofs < sg_dma_len(sg))
2380 static void atapi_pio_bytes(struct ata_queued_cmd *qc)
2382 struct ata_port *ap = qc->ap;
2383 struct ata_device *dev = qc->dev;
2384 unsigned int ireason, bc_lo, bc_hi, bytes;
2385 int i_write, do_write = (qc->tf.flags & ATA_TFLAG_WRITE) ? 1 : 0;
2387 ap->ops->tf_read(ap, &qc->tf);
2388 ireason = qc->tf.nsect;
2389 bc_lo = qc->tf.lbam;
2390 bc_hi = qc->tf.lbah;
2391 bytes = (bc_hi << 8) | bc_lo;
2393 /* shall be cleared to zero, indicating xfer of data */
2394 if (ireason & (1 << 0))
2397 /* make sure transfer direction matches expected */
2398 i_write = ((ireason & (1 << 1)) == 0) ? 1 : 0;
2399 if (do_write != i_write)
2402 __atapi_pio_bytes(qc, bytes);
2407 printk(KERN_INFO "ata%u: dev %u: ATAPI check failed\n",
2408 ap->id, dev->devno);
2409 ap->pio_task_state = PIO_ST_ERR;
2419 static void ata_pio_block(struct ata_port *ap)
2421 struct ata_queued_cmd *qc;
2425 * This is purely hueristic. This is a fast path.
2426 * Sometimes when we enter, BSY will be cleared in
2427 * a chk-status or two. If not, the drive is probably seeking
2428 * or something. Snooze for a couple msecs, then
2429 * chk-status again. If still busy, fall back to
2430 * PIO_ST_POLL state.
2432 status = ata_busy_wait(ap, ATA_BUSY, 5);
2433 if (status & ATA_BUSY) {
2435 status = ata_busy_wait(ap, ATA_BUSY, 10);
2436 if (status & ATA_BUSY) {
2437 ap->pio_task_state = PIO_ST_POLL;
2438 ap->pio_task_timeout = jiffies + ATA_TMOUT_PIO;
2443 qc = ata_qc_from_tag(ap, ap->active_tag);
2446 if (is_atapi_taskfile(&qc->tf)) {
2447 /* no more data to transfer or unsupported ATAPI command */
2448 if ((status & ATA_DRQ) == 0) {
2449 ap->pio_task_state = PIO_ST_IDLE;
2453 ata_qc_complete(qc, status);
2457 atapi_pio_bytes(qc);
2459 /* handle BSY=0, DRQ=0 as error */
2460 if ((status & ATA_DRQ) == 0) {
2461 ap->pio_task_state = PIO_ST_ERR;
2469 static void ata_pio_error(struct ata_port *ap)
2471 struct ata_queued_cmd *qc;
2474 qc = ata_qc_from_tag(ap, ap->active_tag);
2477 drv_stat = ata_chk_status(ap);
2478 printk(KERN_WARNING "ata%u: PIO error, drv_stat 0x%x\n",
2481 ap->pio_task_state = PIO_ST_IDLE;
2485 ata_qc_complete(qc, drv_stat | ATA_ERR);
2488 static void ata_pio_task(void *_data)
2490 struct ata_port *ap = _data;
2491 unsigned long timeout = 0;
2493 switch (ap->pio_task_state) {
2502 ata_pio_complete(ap);
2506 case PIO_ST_LAST_POLL:
2507 timeout = ata_pio_poll(ap);
2517 queue_delayed_work(ata_wq, &ap->pio_task,
2520 queue_work(ata_wq, &ap->pio_task);
2523 static void atapi_request_sense(struct ata_port *ap, struct ata_device *dev,
2524 struct scsi_cmnd *cmd)
2526 DECLARE_COMPLETION(wait);
2527 struct ata_queued_cmd *qc;
2528 unsigned long flags;
2531 DPRINTK("ATAPI request sense\n");
2533 qc = ata_qc_new_init(ap, dev);
2536 /* FIXME: is this needed? */
2537 memset(cmd->sense_buffer, 0, sizeof(cmd->sense_buffer));
2539 ata_sg_init_one(qc, cmd->sense_buffer, sizeof(cmd->sense_buffer));
2540 qc->dma_dir = DMA_FROM_DEVICE;
2542 memset(&qc->cdb, 0, ap->cdb_len);
2543 qc->cdb[0] = REQUEST_SENSE;
2544 qc->cdb[4] = SCSI_SENSE_BUFFERSIZE;
2546 qc->tf.flags |= ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE;
2547 qc->tf.command = ATA_CMD_PACKET;
2549 qc->tf.protocol = ATA_PROT_ATAPI;
2550 qc->tf.lbam = (8 * 1024) & 0xff;
2551 qc->tf.lbah = (8 * 1024) >> 8;
2552 qc->nbytes = SCSI_SENSE_BUFFERSIZE;
2554 qc->waiting = &wait;
2555 qc->complete_fn = ata_qc_complete_noop;
2557 spin_lock_irqsave(&ap->host_set->lock, flags);
2558 rc = ata_qc_issue(qc);
2559 spin_unlock_irqrestore(&ap->host_set->lock, flags);
2562 ata_port_disable(ap);
2564 wait_for_completion(&wait);
2570 * ata_qc_timeout - Handle timeout of queued command
2571 * @qc: Command that timed out
2573 * Some part of the kernel (currently, only the SCSI layer)
2574 * has noticed that the active command on port @ap has not
2575 * completed after a specified length of time. Handle this
2576 * condition by disabling DMA (if necessary) and completing
2577 * transactions, with error if necessary.
2579 * This also handles the case of the "lost interrupt", where
2580 * for some reason (possibly hardware bug, possibly driver bug)
2581 * an interrupt was not delivered to the driver, even though the
2582 * transaction completed successfully.
2587 static void ata_qc_timeout(struct ata_queued_cmd *qc)
2589 struct ata_port *ap = qc->ap;
2590 struct ata_device *dev = qc->dev;
2591 u8 host_stat = 0, drv_stat;
2595 /* FIXME: doesn't this conflict with timeout handling? */
2596 if (qc->dev->class == ATA_DEV_ATAPI && qc->scsicmd) {
2597 struct scsi_cmnd *cmd = qc->scsicmd;
2599 if (!scsi_eh_eflags_chk(cmd, SCSI_EH_CANCEL_CMD)) {
2601 /* finish completing original command */
2602 __ata_qc_complete(qc);
2604 atapi_request_sense(ap, dev, cmd);
2606 cmd->result = (CHECK_CONDITION << 1) | (DID_OK << 16);
2607 scsi_finish_command(cmd);
2613 /* hack alert! We cannot use the supplied completion
2614 * function from inside the ->eh_strategy_handler() thread.
2615 * libata is the only user of ->eh_strategy_handler() in
2616 * any kernel, so the default scsi_done() assumes it is
2617 * not being called from the SCSI EH.
2619 qc->scsidone = scsi_finish_command;
2621 switch (qc->tf.protocol) {
2624 case ATA_PROT_ATAPI_DMA:
2625 host_stat = ap->ops->bmdma_status(ap);
2627 /* before we do anything else, clear DMA-Start bit */
2628 ap->ops->bmdma_stop(ap);
2634 drv_stat = ata_chk_status(ap);
2636 /* ack bmdma irq events */
2637 ap->ops->irq_clear(ap);
2639 printk(KERN_ERR "ata%u: command 0x%x timeout, stat 0x%x host_stat 0x%x\n",
2640 ap->id, qc->tf.command, drv_stat, host_stat);
2642 /* complete taskfile transaction */
2643 ata_qc_complete(qc, drv_stat);
2651 * ata_eng_timeout - Handle timeout of queued command
2652 * @ap: Port on which timed-out command is active
2654 * Some part of the kernel (currently, only the SCSI layer)
2655 * has noticed that the active command on port @ap has not
2656 * completed after a specified length of time. Handle this
2657 * condition by disabling DMA (if necessary) and completing
2658 * transactions, with error if necessary.
2660 * This also handles the case of the "lost interrupt", where
2661 * for some reason (possibly hardware bug, possibly driver bug)
2662 * an interrupt was not delivered to the driver, even though the
2663 * transaction completed successfully.
2666 * Inherited from SCSI layer (none, can sleep)
2669 void ata_eng_timeout(struct ata_port *ap)
2671 struct ata_queued_cmd *qc;
2675 qc = ata_qc_from_tag(ap, ap->active_tag);
2677 printk(KERN_ERR "ata%u: BUG: timeout without command\n",
2689 * ata_qc_new - Request an available ATA command, for queueing
2690 * @ap: Port associated with device @dev
2691 * @dev: Device from whom we request an available command structure
2696 static struct ata_queued_cmd *ata_qc_new(struct ata_port *ap)
2698 struct ata_queued_cmd *qc = NULL;
2701 for (i = 0; i < ATA_MAX_QUEUE; i++)
2702 if (!test_and_set_bit(i, &ap->qactive)) {
2703 qc = ata_qc_from_tag(ap, i);
2714 * ata_qc_new_init - Request an available ATA command, and initialize it
2715 * @ap: Port associated with device @dev
2716 * @dev: Device from whom we request an available command structure
2721 struct ata_queued_cmd *ata_qc_new_init(struct ata_port *ap,
2722 struct ata_device *dev)
2724 struct ata_queued_cmd *qc;
2726 qc = ata_qc_new(ap);
2733 qc->cursect = qc->cursg = qc->cursg_ofs = 0;
2735 qc->nbytes = qc->curbytes = 0;
2737 ata_tf_init(ap, &qc->tf, dev->devno);
2739 if (dev->flags & ATA_DFLAG_LBA48)
2740 qc->tf.flags |= ATA_TFLAG_LBA48;
2746 static int ata_qc_complete_noop(struct ata_queued_cmd *qc, u8 drv_stat)
2751 static void __ata_qc_complete(struct ata_queued_cmd *qc)
2753 struct ata_port *ap = qc->ap;
2754 unsigned int tag, do_clear = 0;
2758 if (likely(ata_tag_valid(tag))) {
2759 if (tag == ap->active_tag)
2760 ap->active_tag = ATA_TAG_POISON;
2761 qc->tag = ATA_TAG_POISON;
2766 struct completion *waiting = qc->waiting;
2771 if (likely(do_clear))
2772 clear_bit(tag, &ap->qactive);
2776 * ata_qc_free - free unused ata_queued_cmd
2777 * @qc: Command to complete
2779 * Designed to free unused ata_queued_cmd object
2780 * in case something prevents using it.
2785 void ata_qc_free(struct ata_queued_cmd *qc)
2787 assert(qc != NULL); /* ata_qc_from_tag _might_ return NULL */
2788 assert(qc->waiting == NULL); /* nothing should be waiting */
2790 __ata_qc_complete(qc);
2794 * ata_qc_complete - Complete an active ATA command
2795 * @qc: Command to complete
2796 * @drv_stat: ATA status register contents
2802 void ata_qc_complete(struct ata_queued_cmd *qc, u8 drv_stat)
2806 assert(qc != NULL); /* ata_qc_from_tag _might_ return NULL */
2807 assert(qc->flags & ATA_QCFLAG_ACTIVE);
2809 if (likely(qc->flags & ATA_QCFLAG_DMAMAP))
2812 /* call completion callback */
2813 rc = qc->complete_fn(qc, drv_stat);
2814 qc->flags &= ~ATA_QCFLAG_ACTIVE;
2816 /* if callback indicates not to complete command (non-zero),
2817 * return immediately
2822 __ata_qc_complete(qc);
2827 static inline int ata_should_dma_map(struct ata_queued_cmd *qc)
2829 struct ata_port *ap = qc->ap;
2831 switch (qc->tf.protocol) {
2833 case ATA_PROT_ATAPI_DMA:
2836 case ATA_PROT_ATAPI:
2838 case ATA_PROT_PIO_MULT:
2839 if (ap->flags & ATA_FLAG_PIO_DMA)
2852 * ata_qc_issue - issue taskfile to device
2853 * @qc: command to issue to device
2855 * Prepare an ATA command to submission to device.
2856 * This includes mapping the data into a DMA-able
2857 * area, filling in the S/G table, and finally
2858 * writing the taskfile to hardware, starting the command.
2861 * spin_lock_irqsave(host_set lock)
2864 * Zero on success, negative on error.
2867 int ata_qc_issue(struct ata_queued_cmd *qc)
2869 struct ata_port *ap = qc->ap;
2871 if (ata_should_dma_map(qc)) {
2872 if (qc->flags & ATA_QCFLAG_SG) {
2873 if (ata_sg_setup(qc))
2875 } else if (qc->flags & ATA_QCFLAG_SINGLE) {
2876 if (ata_sg_setup_one(qc))
2880 qc->flags &= ~ATA_QCFLAG_DMAMAP;
2883 ap->ops->qc_prep(qc);
2885 qc->ap->active_tag = qc->tag;
2886 qc->flags |= ATA_QCFLAG_ACTIVE;
2888 return ap->ops->qc_issue(qc);
2895 * ata_qc_issue_prot - issue taskfile to device in proto-dependent manner
2896 * @qc: command to issue to device
2898 * Using various libata functions and hooks, this function
2899 * starts an ATA command. ATA commands are grouped into
2900 * classes called "protocols", and issuing each type of protocol
2901 * is slightly different.
2904 * spin_lock_irqsave(host_set lock)
2907 * Zero on success, negative on error.
2910 int ata_qc_issue_prot(struct ata_queued_cmd *qc)
2912 struct ata_port *ap = qc->ap;
2914 ata_dev_select(ap, qc->dev->devno, 1, 0);
2916 switch (qc->tf.protocol) {
2917 case ATA_PROT_NODATA:
2918 ata_tf_to_host_nolock(ap, &qc->tf);
2922 ap->ops->tf_load(ap, &qc->tf); /* load tf registers */
2923 ap->ops->bmdma_setup(qc); /* set up bmdma */
2924 ap->ops->bmdma_start(qc); /* initiate bmdma */
2927 case ATA_PROT_PIO: /* load tf registers, initiate polling pio */
2928 ata_qc_set_polling(qc);
2929 ata_tf_to_host_nolock(ap, &qc->tf);
2930 ap->pio_task_state = PIO_ST;
2931 queue_work(ata_wq, &ap->pio_task);
2934 case ATA_PROT_ATAPI:
2935 ata_qc_set_polling(qc);
2936 ata_tf_to_host_nolock(ap, &qc->tf);
2937 queue_work(ata_wq, &ap->packet_task);
2940 case ATA_PROT_ATAPI_NODATA:
2941 ata_tf_to_host_nolock(ap, &qc->tf);
2942 queue_work(ata_wq, &ap->packet_task);
2945 case ATA_PROT_ATAPI_DMA:
2946 ap->ops->tf_load(ap, &qc->tf); /* load tf registers */
2947 ap->ops->bmdma_setup(qc); /* set up bmdma */
2948 queue_work(ata_wq, &ap->packet_task);
2960 * ata_bmdma_setup - Set up PCI IDE BMDMA transaction
2961 * @qc: Info associated with this ATA transaction.
2964 * spin_lock_irqsave(host_set lock)
2967 static void ata_bmdma_setup_mmio (struct ata_queued_cmd *qc)
2969 struct ata_port *ap = qc->ap;
2970 unsigned int rw = (qc->tf.flags & ATA_TFLAG_WRITE);
2972 void __iomem *mmio = (void __iomem *) ap->ioaddr.bmdma_addr;
2974 /* load PRD table addr. */
2975 mb(); /* make sure PRD table writes are visible to controller */
2976 writel(ap->prd_dma, mmio + ATA_DMA_TABLE_OFS);
2978 /* specify data direction, triple-check start bit is clear */
2979 dmactl = readb(mmio + ATA_DMA_CMD);
2980 dmactl &= ~(ATA_DMA_WR | ATA_DMA_START);
2982 dmactl |= ATA_DMA_WR;
2983 writeb(dmactl, mmio + ATA_DMA_CMD);
2985 /* issue r/w command */
2986 ap->ops->exec_command(ap, &qc->tf);
2990 * ata_bmdma_start - Start a PCI IDE BMDMA transaction
2991 * @qc: Info associated with this ATA transaction.
2994 * spin_lock_irqsave(host_set lock)
2997 static void ata_bmdma_start_mmio (struct ata_queued_cmd *qc)
2999 struct ata_port *ap = qc->ap;
3000 void __iomem *mmio = (void __iomem *) ap->ioaddr.bmdma_addr;
3003 /* start host DMA transaction */
3004 dmactl = readb(mmio + ATA_DMA_CMD);
3005 writeb(dmactl | ATA_DMA_START, mmio + ATA_DMA_CMD);
3007 /* Strictly, one may wish to issue a readb() here, to
3008 * flush the mmio write. However, control also passes
3009 * to the hardware at this point, and it will interrupt
3010 * us when we are to resume control. So, in effect,
3011 * we don't care when the mmio write flushes.
3012 * Further, a read of the DMA status register _immediately_
3013 * following the write may not be what certain flaky hardware
3014 * is expected, so I think it is best to not add a readb()
3015 * without first all the MMIO ATA cards/mobos.
3016 * Or maybe I'm just being paranoid.
3021 * ata_bmdma_setup_pio - Set up PCI IDE BMDMA transaction (PIO)
3022 * @qc: Info associated with this ATA transaction.
3025 * spin_lock_irqsave(host_set lock)
3028 static void ata_bmdma_setup_pio (struct ata_queued_cmd *qc)
3030 struct ata_port *ap = qc->ap;
3031 unsigned int rw = (qc->tf.flags & ATA_TFLAG_WRITE);
3034 /* load PRD table addr. */
3035 outl(ap->prd_dma, ap->ioaddr.bmdma_addr + ATA_DMA_TABLE_OFS);
3037 /* specify data direction, triple-check start bit is clear */
3038 dmactl = inb(ap->ioaddr.bmdma_addr + ATA_DMA_CMD);
3039 dmactl &= ~(ATA_DMA_WR | ATA_DMA_START);
3041 dmactl |= ATA_DMA_WR;
3042 outb(dmactl, ap->ioaddr.bmdma_addr + ATA_DMA_CMD);
3044 /* issue r/w command */
3045 ap->ops->exec_command(ap, &qc->tf);
3049 * ata_bmdma_start_pio - Start a PCI IDE BMDMA transaction (PIO)
3050 * @qc: Info associated with this ATA transaction.
3053 * spin_lock_irqsave(host_set lock)
3056 static void ata_bmdma_start_pio (struct ata_queued_cmd *qc)
3058 struct ata_port *ap = qc->ap;
3061 /* start host DMA transaction */
3062 dmactl = inb(ap->ioaddr.bmdma_addr + ATA_DMA_CMD);
3063 outb(dmactl | ATA_DMA_START,
3064 ap->ioaddr.bmdma_addr + ATA_DMA_CMD);
3067 void ata_bmdma_start(struct ata_queued_cmd *qc)
3069 if (qc->ap->flags & ATA_FLAG_MMIO)
3070 ata_bmdma_start_mmio(qc);
3072 ata_bmdma_start_pio(qc);
3075 void ata_bmdma_setup(struct ata_queued_cmd *qc)
3077 if (qc->ap->flags & ATA_FLAG_MMIO)
3078 ata_bmdma_setup_mmio(qc);
3080 ata_bmdma_setup_pio(qc);
3083 void ata_bmdma_irq_clear(struct ata_port *ap)
3085 if (ap->flags & ATA_FLAG_MMIO) {
3086 void __iomem *mmio = ((void __iomem *) ap->ioaddr.bmdma_addr) + ATA_DMA_STATUS;
3087 writeb(readb(mmio), mmio);
3089 unsigned long addr = ap->ioaddr.bmdma_addr + ATA_DMA_STATUS;
3090 outb(inb(addr), addr);
3095 u8 ata_bmdma_status(struct ata_port *ap)
3098 if (ap->flags & ATA_FLAG_MMIO) {
3099 void __iomem *mmio = (void __iomem *) ap->ioaddr.bmdma_addr;
3100 host_stat = readb(mmio + ATA_DMA_STATUS);
3102 host_stat = inb(ap->ioaddr.bmdma_addr + ATA_DMA_STATUS);
3106 void ata_bmdma_stop(struct ata_port *ap)
3108 if (ap->flags & ATA_FLAG_MMIO) {
3109 void __iomem *mmio = (void __iomem *) ap->ioaddr.bmdma_addr;
3111 /* clear start/stop bit */
3112 writeb(readb(mmio + ATA_DMA_CMD) & ~ATA_DMA_START,
3113 mmio + ATA_DMA_CMD);
3115 /* clear start/stop bit */
3116 outb(inb(ap->ioaddr.bmdma_addr + ATA_DMA_CMD) & ~ATA_DMA_START,
3117 ap->ioaddr.bmdma_addr + ATA_DMA_CMD);
3120 /* one-PIO-cycle guaranteed wait, per spec, for HDMA1:0 transition */
3121 ata_altstatus(ap); /* dummy read */
3125 * ata_host_intr - Handle host interrupt for given (port, task)
3126 * @ap: Port on which interrupt arrived (possibly...)
3127 * @qc: Taskfile currently active in engine
3129 * Handle host interrupt for given queued command. Currently,
3130 * only DMA interrupts are handled. All other commands are
3131 * handled via polling with interrupts disabled (nIEN bit).
3134 * spin_lock_irqsave(host_set lock)
3137 * One if interrupt was handled, zero if not (shared irq).
3140 inline unsigned int ata_host_intr (struct ata_port *ap,
3141 struct ata_queued_cmd *qc)
3143 u8 status, host_stat;
3145 switch (qc->tf.protocol) {
3148 case ATA_PROT_ATAPI_DMA:
3149 case ATA_PROT_ATAPI:
3150 /* check status of DMA engine */
3151 host_stat = ap->ops->bmdma_status(ap);
3152 VPRINTK("ata%u: host_stat 0x%X\n", ap->id, host_stat);
3154 /* if it's not our irq... */
3155 if (!(host_stat & ATA_DMA_INTR))
3158 /* before we do anything else, clear DMA-Start bit */
3159 ap->ops->bmdma_stop(ap);
3163 case ATA_PROT_ATAPI_NODATA:
3164 case ATA_PROT_NODATA:
3165 /* check altstatus */
3166 status = ata_altstatus(ap);
3167 if (status & ATA_BUSY)
3170 /* check main status, clearing INTRQ */
3171 status = ata_chk_status(ap);
3172 if (unlikely(status & ATA_BUSY))
3174 DPRINTK("ata%u: protocol %d (dev_stat 0x%X)\n",
3175 ap->id, qc->tf.protocol, status);
3177 /* ack bmdma irq events */
3178 ap->ops->irq_clear(ap);
3180 /* complete taskfile transaction */
3181 ata_qc_complete(qc, status);
3188 return 1; /* irq handled */
3191 ap->stats.idle_irq++;
3194 if ((ap->stats.idle_irq % 1000) == 0) {
3196 ata_irq_ack(ap, 0); /* debug trap */
3197 printk(KERN_WARNING "ata%d: irq trap\n", ap->id);
3200 return 0; /* irq not handled */
3204 * ata_interrupt - Default ATA host interrupt handler
3206 * @dev_instance: pointer to our host information structure
3215 irqreturn_t ata_interrupt (int irq, void *dev_instance, struct pt_regs *regs)
3217 struct ata_host_set *host_set = dev_instance;
3219 unsigned int handled = 0;
3220 unsigned long flags;
3222 /* TODO: make _irqsave conditional on x86 PCI IDE legacy mode */
3223 spin_lock_irqsave(&host_set->lock, flags);
3225 for (i = 0; i < host_set->n_ports; i++) {
3226 struct ata_port *ap;
3228 ap = host_set->ports[i];
3229 if (ap && (!(ap->flags & ATA_FLAG_PORT_DISABLED))) {
3230 struct ata_queued_cmd *qc;
3232 qc = ata_qc_from_tag(ap, ap->active_tag);
3233 if (qc && (!(qc->tf.ctl & ATA_NIEN)) &&
3234 (qc->flags & ATA_QCFLAG_ACTIVE))
3235 handled |= ata_host_intr(ap, qc);
3239 spin_unlock_irqrestore(&host_set->lock, flags);
3241 return IRQ_RETVAL(handled);
3245 * atapi_packet_task - Write CDB bytes to hardware
3246 * @_data: Port to which ATAPI device is attached.
3248 * When device has indicated its readiness to accept
3249 * a CDB, this function is called. Send the CDB.
3250 * If DMA is to be performed, exit immediately.
3251 * Otherwise, we are in polling mode, so poll
3252 * status under operation succeeds or fails.
3255 * Kernel thread context (may sleep)
3258 static void atapi_packet_task(void *_data)
3260 struct ata_port *ap = _data;
3261 struct ata_queued_cmd *qc;
3264 qc = ata_qc_from_tag(ap, ap->active_tag);
3266 assert(qc->flags & ATA_QCFLAG_ACTIVE);
3268 /* sleep-wait for BSY to clear */
3269 DPRINTK("busy wait\n");
3270 if (ata_busy_sleep(ap, ATA_TMOUT_CDB_QUICK, ATA_TMOUT_CDB))
3273 /* make sure DRQ is set */
3274 status = ata_chk_status(ap);
3275 if ((status & (ATA_BUSY | ATA_DRQ)) != ATA_DRQ)
3279 DPRINTK("send cdb\n");
3280 assert(ap->cdb_len >= 12);
3281 ata_data_xfer(ap, qc->cdb, ap->cdb_len, 1);
3283 /* if we are DMA'ing, irq handler takes over from here */
3284 if (qc->tf.protocol == ATA_PROT_ATAPI_DMA)
3285 ap->ops->bmdma_start(qc); /* initiate bmdma */
3287 /* non-data commands are also handled via irq */
3288 else if (qc->tf.protocol == ATA_PROT_ATAPI_NODATA) {
3292 /* PIO commands are handled by polling */
3294 ap->pio_task_state = PIO_ST;
3295 queue_work(ata_wq, &ap->pio_task);
3301 ata_qc_complete(qc, ATA_ERR);
3304 int ata_port_start (struct ata_port *ap)
3306 struct device *dev = ap->host_set->dev;
3308 ap->prd = dma_alloc_coherent(dev, ATA_PRD_TBL_SZ, &ap->prd_dma, GFP_KERNEL);
3312 DPRINTK("prd alloc, virt %p, dma %llx\n", ap->prd, (unsigned long long) ap->prd_dma);
3317 void ata_port_stop (struct ata_port *ap)
3319 struct device *dev = ap->host_set->dev;
3321 dma_free_coherent(dev, ATA_PRD_TBL_SZ, ap->prd, ap->prd_dma);
3325 * ata_host_remove - Unregister SCSI host structure with upper layers
3326 * @ap: Port to unregister
3327 * @do_unregister: 1 if we fully unregister, 0 to just stop the port
3332 static void ata_host_remove(struct ata_port *ap, unsigned int do_unregister)
3334 struct Scsi_Host *sh = ap->host;
3339 scsi_remove_host(sh);
3341 ap->ops->port_stop(ap);
3345 * ata_host_init - Initialize an ata_port structure
3346 * @ap: Structure to initialize
3347 * @host: associated SCSI mid-layer structure
3348 * @host_set: Collection of hosts to which @ap belongs
3349 * @ent: Probe information provided by low-level driver
3350 * @port_no: Port number associated with this ata_port
3356 static void ata_host_init(struct ata_port *ap, struct Scsi_Host *host,
3357 struct ata_host_set *host_set,
3358 struct ata_probe_ent *ent, unsigned int port_no)
3364 host->max_channel = 1;
3365 host->unique_id = ata_unique_id++;
3366 host->max_cmd_len = 12;
3367 scsi_set_device(host, ent->dev);
3368 scsi_assign_lock(host, &host_set->lock);
3370 ap->flags = ATA_FLAG_PORT_DISABLED;
3371 ap->id = host->unique_id;
3373 ap->ctl = ATA_DEVCTL_OBS;
3374 ap->host_set = host_set;
3375 ap->port_no = port_no;
3377 ent->legacy_mode ? ent->hard_port_no : port_no;
3378 ap->pio_mask = ent->pio_mask;
3379 ap->mwdma_mask = ent->mwdma_mask;
3380 ap->udma_mask = ent->udma_mask;
3381 ap->flags |= ent->host_flags;
3382 ap->ops = ent->port_ops;
3383 ap->cbl = ATA_CBL_NONE;
3384 ap->active_tag = ATA_TAG_POISON;
3385 ap->last_ctl = 0xFF;
3387 INIT_WORK(&ap->packet_task, atapi_packet_task, ap);
3388 INIT_WORK(&ap->pio_task, ata_pio_task, ap);
3390 for (i = 0; i < ATA_MAX_DEVICES; i++)
3391 ap->device[i].devno = i;
3394 ap->stats.unhandled_irq = 1;
3395 ap->stats.idle_irq = 1;
3398 memcpy(&ap->ioaddr, &ent->port[port_no], sizeof(struct ata_ioports));
3402 * ata_host_add - Attach low-level ATA driver to system
3403 * @ent: Information provided by low-level driver
3404 * @host_set: Collections of ports to which we add
3405 * @port_no: Port number associated with this host
3413 static struct ata_port * ata_host_add(struct ata_probe_ent *ent,
3414 struct ata_host_set *host_set,
3415 unsigned int port_no)
3417 struct Scsi_Host *host;
3418 struct ata_port *ap;
3422 host = scsi_host_alloc(ent->sht, sizeof(struct ata_port));
3426 ap = (struct ata_port *) &host->hostdata[0];
3428 ata_host_init(ap, host, host_set, ent, port_no);
3430 rc = ap->ops->port_start(ap);
3437 scsi_host_put(host);
3451 int ata_device_add(struct ata_probe_ent *ent)
3453 unsigned int count = 0, i;
3454 struct device *dev = ent->dev;
3455 struct ata_host_set *host_set;
3458 /* alloc a container for our list of ATA ports (buses) */
3459 host_set = kmalloc(sizeof(struct ata_host_set) +
3460 (ent->n_ports * sizeof(void *)), GFP_KERNEL);
3463 memset(host_set, 0, sizeof(struct ata_host_set) + (ent->n_ports * sizeof(void *)));
3464 spin_lock_init(&host_set->lock);
3466 host_set->dev = dev;
3467 host_set->n_ports = ent->n_ports;
3468 host_set->irq = ent->irq;
3469 host_set->mmio_base = ent->mmio_base;
3470 host_set->private_data = ent->private_data;
3471 host_set->ops = ent->port_ops;
3473 /* register each port bound to this device */
3474 for (i = 0; i < ent->n_ports; i++) {
3475 struct ata_port *ap;
3476 unsigned long xfer_mode_mask;
3478 ap = ata_host_add(ent, host_set, i);
3482 host_set->ports[i] = ap;
3483 xfer_mode_mask =(ap->udma_mask << ATA_SHIFT_UDMA) |
3484 (ap->mwdma_mask << ATA_SHIFT_MWDMA) |
3485 (ap->pio_mask << ATA_SHIFT_PIO);
3487 /* print per-port info to dmesg */
3488 printk(KERN_INFO "ata%u: %cATA max %s cmd 0x%lX ctl 0x%lX "
3489 "bmdma 0x%lX irq %lu\n",
3491 ap->flags & ATA_FLAG_SATA ? 'S' : 'P',
3492 ata_mode_string(xfer_mode_mask),
3493 ap->ioaddr.cmd_addr,
3494 ap->ioaddr.ctl_addr,
3495 ap->ioaddr.bmdma_addr,
3499 host_set->ops->irq_clear(ap);
3508 /* obtain irq, that is shared between channels */
3509 if (request_irq(ent->irq, ent->port_ops->irq_handler, ent->irq_flags,
3510 DRV_NAME, host_set))
3513 /* perform each probe synchronously */
3514 DPRINTK("probe begin\n");
3515 for (i = 0; i < count; i++) {
3516 struct ata_port *ap;
3519 ap = host_set->ports[i];
3521 DPRINTK("ata%u: probe begin\n", ap->id);
3522 rc = ata_bus_probe(ap);
3523 DPRINTK("ata%u: probe end\n", ap->id);
3526 /* FIXME: do something useful here?
3527 * Current libata behavior will
3528 * tear down everything when
3529 * the module is removed
3530 * or the h/w is unplugged.
3534 rc = scsi_add_host(ap->host, dev);
3536 printk(KERN_ERR "ata%u: scsi_add_host failed\n",
3538 /* FIXME: do something useful here */
3539 /* FIXME: handle unconditional calls to
3540 * scsi_scan_host and ata_host_remove, below,
3546 /* probes are done, now scan each port's disk(s) */
3547 DPRINTK("probe begin\n");
3548 for (i = 0; i < count; i++) {
3549 struct ata_port *ap = host_set->ports[i];
3551 scsi_scan_host(ap->host);
3554 dev_set_drvdata(dev, host_set);
3556 VPRINTK("EXIT, returning %u\n", ent->n_ports);
3557 return ent->n_ports; /* success */
3560 for (i = 0; i < count; i++) {
3561 ata_host_remove(host_set->ports[i], 1);
3562 scsi_host_put(host_set->ports[i]->host);
3565 VPRINTK("EXIT, returning 0\n");
3570 * ata_scsi_release - SCSI layer callback hook for host unload
3571 * @host: libata host to be unloaded
3573 * Performs all duties necessary to shut down a libata port...
3574 * Kill port kthread, disable port, and release resources.
3577 * Inherited from SCSI layer.
3583 int ata_scsi_release(struct Scsi_Host *host)
3585 struct ata_port *ap = (struct ata_port *) &host->hostdata[0];
3589 ap->ops->port_disable(ap);
3590 ata_host_remove(ap, 0);
3597 * ata_std_ports - initialize ioaddr with standard port offsets.
3598 * @ioaddr: IO address structure to be initialized
3600 void ata_std_ports(struct ata_ioports *ioaddr)
3602 ioaddr->data_addr = ioaddr->cmd_addr + ATA_REG_DATA;
3603 ioaddr->error_addr = ioaddr->cmd_addr + ATA_REG_ERR;
3604 ioaddr->feature_addr = ioaddr->cmd_addr + ATA_REG_FEATURE;
3605 ioaddr->nsect_addr = ioaddr->cmd_addr + ATA_REG_NSECT;
3606 ioaddr->lbal_addr = ioaddr->cmd_addr + ATA_REG_LBAL;
3607 ioaddr->lbam_addr = ioaddr->cmd_addr + ATA_REG_LBAM;
3608 ioaddr->lbah_addr = ioaddr->cmd_addr + ATA_REG_LBAH;
3609 ioaddr->device_addr = ioaddr->cmd_addr + ATA_REG_DEVICE;
3610 ioaddr->status_addr = ioaddr->cmd_addr + ATA_REG_STATUS;
3611 ioaddr->command_addr = ioaddr->cmd_addr + ATA_REG_CMD;
3614 static struct ata_probe_ent *
3615 ata_probe_ent_alloc(struct device *dev, struct ata_port_info *port)
3617 struct ata_probe_ent *probe_ent;
3619 probe_ent = kmalloc(sizeof(*probe_ent), GFP_KERNEL);
3621 printk(KERN_ERR DRV_NAME "(%s): out of memory\n",
3622 kobject_name(&(dev->kobj)));
3626 memset(probe_ent, 0, sizeof(*probe_ent));
3628 INIT_LIST_HEAD(&probe_ent->node);
3629 probe_ent->dev = dev;
3631 probe_ent->sht = port->sht;
3632 probe_ent->host_flags = port->host_flags;
3633 probe_ent->pio_mask = port->pio_mask;
3634 probe_ent->mwdma_mask = port->mwdma_mask;
3635 probe_ent->udma_mask = port->udma_mask;
3636 probe_ent->port_ops = port->port_ops;
3642 struct ata_probe_ent *
3643 ata_pci_init_native_mode(struct pci_dev *pdev, struct ata_port_info **port)
3645 struct ata_probe_ent *probe_ent =
3646 ata_probe_ent_alloc(pci_dev_to_dev(pdev), port[0]);
3650 probe_ent->n_ports = 2;
3651 probe_ent->irq = pdev->irq;
3652 probe_ent->irq_flags = SA_SHIRQ;
3654 probe_ent->port[0].cmd_addr = pci_resource_start(pdev, 0);
3655 probe_ent->port[0].altstatus_addr =
3656 probe_ent->port[0].ctl_addr =
3657 pci_resource_start(pdev, 1) | ATA_PCI_CTL_OFS;
3658 probe_ent->port[0].bmdma_addr = pci_resource_start(pdev, 4);
3660 probe_ent->port[1].cmd_addr = pci_resource_start(pdev, 2);
3661 probe_ent->port[1].altstatus_addr =
3662 probe_ent->port[1].ctl_addr =
3663 pci_resource_start(pdev, 3) | ATA_PCI_CTL_OFS;
3664 probe_ent->port[1].bmdma_addr = pci_resource_start(pdev, 4) + 8;
3666 ata_std_ports(&probe_ent->port[0]);
3667 ata_std_ports(&probe_ent->port[1]);
3672 static struct ata_probe_ent *
3673 ata_pci_init_legacy_mode(struct pci_dev *pdev, struct ata_port_info **port,
3674 struct ata_probe_ent **ppe2)
3676 struct ata_probe_ent *probe_ent, *probe_ent2;
3678 probe_ent = ata_probe_ent_alloc(pci_dev_to_dev(pdev), port[0]);
3681 probe_ent2 = ata_probe_ent_alloc(pci_dev_to_dev(pdev), port[1]);
3687 probe_ent->n_ports = 1;
3688 probe_ent->irq = 14;
3690 probe_ent->hard_port_no = 0;
3691 probe_ent->legacy_mode = 1;
3693 probe_ent2->n_ports = 1;
3694 probe_ent2->irq = 15;
3696 probe_ent2->hard_port_no = 1;
3697 probe_ent2->legacy_mode = 1;
3699 probe_ent->port[0].cmd_addr = 0x1f0;
3700 probe_ent->port[0].altstatus_addr =
3701 probe_ent->port[0].ctl_addr = 0x3f6;
3702 probe_ent->port[0].bmdma_addr = pci_resource_start(pdev, 4);
3704 probe_ent2->port[0].cmd_addr = 0x170;
3705 probe_ent2->port[0].altstatus_addr =
3706 probe_ent2->port[0].ctl_addr = 0x376;
3707 probe_ent2->port[0].bmdma_addr = pci_resource_start(pdev, 4)+8;
3709 ata_std_ports(&probe_ent->port[0]);
3710 ata_std_ports(&probe_ent2->port[0]);
3717 * ata_pci_init_one - Initialize/register PCI IDE host controller
3718 * @pdev: Controller to be initialized
3719 * @port_info: Information from low-level host driver
3720 * @n_ports: Number of ports attached to host controller
3723 * Inherited from PCI layer (may sleep).
3729 int ata_pci_init_one (struct pci_dev *pdev, struct ata_port_info **port_info,
3730 unsigned int n_ports)
3732 struct ata_probe_ent *probe_ent, *probe_ent2 = NULL;
3733 struct ata_port_info *port[2];
3735 unsigned int legacy_mode = 0;
3736 int disable_dev_on_err = 1;
3741 port[0] = port_info[0];
3743 port[1] = port_info[1];
3747 if ((port[0]->host_flags & ATA_FLAG_NO_LEGACY) == 0
3748 && (pdev->class >> 8) == PCI_CLASS_STORAGE_IDE) {
3749 /* TODO: support transitioning to native mode? */
3750 pci_read_config_byte(pdev, PCI_CLASS_PROG, &tmp8);
3751 mask = (1 << 2) | (1 << 0);
3752 if ((tmp8 & mask) != mask)
3753 legacy_mode = (1 << 3);
3757 if ((!legacy_mode) && (n_ports > 1)) {
3758 printk(KERN_ERR "ata: BUG: native mode, n_ports > 1\n");
3762 rc = pci_enable_device(pdev);
3766 rc = pci_request_regions(pdev, DRV_NAME);
3768 disable_dev_on_err = 0;
3773 if (!request_region(0x1f0, 8, "libata")) {
3774 struct resource *conflict, res;
3776 res.end = 0x1f0 + 8 - 1;
3777 conflict = ____request_resource(&ioport_resource, &res);
3778 if (!strcmp(conflict->name, "libata"))
3779 legacy_mode |= (1 << 0);
3781 disable_dev_on_err = 0;
3782 printk(KERN_WARNING "ata: 0x1f0 IDE port busy\n");
3785 legacy_mode |= (1 << 0);
3787 if (!request_region(0x170, 8, "libata")) {
3788 struct resource *conflict, res;
3790 res.end = 0x170 + 8 - 1;
3791 conflict = ____request_resource(&ioport_resource, &res);
3792 if (!strcmp(conflict->name, "libata"))
3793 legacy_mode |= (1 << 1);
3795 disable_dev_on_err = 0;
3796 printk(KERN_WARNING "ata: 0x170 IDE port busy\n");
3799 legacy_mode |= (1 << 1);
3802 /* we have legacy mode, but all ports are unavailable */
3803 if (legacy_mode == (1 << 3)) {
3805 goto err_out_regions;
3808 rc = pci_set_dma_mask(pdev, ATA_DMA_MASK);
3810 goto err_out_regions;
3811 rc = pci_set_consistent_dma_mask(pdev, ATA_DMA_MASK);
3813 goto err_out_regions;
3816 probe_ent = ata_pci_init_legacy_mode(pdev, port, &probe_ent2);
3818 probe_ent = ata_pci_init_native_mode(pdev, port);
3821 goto err_out_regions;
3824 pci_set_master(pdev);
3826 /* FIXME: check ata_device_add return */
3828 if (legacy_mode & (1 << 0))
3829 ata_device_add(probe_ent);
3830 if (legacy_mode & (1 << 1))
3831 ata_device_add(probe_ent2);
3833 ata_device_add(probe_ent);
3841 if (legacy_mode & (1 << 0))
3842 release_region(0x1f0, 8);
3843 if (legacy_mode & (1 << 1))
3844 release_region(0x170, 8);
3845 pci_release_regions(pdev);
3847 if (disable_dev_on_err)
3848 pci_disable_device(pdev);
3853 * ata_pci_remove_one - PCI layer callback for device removal
3854 * @pdev: PCI device that was removed
3856 * PCI layer indicates to libata via this hook that
3857 * hot-unplug or module unload event has occured.
3858 * Handle this by unregistering all objects associated
3859 * with this PCI device. Free those objects. Then finally
3860 * release PCI resources and disable device.
3863 * Inherited from PCI layer (may sleep).
3866 void ata_pci_remove_one (struct pci_dev *pdev)
3868 struct device *dev = pci_dev_to_dev(pdev);
3869 struct ata_host_set *host_set = dev_get_drvdata(dev);
3870 struct ata_port *ap;
3873 for (i = 0; i < host_set->n_ports; i++) {
3874 ap = host_set->ports[i];
3876 scsi_remove_host(ap->host);
3879 free_irq(host_set->irq, host_set);
3880 if (host_set->ops->host_stop)
3881 host_set->ops->host_stop(host_set);
3882 if (host_set->mmio_base)
3883 iounmap(host_set->mmio_base);
3885 for (i = 0; i < host_set->n_ports; i++) {
3886 ap = host_set->ports[i];
3888 ata_scsi_release(ap->host);
3890 if ((ap->flags & ATA_FLAG_NO_LEGACY) == 0) {
3891 struct ata_ioports *ioaddr = &ap->ioaddr;
3893 if (ioaddr->cmd_addr == 0x1f0)
3894 release_region(0x1f0, 8);
3895 else if (ioaddr->cmd_addr == 0x170)
3896 release_region(0x170, 8);
3899 scsi_host_put(ap->host);
3904 pci_release_regions(pdev);
3905 pci_disable_device(pdev);
3906 dev_set_drvdata(dev, NULL);
3909 /* move to PCI subsystem */
3910 int pci_test_config_bits(struct pci_dev *pdev, struct pci_bits *bits)
3912 unsigned long tmp = 0;
3914 switch (bits->width) {
3917 pci_read_config_byte(pdev, bits->reg, &tmp8);
3923 pci_read_config_word(pdev, bits->reg, &tmp16);
3929 pci_read_config_dword(pdev, bits->reg, &tmp32);
3940 return (tmp == bits->val) ? 1 : 0;
3942 #endif /* CONFIG_PCI */
3954 static int __init ata_init(void)
3956 ata_wq = create_workqueue("ata");
3960 printk(KERN_DEBUG "libata version " DRV_VERSION " loaded.\n");
3964 static void __exit ata_exit(void)
3966 destroy_workqueue(ata_wq);
3969 module_init(ata_init);
3970 module_exit(ata_exit);
3973 * libata is essentially a library of internal helper functions for
3974 * low-level ATA host controller drivers. As such, the API/ABI is
3975 * likely to change as new drivers are added and updated.
3976 * Do not depend on ABI/API stability.
3979 EXPORT_SYMBOL_GPL(ata_std_bios_param);
3980 EXPORT_SYMBOL_GPL(ata_std_ports);
3981 EXPORT_SYMBOL_GPL(ata_device_add);
3982 EXPORT_SYMBOL_GPL(ata_sg_init);
3983 EXPORT_SYMBOL_GPL(ata_sg_init_one);
3984 EXPORT_SYMBOL_GPL(ata_qc_complete);
3985 EXPORT_SYMBOL_GPL(ata_qc_issue_prot);
3986 EXPORT_SYMBOL_GPL(ata_eng_timeout);
3987 EXPORT_SYMBOL_GPL(ata_tf_load);
3988 EXPORT_SYMBOL_GPL(ata_tf_read);
3989 EXPORT_SYMBOL_GPL(ata_noop_dev_select);
3990 EXPORT_SYMBOL_GPL(ata_std_dev_select);
3991 EXPORT_SYMBOL_GPL(ata_tf_to_fis);
3992 EXPORT_SYMBOL_GPL(ata_tf_from_fis);
3993 EXPORT_SYMBOL_GPL(ata_check_status);
3994 EXPORT_SYMBOL_GPL(ata_altstatus);
3995 EXPORT_SYMBOL_GPL(ata_chk_err);
3996 EXPORT_SYMBOL_GPL(ata_exec_command);
3997 EXPORT_SYMBOL_GPL(ata_port_start);
3998 EXPORT_SYMBOL_GPL(ata_port_stop);
3999 EXPORT_SYMBOL_GPL(ata_interrupt);
4000 EXPORT_SYMBOL_GPL(ata_qc_prep);
4001 EXPORT_SYMBOL_GPL(ata_bmdma_setup);
4002 EXPORT_SYMBOL_GPL(ata_bmdma_start);
4003 EXPORT_SYMBOL_GPL(ata_bmdma_irq_clear);
4004 EXPORT_SYMBOL_GPL(ata_bmdma_status);
4005 EXPORT_SYMBOL_GPL(ata_bmdma_stop);
4006 EXPORT_SYMBOL_GPL(ata_port_probe);
4007 EXPORT_SYMBOL_GPL(sata_phy_reset);
4008 EXPORT_SYMBOL_GPL(__sata_phy_reset);
4009 EXPORT_SYMBOL_GPL(ata_bus_reset);
4010 EXPORT_SYMBOL_GPL(ata_port_disable);
4011 EXPORT_SYMBOL_GPL(ata_scsi_ioctl);
4012 EXPORT_SYMBOL_GPL(ata_scsi_queuecmd);
4013 EXPORT_SYMBOL_GPL(ata_scsi_error);
4014 EXPORT_SYMBOL_GPL(ata_scsi_slave_config);
4015 EXPORT_SYMBOL_GPL(ata_scsi_release);
4016 EXPORT_SYMBOL_GPL(ata_host_intr);
4017 EXPORT_SYMBOL_GPL(ata_dev_classify);
4018 EXPORT_SYMBOL_GPL(ata_dev_id_string);
4019 EXPORT_SYMBOL_GPL(ata_scsi_simulate);
4022 EXPORT_SYMBOL_GPL(pci_test_config_bits);
4023 EXPORT_SYMBOL_GPL(ata_pci_init_native_mode);
4024 EXPORT_SYMBOL_GPL(ata_pci_init_one);
4025 EXPORT_SYMBOL_GPL(ata_pci_remove_one);
4026 #endif /* CONFIG_PCI */