[MTD ONENAND] Check OneNAND lock scheme & all block unlock command support
[pandora-kernel.git] / drivers / scsi / libata-core.c
1 /*
2  *  libata-core.c - helper library for ATA
3  *
4  *  Maintained by:  Jeff Garzik <jgarzik@pobox.com>
5  *                  Please ALWAYS copy linux-ide@vger.kernel.org
6  *                  on emails.
7  *
8  *  Copyright 2003-2004 Red Hat, Inc.  All rights reserved.
9  *  Copyright 2003-2004 Jeff Garzik
10  *
11  *
12  *  This program is free software; you can redistribute it and/or modify
13  *  it under the terms of the GNU General Public License as published by
14  *  the Free Software Foundation; either version 2, or (at your option)
15  *  any later version.
16  *
17  *  This program is distributed in the hope that it will be useful,
18  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
19  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20  *  GNU General Public License for more details.
21  *
22  *  You should have received a copy of the GNU General Public License
23  *  along with this program; see the file COPYING.  If not, write to
24  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
25  *
26  *
27  *  libata documentation is available via 'make {ps|pdf}docs',
28  *  as Documentation/DocBook/libata.*
29  *
30  *  Hardware documentation available from http://www.t13.org/ and
31  *  http://www.sata-io.org/
32  *
33  */
34
35 #include <linux/kernel.h>
36 #include <linux/module.h>
37 #include <linux/pci.h>
38 #include <linux/init.h>
39 #include <linux/list.h>
40 #include <linux/mm.h>
41 #include <linux/highmem.h>
42 #include <linux/spinlock.h>
43 #include <linux/blkdev.h>
44 #include <linux/delay.h>
45 #include <linux/timer.h>
46 #include <linux/interrupt.h>
47 #include <linux/completion.h>
48 #include <linux/suspend.h>
49 #include <linux/workqueue.h>
50 #include <linux/jiffies.h>
51 #include <linux/scatterlist.h>
52 #include <scsi/scsi.h>
53 #include "scsi_priv.h"
54 #include <scsi/scsi_cmnd.h>
55 #include <scsi/scsi_host.h>
56 #include <linux/libata.h>
57 #include <asm/io.h>
58 #include <asm/semaphore.h>
59 #include <asm/byteorder.h>
60
61 #include "libata.h"
62
63 /* debounce timing parameters in msecs { interval, duration, timeout } */
64 const unsigned long sata_deb_timing_normal[]            = {   5,  100, 2000 };
65 const unsigned long sata_deb_timing_hotplug[]           = {  25,  500, 2000 };
66 const unsigned long sata_deb_timing_long[]              = { 100, 2000, 5000 };
67
68 static unsigned int ata_dev_init_params(struct ata_device *dev,
69                                         u16 heads, u16 sectors);
70 static unsigned int ata_dev_set_xfermode(struct ata_device *dev);
71 static void ata_dev_xfermask(struct ata_device *dev);
72
73 static unsigned int ata_unique_id = 1;
74 static struct workqueue_struct *ata_wq;
75
76 struct workqueue_struct *ata_aux_wq;
77
78 int atapi_enabled = 1;
79 module_param(atapi_enabled, int, 0444);
80 MODULE_PARM_DESC(atapi_enabled, "Enable discovery of ATAPI devices (0=off, 1=on)");
81
82 int atapi_dmadir = 0;
83 module_param(atapi_dmadir, int, 0444);
84 MODULE_PARM_DESC(atapi_dmadir, "Enable ATAPI DMADIR bridge support (0=off, 1=on)");
85
86 int libata_fua = 0;
87 module_param_named(fua, libata_fua, int, 0444);
88 MODULE_PARM_DESC(fua, "FUA support (0=off, 1=on)");
89
90 static int ata_probe_timeout = ATA_TMOUT_INTERNAL / HZ;
91 module_param(ata_probe_timeout, int, 0444);
92 MODULE_PARM_DESC(ata_probe_timeout, "Set ATA probing timeout (seconds)");
93
94 MODULE_AUTHOR("Jeff Garzik");
95 MODULE_DESCRIPTION("Library module for ATA devices");
96 MODULE_LICENSE("GPL");
97 MODULE_VERSION(DRV_VERSION);
98
99
100 /**
101  *      ata_tf_to_fis - Convert ATA taskfile to SATA FIS structure
102  *      @tf: Taskfile to convert
103  *      @fis: Buffer into which data will output
104  *      @pmp: Port multiplier port
105  *
106  *      Converts a standard ATA taskfile to a Serial ATA
107  *      FIS structure (Register - Host to Device).
108  *
109  *      LOCKING:
110  *      Inherited from caller.
111  */
112
113 void ata_tf_to_fis(const struct ata_taskfile *tf, u8 *fis, u8 pmp)
114 {
115         fis[0] = 0x27;  /* Register - Host to Device FIS */
116         fis[1] = (pmp & 0xf) | (1 << 7); /* Port multiplier number,
117                                             bit 7 indicates Command FIS */
118         fis[2] = tf->command;
119         fis[3] = tf->feature;
120
121         fis[4] = tf->lbal;
122         fis[5] = tf->lbam;
123         fis[6] = tf->lbah;
124         fis[7] = tf->device;
125
126         fis[8] = tf->hob_lbal;
127         fis[9] = tf->hob_lbam;
128         fis[10] = tf->hob_lbah;
129         fis[11] = tf->hob_feature;
130
131         fis[12] = tf->nsect;
132         fis[13] = tf->hob_nsect;
133         fis[14] = 0;
134         fis[15] = tf->ctl;
135
136         fis[16] = 0;
137         fis[17] = 0;
138         fis[18] = 0;
139         fis[19] = 0;
140 }
141
142 /**
143  *      ata_tf_from_fis - Convert SATA FIS to ATA taskfile
144  *      @fis: Buffer from which data will be input
145  *      @tf: Taskfile to output
146  *
147  *      Converts a serial ATA FIS structure to a standard ATA taskfile.
148  *
149  *      LOCKING:
150  *      Inherited from caller.
151  */
152
153 void ata_tf_from_fis(const u8 *fis, struct ata_taskfile *tf)
154 {
155         tf->command     = fis[2];       /* status */
156         tf->feature     = fis[3];       /* error */
157
158         tf->lbal        = fis[4];
159         tf->lbam        = fis[5];
160         tf->lbah        = fis[6];
161         tf->device      = fis[7];
162
163         tf->hob_lbal    = fis[8];
164         tf->hob_lbam    = fis[9];
165         tf->hob_lbah    = fis[10];
166
167         tf->nsect       = fis[12];
168         tf->hob_nsect   = fis[13];
169 }
170
171 static const u8 ata_rw_cmds[] = {
172         /* pio multi */
173         ATA_CMD_READ_MULTI,
174         ATA_CMD_WRITE_MULTI,
175         ATA_CMD_READ_MULTI_EXT,
176         ATA_CMD_WRITE_MULTI_EXT,
177         0,
178         0,
179         0,
180         ATA_CMD_WRITE_MULTI_FUA_EXT,
181         /* pio */
182         ATA_CMD_PIO_READ,
183         ATA_CMD_PIO_WRITE,
184         ATA_CMD_PIO_READ_EXT,
185         ATA_CMD_PIO_WRITE_EXT,
186         0,
187         0,
188         0,
189         0,
190         /* dma */
191         ATA_CMD_READ,
192         ATA_CMD_WRITE,
193         ATA_CMD_READ_EXT,
194         ATA_CMD_WRITE_EXT,
195         0,
196         0,
197         0,
198         ATA_CMD_WRITE_FUA_EXT
199 };
200
201 /**
202  *      ata_rwcmd_protocol - set taskfile r/w commands and protocol
203  *      @qc: command to examine and configure
204  *
205  *      Examine the device configuration and tf->flags to calculate
206  *      the proper read/write commands and protocol to use.
207  *
208  *      LOCKING:
209  *      caller.
210  */
211 int ata_rwcmd_protocol(struct ata_queued_cmd *qc)
212 {
213         struct ata_taskfile *tf = &qc->tf;
214         struct ata_device *dev = qc->dev;
215         u8 cmd;
216
217         int index, fua, lba48, write;
218
219         fua = (tf->flags & ATA_TFLAG_FUA) ? 4 : 0;
220         lba48 = (tf->flags & ATA_TFLAG_LBA48) ? 2 : 0;
221         write = (tf->flags & ATA_TFLAG_WRITE) ? 1 : 0;
222
223         if (dev->flags & ATA_DFLAG_PIO) {
224                 tf->protocol = ATA_PROT_PIO;
225                 index = dev->multi_count ? 0 : 8;
226         } else if (lba48 && (qc->ap->flags & ATA_FLAG_PIO_LBA48)) {
227                 /* Unable to use DMA due to host limitation */
228                 tf->protocol = ATA_PROT_PIO;
229                 index = dev->multi_count ? 0 : 8;
230         } else {
231                 tf->protocol = ATA_PROT_DMA;
232                 index = 16;
233         }
234
235         cmd = ata_rw_cmds[index + fua + lba48 + write];
236         if (cmd) {
237                 tf->command = cmd;
238                 return 0;
239         }
240         return -1;
241 }
242
243 /**
244  *      ata_pack_xfermask - Pack pio, mwdma and udma masks into xfer_mask
245  *      @pio_mask: pio_mask
246  *      @mwdma_mask: mwdma_mask
247  *      @udma_mask: udma_mask
248  *
249  *      Pack @pio_mask, @mwdma_mask and @udma_mask into a single
250  *      unsigned int xfer_mask.
251  *
252  *      LOCKING:
253  *      None.
254  *
255  *      RETURNS:
256  *      Packed xfer_mask.
257  */
258 static unsigned int ata_pack_xfermask(unsigned int pio_mask,
259                                       unsigned int mwdma_mask,
260                                       unsigned int udma_mask)
261 {
262         return ((pio_mask << ATA_SHIFT_PIO) & ATA_MASK_PIO) |
263                 ((mwdma_mask << ATA_SHIFT_MWDMA) & ATA_MASK_MWDMA) |
264                 ((udma_mask << ATA_SHIFT_UDMA) & ATA_MASK_UDMA);
265 }
266
267 /**
268  *      ata_unpack_xfermask - Unpack xfer_mask into pio, mwdma and udma masks
269  *      @xfer_mask: xfer_mask to unpack
270  *      @pio_mask: resulting pio_mask
271  *      @mwdma_mask: resulting mwdma_mask
272  *      @udma_mask: resulting udma_mask
273  *
274  *      Unpack @xfer_mask into @pio_mask, @mwdma_mask and @udma_mask.
275  *      Any NULL distination masks will be ignored.
276  */
277 static void ata_unpack_xfermask(unsigned int xfer_mask,
278                                 unsigned int *pio_mask,
279                                 unsigned int *mwdma_mask,
280                                 unsigned int *udma_mask)
281 {
282         if (pio_mask)
283                 *pio_mask = (xfer_mask & ATA_MASK_PIO) >> ATA_SHIFT_PIO;
284         if (mwdma_mask)
285                 *mwdma_mask = (xfer_mask & ATA_MASK_MWDMA) >> ATA_SHIFT_MWDMA;
286         if (udma_mask)
287                 *udma_mask = (xfer_mask & ATA_MASK_UDMA) >> ATA_SHIFT_UDMA;
288 }
289
290 static const struct ata_xfer_ent {
291         int shift, bits;
292         u8 base;
293 } ata_xfer_tbl[] = {
294         { ATA_SHIFT_PIO, ATA_BITS_PIO, XFER_PIO_0 },
295         { ATA_SHIFT_MWDMA, ATA_BITS_MWDMA, XFER_MW_DMA_0 },
296         { ATA_SHIFT_UDMA, ATA_BITS_UDMA, XFER_UDMA_0 },
297         { -1, },
298 };
299
300 /**
301  *      ata_xfer_mask2mode - Find matching XFER_* for the given xfer_mask
302  *      @xfer_mask: xfer_mask of interest
303  *
304  *      Return matching XFER_* value for @xfer_mask.  Only the highest
305  *      bit of @xfer_mask is considered.
306  *
307  *      LOCKING:
308  *      None.
309  *
310  *      RETURNS:
311  *      Matching XFER_* value, 0 if no match found.
312  */
313 static u8 ata_xfer_mask2mode(unsigned int xfer_mask)
314 {
315         int highbit = fls(xfer_mask) - 1;
316         const struct ata_xfer_ent *ent;
317
318         for (ent = ata_xfer_tbl; ent->shift >= 0; ent++)
319                 if (highbit >= ent->shift && highbit < ent->shift + ent->bits)
320                         return ent->base + highbit - ent->shift;
321         return 0;
322 }
323
324 /**
325  *      ata_xfer_mode2mask - Find matching xfer_mask for XFER_*
326  *      @xfer_mode: XFER_* of interest
327  *
328  *      Return matching xfer_mask for @xfer_mode.
329  *
330  *      LOCKING:
331  *      None.
332  *
333  *      RETURNS:
334  *      Matching xfer_mask, 0 if no match found.
335  */
336 static unsigned int ata_xfer_mode2mask(u8 xfer_mode)
337 {
338         const struct ata_xfer_ent *ent;
339
340         for (ent = ata_xfer_tbl; ent->shift >= 0; ent++)
341                 if (xfer_mode >= ent->base && xfer_mode < ent->base + ent->bits)
342                         return 1 << (ent->shift + xfer_mode - ent->base);
343         return 0;
344 }
345
346 /**
347  *      ata_xfer_mode2shift - Find matching xfer_shift for XFER_*
348  *      @xfer_mode: XFER_* of interest
349  *
350  *      Return matching xfer_shift for @xfer_mode.
351  *
352  *      LOCKING:
353  *      None.
354  *
355  *      RETURNS:
356  *      Matching xfer_shift, -1 if no match found.
357  */
358 static int ata_xfer_mode2shift(unsigned int xfer_mode)
359 {
360         const struct ata_xfer_ent *ent;
361
362         for (ent = ata_xfer_tbl; ent->shift >= 0; ent++)
363                 if (xfer_mode >= ent->base && xfer_mode < ent->base + ent->bits)
364                         return ent->shift;
365         return -1;
366 }
367
368 /**
369  *      ata_mode_string - convert xfer_mask to string
370  *      @xfer_mask: mask of bits supported; only highest bit counts.
371  *
372  *      Determine string which represents the highest speed
373  *      (highest bit in @modemask).
374  *
375  *      LOCKING:
376  *      None.
377  *
378  *      RETURNS:
379  *      Constant C string representing highest speed listed in
380  *      @mode_mask, or the constant C string "<n/a>".
381  */
382 static const char *ata_mode_string(unsigned int xfer_mask)
383 {
384         static const char * const xfer_mode_str[] = {
385                 "PIO0",
386                 "PIO1",
387                 "PIO2",
388                 "PIO3",
389                 "PIO4",
390                 "MWDMA0",
391                 "MWDMA1",
392                 "MWDMA2",
393                 "UDMA/16",
394                 "UDMA/25",
395                 "UDMA/33",
396                 "UDMA/44",
397                 "UDMA/66",
398                 "UDMA/100",
399                 "UDMA/133",
400                 "UDMA7",
401         };
402         int highbit;
403
404         highbit = fls(xfer_mask) - 1;
405         if (highbit >= 0 && highbit < ARRAY_SIZE(xfer_mode_str))
406                 return xfer_mode_str[highbit];
407         return "<n/a>";
408 }
409
410 static const char *sata_spd_string(unsigned int spd)
411 {
412         static const char * const spd_str[] = {
413                 "1.5 Gbps",
414                 "3.0 Gbps",
415         };
416
417         if (spd == 0 || (spd - 1) >= ARRAY_SIZE(spd_str))
418                 return "<unknown>";
419         return spd_str[spd - 1];
420 }
421
422 void ata_dev_disable(struct ata_device *dev)
423 {
424         if (ata_dev_enabled(dev) && ata_msg_drv(dev->ap)) {
425                 ata_dev_printk(dev, KERN_WARNING, "disabled\n");
426                 dev->class++;
427         }
428 }
429
430 /**
431  *      ata_pio_devchk - PATA device presence detection
432  *      @ap: ATA channel to examine
433  *      @device: Device to examine (starting at zero)
434  *
435  *      This technique was originally described in
436  *      Hale Landis's ATADRVR (www.ata-atapi.com), and
437  *      later found its way into the ATA/ATAPI spec.
438  *
439  *      Write a pattern to the ATA shadow registers,
440  *      and if a device is present, it will respond by
441  *      correctly storing and echoing back the
442  *      ATA shadow register contents.
443  *
444  *      LOCKING:
445  *      caller.
446  */
447
448 static unsigned int ata_pio_devchk(struct ata_port *ap,
449                                    unsigned int device)
450 {
451         struct ata_ioports *ioaddr = &ap->ioaddr;
452         u8 nsect, lbal;
453
454         ap->ops->dev_select(ap, device);
455
456         outb(0x55, ioaddr->nsect_addr);
457         outb(0xaa, ioaddr->lbal_addr);
458
459         outb(0xaa, ioaddr->nsect_addr);
460         outb(0x55, ioaddr->lbal_addr);
461
462         outb(0x55, ioaddr->nsect_addr);
463         outb(0xaa, ioaddr->lbal_addr);
464
465         nsect = inb(ioaddr->nsect_addr);
466         lbal = inb(ioaddr->lbal_addr);
467
468         if ((nsect == 0x55) && (lbal == 0xaa))
469                 return 1;       /* we found a device */
470
471         return 0;               /* nothing found */
472 }
473
474 /**
475  *      ata_mmio_devchk - PATA device presence detection
476  *      @ap: ATA channel to examine
477  *      @device: Device to examine (starting at zero)
478  *
479  *      This technique was originally described in
480  *      Hale Landis's ATADRVR (www.ata-atapi.com), and
481  *      later found its way into the ATA/ATAPI spec.
482  *
483  *      Write a pattern to the ATA shadow registers,
484  *      and if a device is present, it will respond by
485  *      correctly storing and echoing back the
486  *      ATA shadow register contents.
487  *
488  *      LOCKING:
489  *      caller.
490  */
491
492 static unsigned int ata_mmio_devchk(struct ata_port *ap,
493                                     unsigned int device)
494 {
495         struct ata_ioports *ioaddr = &ap->ioaddr;
496         u8 nsect, lbal;
497
498         ap->ops->dev_select(ap, device);
499
500         writeb(0x55, (void __iomem *) ioaddr->nsect_addr);
501         writeb(0xaa, (void __iomem *) ioaddr->lbal_addr);
502
503         writeb(0xaa, (void __iomem *) ioaddr->nsect_addr);
504         writeb(0x55, (void __iomem *) ioaddr->lbal_addr);
505
506         writeb(0x55, (void __iomem *) ioaddr->nsect_addr);
507         writeb(0xaa, (void __iomem *) ioaddr->lbal_addr);
508
509         nsect = readb((void __iomem *) ioaddr->nsect_addr);
510         lbal = readb((void __iomem *) ioaddr->lbal_addr);
511
512         if ((nsect == 0x55) && (lbal == 0xaa))
513                 return 1;       /* we found a device */
514
515         return 0;               /* nothing found */
516 }
517
518 /**
519  *      ata_devchk - PATA device presence detection
520  *      @ap: ATA channel to examine
521  *      @device: Device to examine (starting at zero)
522  *
523  *      Dispatch ATA device presence detection, depending
524  *      on whether we are using PIO or MMIO to talk to the
525  *      ATA shadow registers.
526  *
527  *      LOCKING:
528  *      caller.
529  */
530
531 static unsigned int ata_devchk(struct ata_port *ap,
532                                     unsigned int device)
533 {
534         if (ap->flags & ATA_FLAG_MMIO)
535                 return ata_mmio_devchk(ap, device);
536         return ata_pio_devchk(ap, device);
537 }
538
539 /**
540  *      ata_dev_classify - determine device type based on ATA-spec signature
541  *      @tf: ATA taskfile register set for device to be identified
542  *
543  *      Determine from taskfile register contents whether a device is
544  *      ATA or ATAPI, as per "Signature and persistence" section
545  *      of ATA/PI spec (volume 1, sect 5.14).
546  *
547  *      LOCKING:
548  *      None.
549  *
550  *      RETURNS:
551  *      Device type, %ATA_DEV_ATA, %ATA_DEV_ATAPI, or %ATA_DEV_UNKNOWN
552  *      the event of failure.
553  */
554
555 unsigned int ata_dev_classify(const struct ata_taskfile *tf)
556 {
557         /* Apple's open source Darwin code hints that some devices only
558          * put a proper signature into the LBA mid/high registers,
559          * So, we only check those.  It's sufficient for uniqueness.
560          */
561
562         if (((tf->lbam == 0) && (tf->lbah == 0)) ||
563             ((tf->lbam == 0x3c) && (tf->lbah == 0xc3))) {
564                 DPRINTK("found ATA device by sig\n");
565                 return ATA_DEV_ATA;
566         }
567
568         if (((tf->lbam == 0x14) && (tf->lbah == 0xeb)) ||
569             ((tf->lbam == 0x69) && (tf->lbah == 0x96))) {
570                 DPRINTK("found ATAPI device by sig\n");
571                 return ATA_DEV_ATAPI;
572         }
573
574         DPRINTK("unknown device\n");
575         return ATA_DEV_UNKNOWN;
576 }
577
578 /**
579  *      ata_dev_try_classify - Parse returned ATA device signature
580  *      @ap: ATA channel to examine
581  *      @device: Device to examine (starting at zero)
582  *      @r_err: Value of error register on completion
583  *
584  *      After an event -- SRST, E.D.D., or SATA COMRESET -- occurs,
585  *      an ATA/ATAPI-defined set of values is placed in the ATA
586  *      shadow registers, indicating the results of device detection
587  *      and diagnostics.
588  *
589  *      Select the ATA device, and read the values from the ATA shadow
590  *      registers.  Then parse according to the Error register value,
591  *      and the spec-defined values examined by ata_dev_classify().
592  *
593  *      LOCKING:
594  *      caller.
595  *
596  *      RETURNS:
597  *      Device type - %ATA_DEV_ATA, %ATA_DEV_ATAPI or %ATA_DEV_NONE.
598  */
599
600 static unsigned int
601 ata_dev_try_classify(struct ata_port *ap, unsigned int device, u8 *r_err)
602 {
603         struct ata_taskfile tf;
604         unsigned int class;
605         u8 err;
606
607         ap->ops->dev_select(ap, device);
608
609         memset(&tf, 0, sizeof(tf));
610
611         ap->ops->tf_read(ap, &tf);
612         err = tf.feature;
613         if (r_err)
614                 *r_err = err;
615
616         /* see if device passed diags */
617         if (err == 1)
618                 /* do nothing */ ;
619         else if ((device == 0) && (err == 0x81))
620                 /* do nothing */ ;
621         else
622                 return ATA_DEV_NONE;
623
624         /* determine if device is ATA or ATAPI */
625         class = ata_dev_classify(&tf);
626
627         if (class == ATA_DEV_UNKNOWN)
628                 return ATA_DEV_NONE;
629         if ((class == ATA_DEV_ATA) && (ata_chk_status(ap) == 0))
630                 return ATA_DEV_NONE;
631         return class;
632 }
633
634 /**
635  *      ata_id_string - Convert IDENTIFY DEVICE page into string
636  *      @id: IDENTIFY DEVICE results we will examine
637  *      @s: string into which data is output
638  *      @ofs: offset into identify device page
639  *      @len: length of string to return. must be an even number.
640  *
641  *      The strings in the IDENTIFY DEVICE page are broken up into
642  *      16-bit chunks.  Run through the string, and output each
643  *      8-bit chunk linearly, regardless of platform.
644  *
645  *      LOCKING:
646  *      caller.
647  */
648
649 void ata_id_string(const u16 *id, unsigned char *s,
650                    unsigned int ofs, unsigned int len)
651 {
652         unsigned int c;
653
654         while (len > 0) {
655                 c = id[ofs] >> 8;
656                 *s = c;
657                 s++;
658
659                 c = id[ofs] & 0xff;
660                 *s = c;
661                 s++;
662
663                 ofs++;
664                 len -= 2;
665         }
666 }
667
668 /**
669  *      ata_id_c_string - Convert IDENTIFY DEVICE page into C string
670  *      @id: IDENTIFY DEVICE results we will examine
671  *      @s: string into which data is output
672  *      @ofs: offset into identify device page
673  *      @len: length of string to return. must be an odd number.
674  *
675  *      This function is identical to ata_id_string except that it
676  *      trims trailing spaces and terminates the resulting string with
677  *      null.  @len must be actual maximum length (even number) + 1.
678  *
679  *      LOCKING:
680  *      caller.
681  */
682 void ata_id_c_string(const u16 *id, unsigned char *s,
683                      unsigned int ofs, unsigned int len)
684 {
685         unsigned char *p;
686
687         WARN_ON(!(len & 1));
688
689         ata_id_string(id, s, ofs, len - 1);
690
691         p = s + strnlen(s, len - 1);
692         while (p > s && p[-1] == ' ')
693                 p--;
694         *p = '\0';
695 }
696
697 static u64 ata_id_n_sectors(const u16 *id)
698 {
699         if (ata_id_has_lba(id)) {
700                 if (ata_id_has_lba48(id))
701                         return ata_id_u64(id, 100);
702                 else
703                         return ata_id_u32(id, 60);
704         } else {
705                 if (ata_id_current_chs_valid(id))
706                         return ata_id_u32(id, 57);
707                 else
708                         return id[1] * id[3] * id[6];
709         }
710 }
711
712 /**
713  *      ata_noop_dev_select - Select device 0/1 on ATA bus
714  *      @ap: ATA channel to manipulate
715  *      @device: ATA device (numbered from zero) to select
716  *
717  *      This function performs no actual function.
718  *
719  *      May be used as the dev_select() entry in ata_port_operations.
720  *
721  *      LOCKING:
722  *      caller.
723  */
724 void ata_noop_dev_select (struct ata_port *ap, unsigned int device)
725 {
726 }
727
728
729 /**
730  *      ata_std_dev_select - Select device 0/1 on ATA bus
731  *      @ap: ATA channel to manipulate
732  *      @device: ATA device (numbered from zero) to select
733  *
734  *      Use the method defined in the ATA specification to
735  *      make either device 0, or device 1, active on the
736  *      ATA channel.  Works with both PIO and MMIO.
737  *
738  *      May be used as the dev_select() entry in ata_port_operations.
739  *
740  *      LOCKING:
741  *      caller.
742  */
743
744 void ata_std_dev_select (struct ata_port *ap, unsigned int device)
745 {
746         u8 tmp;
747
748         if (device == 0)
749                 tmp = ATA_DEVICE_OBS;
750         else
751                 tmp = ATA_DEVICE_OBS | ATA_DEV1;
752
753         if (ap->flags & ATA_FLAG_MMIO) {
754                 writeb(tmp, (void __iomem *) ap->ioaddr.device_addr);
755         } else {
756                 outb(tmp, ap->ioaddr.device_addr);
757         }
758         ata_pause(ap);          /* needed; also flushes, for mmio */
759 }
760
761 /**
762  *      ata_dev_select - Select device 0/1 on ATA bus
763  *      @ap: ATA channel to manipulate
764  *      @device: ATA device (numbered from zero) to select
765  *      @wait: non-zero to wait for Status register BSY bit to clear
766  *      @can_sleep: non-zero if context allows sleeping
767  *
768  *      Use the method defined in the ATA specification to
769  *      make either device 0, or device 1, active on the
770  *      ATA channel.
771  *
772  *      This is a high-level version of ata_std_dev_select(),
773  *      which additionally provides the services of inserting
774  *      the proper pauses and status polling, where needed.
775  *
776  *      LOCKING:
777  *      caller.
778  */
779
780 void ata_dev_select(struct ata_port *ap, unsigned int device,
781                            unsigned int wait, unsigned int can_sleep)
782 {
783         if (ata_msg_probe(ap))
784                 ata_port_printk(ap, KERN_INFO, "ata_dev_select: ENTER, ata%u: "
785                                 "device %u, wait %u\n", ap->id, device, wait);
786
787         if (wait)
788                 ata_wait_idle(ap);
789
790         ap->ops->dev_select(ap, device);
791
792         if (wait) {
793                 if (can_sleep && ap->device[device].class == ATA_DEV_ATAPI)
794                         msleep(150);
795                 ata_wait_idle(ap);
796         }
797 }
798
799 /**
800  *      ata_dump_id - IDENTIFY DEVICE info debugging output
801  *      @id: IDENTIFY DEVICE page to dump
802  *
803  *      Dump selected 16-bit words from the given IDENTIFY DEVICE
804  *      page.
805  *
806  *      LOCKING:
807  *      caller.
808  */
809
810 static inline void ata_dump_id(const u16 *id)
811 {
812         DPRINTK("49==0x%04x  "
813                 "53==0x%04x  "
814                 "63==0x%04x  "
815                 "64==0x%04x  "
816                 "75==0x%04x  \n",
817                 id[49],
818                 id[53],
819                 id[63],
820                 id[64],
821                 id[75]);
822         DPRINTK("80==0x%04x  "
823                 "81==0x%04x  "
824                 "82==0x%04x  "
825                 "83==0x%04x  "
826                 "84==0x%04x  \n",
827                 id[80],
828                 id[81],
829                 id[82],
830                 id[83],
831                 id[84]);
832         DPRINTK("88==0x%04x  "
833                 "93==0x%04x\n",
834                 id[88],
835                 id[93]);
836 }
837
838 /**
839  *      ata_id_xfermask - Compute xfermask from the given IDENTIFY data
840  *      @id: IDENTIFY data to compute xfer mask from
841  *
842  *      Compute the xfermask for this device. This is not as trivial
843  *      as it seems if we must consider early devices correctly.
844  *
845  *      FIXME: pre IDE drive timing (do we care ?).
846  *
847  *      LOCKING:
848  *      None.
849  *
850  *      RETURNS:
851  *      Computed xfermask
852  */
853 static unsigned int ata_id_xfermask(const u16 *id)
854 {
855         unsigned int pio_mask, mwdma_mask, udma_mask;
856
857         /* Usual case. Word 53 indicates word 64 is valid */
858         if (id[ATA_ID_FIELD_VALID] & (1 << 1)) {
859                 pio_mask = id[ATA_ID_PIO_MODES] & 0x03;
860                 pio_mask <<= 3;
861                 pio_mask |= 0x7;
862         } else {
863                 /* If word 64 isn't valid then Word 51 high byte holds
864                  * the PIO timing number for the maximum. Turn it into
865                  * a mask.
866                  */
867                 pio_mask = (2 << (id[ATA_ID_OLD_PIO_MODES] & 0xFF)) - 1 ;
868
869                 /* But wait.. there's more. Design your standards by
870                  * committee and you too can get a free iordy field to
871                  * process. However its the speeds not the modes that
872                  * are supported... Note drivers using the timing API
873                  * will get this right anyway
874                  */
875         }
876
877         mwdma_mask = id[ATA_ID_MWDMA_MODES] & 0x07;
878
879         udma_mask = 0;
880         if (id[ATA_ID_FIELD_VALID] & (1 << 2))
881                 udma_mask = id[ATA_ID_UDMA_MODES] & 0xff;
882
883         return ata_pack_xfermask(pio_mask, mwdma_mask, udma_mask);
884 }
885
886 /**
887  *      ata_port_queue_task - Queue port_task
888  *      @ap: The ata_port to queue port_task for
889  *      @fn: workqueue function to be scheduled
890  *      @data: data value to pass to workqueue function
891  *      @delay: delay time for workqueue function
892  *
893  *      Schedule @fn(@data) for execution after @delay jiffies using
894  *      port_task.  There is one port_task per port and it's the
895  *      user(low level driver)'s responsibility to make sure that only
896  *      one task is active at any given time.
897  *
898  *      libata core layer takes care of synchronization between
899  *      port_task and EH.  ata_port_queue_task() may be ignored for EH
900  *      synchronization.
901  *
902  *      LOCKING:
903  *      Inherited from caller.
904  */
905 void ata_port_queue_task(struct ata_port *ap, void (*fn)(void *), void *data,
906                          unsigned long delay)
907 {
908         int rc;
909
910         if (ap->pflags & ATA_PFLAG_FLUSH_PORT_TASK)
911                 return;
912
913         PREPARE_WORK(&ap->port_task, fn, data);
914
915         if (!delay)
916                 rc = queue_work(ata_wq, &ap->port_task);
917         else
918                 rc = queue_delayed_work(ata_wq, &ap->port_task, delay);
919
920         /* rc == 0 means that another user is using port task */
921         WARN_ON(rc == 0);
922 }
923
924 /**
925  *      ata_port_flush_task - Flush port_task
926  *      @ap: The ata_port to flush port_task for
927  *
928  *      After this function completes, port_task is guranteed not to
929  *      be running or scheduled.
930  *
931  *      LOCKING:
932  *      Kernel thread context (may sleep)
933  */
934 void ata_port_flush_task(struct ata_port *ap)
935 {
936         unsigned long flags;
937
938         DPRINTK("ENTER\n");
939
940         spin_lock_irqsave(ap->lock, flags);
941         ap->pflags |= ATA_PFLAG_FLUSH_PORT_TASK;
942         spin_unlock_irqrestore(ap->lock, flags);
943
944         DPRINTK("flush #1\n");
945         flush_workqueue(ata_wq);
946
947         /*
948          * At this point, if a task is running, it's guaranteed to see
949          * the FLUSH flag; thus, it will never queue pio tasks again.
950          * Cancel and flush.
951          */
952         if (!cancel_delayed_work(&ap->port_task)) {
953                 if (ata_msg_ctl(ap))
954                         ata_port_printk(ap, KERN_DEBUG, "%s: flush #2\n",
955                                         __FUNCTION__);
956                 flush_workqueue(ata_wq);
957         }
958
959         spin_lock_irqsave(ap->lock, flags);
960         ap->pflags &= ~ATA_PFLAG_FLUSH_PORT_TASK;
961         spin_unlock_irqrestore(ap->lock, flags);
962
963         if (ata_msg_ctl(ap))
964                 ata_port_printk(ap, KERN_DEBUG, "%s: EXIT\n", __FUNCTION__);
965 }
966
967 void ata_qc_complete_internal(struct ata_queued_cmd *qc)
968 {
969         struct completion *waiting = qc->private_data;
970
971         complete(waiting);
972 }
973
974 /**
975  *      ata_exec_internal - execute libata internal command
976  *      @dev: Device to which the command is sent
977  *      @tf: Taskfile registers for the command and the result
978  *      @cdb: CDB for packet command
979  *      @dma_dir: Data tranfer direction of the command
980  *      @buf: Data buffer of the command
981  *      @buflen: Length of data buffer
982  *
983  *      Executes libata internal command with timeout.  @tf contains
984  *      command on entry and result on return.  Timeout and error
985  *      conditions are reported via return value.  No recovery action
986  *      is taken after a command times out.  It's caller's duty to
987  *      clean up after timeout.
988  *
989  *      LOCKING:
990  *      None.  Should be called with kernel context, might sleep.
991  *
992  *      RETURNS:
993  *      Zero on success, AC_ERR_* mask on failure
994  */
995 unsigned ata_exec_internal(struct ata_device *dev,
996                            struct ata_taskfile *tf, const u8 *cdb,
997                            int dma_dir, void *buf, unsigned int buflen)
998 {
999         struct ata_port *ap = dev->ap;
1000         u8 command = tf->command;
1001         struct ata_queued_cmd *qc;
1002         unsigned int tag, preempted_tag;
1003         u32 preempted_sactive, preempted_qc_active;
1004         DECLARE_COMPLETION_ONSTACK(wait);
1005         unsigned long flags;
1006         unsigned int err_mask;
1007         int rc;
1008
1009         spin_lock_irqsave(ap->lock, flags);
1010
1011         /* no internal command while frozen */
1012         if (ap->pflags & ATA_PFLAG_FROZEN) {
1013                 spin_unlock_irqrestore(ap->lock, flags);
1014                 return AC_ERR_SYSTEM;
1015         }
1016
1017         /* initialize internal qc */
1018
1019         /* XXX: Tag 0 is used for drivers with legacy EH as some
1020          * drivers choke if any other tag is given.  This breaks
1021          * ata_tag_internal() test for those drivers.  Don't use new
1022          * EH stuff without converting to it.
1023          */
1024         if (ap->ops->error_handler)
1025                 tag = ATA_TAG_INTERNAL;
1026         else
1027                 tag = 0;
1028
1029         if (test_and_set_bit(tag, &ap->qc_allocated))
1030                 BUG();
1031         qc = __ata_qc_from_tag(ap, tag);
1032
1033         qc->tag = tag;
1034         qc->scsicmd = NULL;
1035         qc->ap = ap;
1036         qc->dev = dev;
1037         ata_qc_reinit(qc);
1038
1039         preempted_tag = ap->active_tag;
1040         preempted_sactive = ap->sactive;
1041         preempted_qc_active = ap->qc_active;
1042         ap->active_tag = ATA_TAG_POISON;
1043         ap->sactive = 0;
1044         ap->qc_active = 0;
1045
1046         /* prepare & issue qc */
1047         qc->tf = *tf;
1048         if (cdb)
1049                 memcpy(qc->cdb, cdb, ATAPI_CDB_LEN);
1050         qc->flags |= ATA_QCFLAG_RESULT_TF;
1051         qc->dma_dir = dma_dir;
1052         if (dma_dir != DMA_NONE) {
1053                 ata_sg_init_one(qc, buf, buflen);
1054                 qc->nsect = buflen / ATA_SECT_SIZE;
1055         }
1056
1057         qc->private_data = &wait;
1058         qc->complete_fn = ata_qc_complete_internal;
1059
1060         ata_qc_issue(qc);
1061
1062         spin_unlock_irqrestore(ap->lock, flags);
1063
1064         rc = wait_for_completion_timeout(&wait, ata_probe_timeout);
1065
1066         ata_port_flush_task(ap);
1067
1068         if (!rc) {
1069                 spin_lock_irqsave(ap->lock, flags);
1070
1071                 /* We're racing with irq here.  If we lose, the
1072                  * following test prevents us from completing the qc
1073                  * twice.  If we win, the port is frozen and will be
1074                  * cleaned up by ->post_internal_cmd().
1075                  */
1076                 if (qc->flags & ATA_QCFLAG_ACTIVE) {
1077                         qc->err_mask |= AC_ERR_TIMEOUT;
1078
1079                         if (ap->ops->error_handler)
1080                                 ata_port_freeze(ap);
1081                         else
1082                                 ata_qc_complete(qc);
1083
1084                         if (ata_msg_warn(ap))
1085                                 ata_dev_printk(dev, KERN_WARNING,
1086                                         "qc timeout (cmd 0x%x)\n", command);
1087                 }
1088
1089                 spin_unlock_irqrestore(ap->lock, flags);
1090         }
1091
1092         /* do post_internal_cmd */
1093         if (ap->ops->post_internal_cmd)
1094                 ap->ops->post_internal_cmd(qc);
1095
1096         if (qc->flags & ATA_QCFLAG_FAILED && !qc->err_mask) {
1097                 if (ata_msg_warn(ap))
1098                         ata_dev_printk(dev, KERN_WARNING,
1099                                 "zero err_mask for failed "
1100                                 "internal command, assuming AC_ERR_OTHER\n");
1101                 qc->err_mask |= AC_ERR_OTHER;
1102         }
1103
1104         /* finish up */
1105         spin_lock_irqsave(ap->lock, flags);
1106
1107         *tf = qc->result_tf;
1108         err_mask = qc->err_mask;
1109
1110         ata_qc_free(qc);
1111         ap->active_tag = preempted_tag;
1112         ap->sactive = preempted_sactive;
1113         ap->qc_active = preempted_qc_active;
1114
1115         /* XXX - Some LLDDs (sata_mv) disable port on command failure.
1116          * Until those drivers are fixed, we detect the condition
1117          * here, fail the command with AC_ERR_SYSTEM and reenable the
1118          * port.
1119          *
1120          * Note that this doesn't change any behavior as internal
1121          * command failure results in disabling the device in the
1122          * higher layer for LLDDs without new reset/EH callbacks.
1123          *
1124          * Kill the following code as soon as those drivers are fixed.
1125          */
1126         if (ap->flags & ATA_FLAG_DISABLED) {
1127                 err_mask |= AC_ERR_SYSTEM;
1128                 ata_port_probe(ap);
1129         }
1130
1131         spin_unlock_irqrestore(ap->lock, flags);
1132
1133         return err_mask;
1134 }
1135
1136 /**
1137  *      ata_do_simple_cmd - execute simple internal command
1138  *      @dev: Device to which the command is sent
1139  *      @cmd: Opcode to execute
1140  *
1141  *      Execute a 'simple' command, that only consists of the opcode
1142  *      'cmd' itself, without filling any other registers
1143  *
1144  *      LOCKING:
1145  *      Kernel thread context (may sleep).
1146  *
1147  *      RETURNS:
1148  *      Zero on success, AC_ERR_* mask on failure
1149  */
1150 unsigned int ata_do_simple_cmd(struct ata_device *dev, u8 cmd)
1151 {
1152         struct ata_taskfile tf;
1153
1154         ata_tf_init(dev, &tf);
1155
1156         tf.command = cmd;
1157         tf.flags |= ATA_TFLAG_DEVICE;
1158         tf.protocol = ATA_PROT_NODATA;
1159
1160         return ata_exec_internal(dev, &tf, NULL, DMA_NONE, NULL, 0);
1161 }
1162
1163 /**
1164  *      ata_pio_need_iordy      -       check if iordy needed
1165  *      @adev: ATA device
1166  *
1167  *      Check if the current speed of the device requires IORDY. Used
1168  *      by various controllers for chip configuration.
1169  */
1170
1171 unsigned int ata_pio_need_iordy(const struct ata_device *adev)
1172 {
1173         int pio;
1174         int speed = adev->pio_mode - XFER_PIO_0;
1175
1176         if (speed < 2)
1177                 return 0;
1178         if (speed > 2)
1179                 return 1;
1180
1181         /* If we have no drive specific rule, then PIO 2 is non IORDY */
1182
1183         if (adev->id[ATA_ID_FIELD_VALID] & 2) { /* EIDE */
1184                 pio = adev->id[ATA_ID_EIDE_PIO];
1185                 /* Is the speed faster than the drive allows non IORDY ? */
1186                 if (pio) {
1187                         /* This is cycle times not frequency - watch the logic! */
1188                         if (pio > 240)  /* PIO2 is 240nS per cycle */
1189                                 return 1;
1190                         return 0;
1191                 }
1192         }
1193         return 0;
1194 }
1195
1196 /**
1197  *      ata_dev_read_id - Read ID data from the specified device
1198  *      @dev: target device
1199  *      @p_class: pointer to class of the target device (may be changed)
1200  *      @post_reset: is this read ID post-reset?
1201  *      @id: buffer to read IDENTIFY data into
1202  *
1203  *      Read ID data from the specified device.  ATA_CMD_ID_ATA is
1204  *      performed on ATA devices and ATA_CMD_ID_ATAPI on ATAPI
1205  *      devices.  This function also issues ATA_CMD_INIT_DEV_PARAMS
1206  *      for pre-ATA4 drives.
1207  *
1208  *      LOCKING:
1209  *      Kernel thread context (may sleep)
1210  *
1211  *      RETURNS:
1212  *      0 on success, -errno otherwise.
1213  */
1214 int ata_dev_read_id(struct ata_device *dev, unsigned int *p_class,
1215                     int post_reset, u16 *id)
1216 {
1217         struct ata_port *ap = dev->ap;
1218         unsigned int class = *p_class;
1219         struct ata_taskfile tf;
1220         unsigned int err_mask = 0;
1221         const char *reason;
1222         int rc;
1223
1224         if (ata_msg_ctl(ap))
1225                 ata_dev_printk(dev, KERN_DEBUG, "%s: ENTER, host %u, dev %u\n",
1226                                __FUNCTION__, ap->id, dev->devno);
1227
1228         ata_dev_select(ap, dev->devno, 1, 1); /* select device 0/1 */
1229
1230  retry:
1231         ata_tf_init(dev, &tf);
1232
1233         switch (class) {
1234         case ATA_DEV_ATA:
1235                 tf.command = ATA_CMD_ID_ATA;
1236                 break;
1237         case ATA_DEV_ATAPI:
1238                 tf.command = ATA_CMD_ID_ATAPI;
1239                 break;
1240         default:
1241                 rc = -ENODEV;
1242                 reason = "unsupported class";
1243                 goto err_out;
1244         }
1245
1246         tf.protocol = ATA_PROT_PIO;
1247
1248         err_mask = ata_exec_internal(dev, &tf, NULL, DMA_FROM_DEVICE,
1249                                      id, sizeof(id[0]) * ATA_ID_WORDS);
1250         if (err_mask) {
1251                 rc = -EIO;
1252                 reason = "I/O error";
1253                 goto err_out;
1254         }
1255
1256         swap_buf_le16(id, ATA_ID_WORDS);
1257
1258         /* sanity check */
1259         rc = -EINVAL;
1260         reason = "device reports illegal type";
1261
1262         if (class == ATA_DEV_ATA) {
1263                 if (!ata_id_is_ata(id) && !ata_id_is_cfa(id))
1264                         goto err_out;
1265         } else {
1266                 if (ata_id_is_ata(id))
1267                         goto err_out;
1268         }
1269
1270         if (post_reset && class == ATA_DEV_ATA) {
1271                 /*
1272                  * The exact sequence expected by certain pre-ATA4 drives is:
1273                  * SRST RESET
1274                  * IDENTIFY
1275                  * INITIALIZE DEVICE PARAMETERS
1276                  * anything else..
1277                  * Some drives were very specific about that exact sequence.
1278                  */
1279                 if (ata_id_major_version(id) < 4 || !ata_id_has_lba(id)) {
1280                         err_mask = ata_dev_init_params(dev, id[3], id[6]);
1281                         if (err_mask) {
1282                                 rc = -EIO;
1283                                 reason = "INIT_DEV_PARAMS failed";
1284                                 goto err_out;
1285                         }
1286
1287                         /* current CHS translation info (id[53-58]) might be
1288                          * changed. reread the identify device info.
1289                          */
1290                         post_reset = 0;
1291                         goto retry;
1292                 }
1293         }
1294
1295         *p_class = class;
1296
1297         return 0;
1298
1299  err_out:
1300         if (ata_msg_warn(ap))
1301                 ata_dev_printk(dev, KERN_WARNING, "failed to IDENTIFY "
1302                                "(%s, err_mask=0x%x)\n", reason, err_mask);
1303         return rc;
1304 }
1305
1306 static inline u8 ata_dev_knobble(struct ata_device *dev)
1307 {
1308         return ((dev->ap->cbl == ATA_CBL_SATA) && (!ata_id_is_sata(dev->id)));
1309 }
1310
1311 static void ata_dev_config_ncq(struct ata_device *dev,
1312                                char *desc, size_t desc_sz)
1313 {
1314         struct ata_port *ap = dev->ap;
1315         int hdepth = 0, ddepth = ata_id_queue_depth(dev->id);
1316
1317         if (!ata_id_has_ncq(dev->id)) {
1318                 desc[0] = '\0';
1319                 return;
1320         }
1321
1322         if (ap->flags & ATA_FLAG_NCQ) {
1323                 hdepth = min(ap->host->can_queue, ATA_MAX_QUEUE - 1);
1324                 dev->flags |= ATA_DFLAG_NCQ;
1325         }
1326
1327         if (hdepth >= ddepth)
1328                 snprintf(desc, desc_sz, "NCQ (depth %d)", ddepth);
1329         else
1330                 snprintf(desc, desc_sz, "NCQ (depth %d/%d)", hdepth, ddepth);
1331 }
1332
1333 static void ata_set_port_max_cmd_len(struct ata_port *ap)
1334 {
1335         int i;
1336
1337         if (ap->host) {
1338                 ap->host->max_cmd_len = 0;
1339                 for (i = 0; i < ATA_MAX_DEVICES; i++)
1340                         ap->host->max_cmd_len = max_t(unsigned int,
1341                                                       ap->host->max_cmd_len,
1342                                                       ap->device[i].cdb_len);
1343         }
1344 }
1345
1346 /**
1347  *      ata_dev_configure - Configure the specified ATA/ATAPI device
1348  *      @dev: Target device to configure
1349  *      @print_info: Enable device info printout
1350  *
1351  *      Configure @dev according to @dev->id.  Generic and low-level
1352  *      driver specific fixups are also applied.
1353  *
1354  *      LOCKING:
1355  *      Kernel thread context (may sleep)
1356  *
1357  *      RETURNS:
1358  *      0 on success, -errno otherwise
1359  */
1360 int ata_dev_configure(struct ata_device *dev, int print_info)
1361 {
1362         struct ata_port *ap = dev->ap;
1363         const u16 *id = dev->id;
1364         unsigned int xfer_mask;
1365         int rc;
1366
1367         if (!ata_dev_enabled(dev) && ata_msg_info(ap)) {
1368                 ata_dev_printk(dev, KERN_INFO,
1369                                "%s: ENTER/EXIT (host %u, dev %u) -- nodev\n",
1370                                __FUNCTION__, ap->id, dev->devno);
1371                 return 0;
1372         }
1373
1374         if (ata_msg_probe(ap))
1375                 ata_dev_printk(dev, KERN_DEBUG, "%s: ENTER, host %u, dev %u\n",
1376                                __FUNCTION__, ap->id, dev->devno);
1377
1378         /* print device capabilities */
1379         if (ata_msg_probe(ap))
1380                 ata_dev_printk(dev, KERN_DEBUG,
1381                                "%s: cfg 49:%04x 82:%04x 83:%04x 84:%04x "
1382                                "85:%04x 86:%04x 87:%04x 88:%04x\n",
1383                                __FUNCTION__,
1384                                id[49], id[82], id[83], id[84],
1385                                id[85], id[86], id[87], id[88]);
1386
1387         /* initialize to-be-configured parameters */
1388         dev->flags &= ~ATA_DFLAG_CFG_MASK;
1389         dev->max_sectors = 0;
1390         dev->cdb_len = 0;
1391         dev->n_sectors = 0;
1392         dev->cylinders = 0;
1393         dev->heads = 0;
1394         dev->sectors = 0;
1395
1396         /*
1397          * common ATA, ATAPI feature tests
1398          */
1399
1400         /* find max transfer mode; for printk only */
1401         xfer_mask = ata_id_xfermask(id);
1402
1403         if (ata_msg_probe(ap))
1404                 ata_dump_id(id);
1405
1406         /* ATA-specific feature tests */
1407         if (dev->class == ATA_DEV_ATA) {
1408                 dev->n_sectors = ata_id_n_sectors(id);
1409
1410                 if (ata_id_has_lba(id)) {
1411                         const char *lba_desc;
1412                         char ncq_desc[20];
1413
1414                         lba_desc = "LBA";
1415                         dev->flags |= ATA_DFLAG_LBA;
1416                         if (ata_id_has_lba48(id)) {
1417                                 dev->flags |= ATA_DFLAG_LBA48;
1418                                 lba_desc = "LBA48";
1419                         }
1420
1421                         /* config NCQ */
1422                         ata_dev_config_ncq(dev, ncq_desc, sizeof(ncq_desc));
1423
1424                         /* print device info to dmesg */
1425                         if (ata_msg_drv(ap) && print_info)
1426                                 ata_dev_printk(dev, KERN_INFO, "ATA-%d, "
1427                                         "max %s, %Lu sectors: %s %s\n",
1428                                         ata_id_major_version(id),
1429                                         ata_mode_string(xfer_mask),
1430                                         (unsigned long long)dev->n_sectors,
1431                                         lba_desc, ncq_desc);
1432                 } else {
1433                         /* CHS */
1434
1435                         /* Default translation */
1436                         dev->cylinders  = id[1];
1437                         dev->heads      = id[3];
1438                         dev->sectors    = id[6];
1439
1440                         if (ata_id_current_chs_valid(id)) {
1441                                 /* Current CHS translation is valid. */
1442                                 dev->cylinders = id[54];
1443                                 dev->heads     = id[55];
1444                                 dev->sectors   = id[56];
1445                         }
1446
1447                         /* print device info to dmesg */
1448                         if (ata_msg_drv(ap) && print_info)
1449                                 ata_dev_printk(dev, KERN_INFO, "ATA-%d, "
1450                                         "max %s, %Lu sectors: CHS %u/%u/%u\n",
1451                                         ata_id_major_version(id),
1452                                         ata_mode_string(xfer_mask),
1453                                         (unsigned long long)dev->n_sectors,
1454                                         dev->cylinders, dev->heads,
1455                                         dev->sectors);
1456                 }
1457
1458                 if (dev->id[59] & 0x100) {
1459                         dev->multi_count = dev->id[59] & 0xff;
1460                         if (ata_msg_drv(ap) && print_info)
1461                                 ata_dev_printk(dev, KERN_INFO,
1462                                         "ata%u: dev %u multi count %u\n",
1463                                         ap->id, dev->devno, dev->multi_count);
1464                 }
1465
1466                 dev->cdb_len = 16;
1467         }
1468
1469         /* ATAPI-specific feature tests */
1470         else if (dev->class == ATA_DEV_ATAPI) {
1471                 char *cdb_intr_string = "";
1472
1473                 rc = atapi_cdb_len(id);
1474                 if ((rc < 12) || (rc > ATAPI_CDB_LEN)) {
1475                         if (ata_msg_warn(ap))
1476                                 ata_dev_printk(dev, KERN_WARNING,
1477                                                "unsupported CDB len\n");
1478                         rc = -EINVAL;
1479                         goto err_out_nosup;
1480                 }
1481                 dev->cdb_len = (unsigned int) rc;
1482
1483                 if (ata_id_cdb_intr(dev->id)) {
1484                         dev->flags |= ATA_DFLAG_CDB_INTR;
1485                         cdb_intr_string = ", CDB intr";
1486                 }
1487
1488                 /* print device info to dmesg */
1489                 if (ata_msg_drv(ap) && print_info)
1490                         ata_dev_printk(dev, KERN_INFO, "ATAPI, max %s%s\n",
1491                                        ata_mode_string(xfer_mask),
1492                                        cdb_intr_string);
1493         }
1494
1495         ata_set_port_max_cmd_len(ap);
1496
1497         /* limit bridge transfers to udma5, 200 sectors */
1498         if (ata_dev_knobble(dev)) {
1499                 if (ata_msg_drv(ap) && print_info)
1500                         ata_dev_printk(dev, KERN_INFO,
1501                                        "applying bridge limits\n");
1502                 dev->udma_mask &= ATA_UDMA5;
1503                 dev->max_sectors = ATA_MAX_SECTORS;
1504         }
1505
1506         if (ap->ops->dev_config)
1507                 ap->ops->dev_config(ap, dev);
1508
1509         if (ata_msg_probe(ap))
1510                 ata_dev_printk(dev, KERN_DEBUG, "%s: EXIT, drv_stat = 0x%x\n",
1511                         __FUNCTION__, ata_chk_status(ap));
1512         return 0;
1513
1514 err_out_nosup:
1515         if (ata_msg_probe(ap))
1516                 ata_dev_printk(dev, KERN_DEBUG,
1517                                "%s: EXIT, err\n", __FUNCTION__);
1518         return rc;
1519 }
1520
1521 /**
1522  *      ata_bus_probe - Reset and probe ATA bus
1523  *      @ap: Bus to probe
1524  *
1525  *      Master ATA bus probing function.  Initiates a hardware-dependent
1526  *      bus reset, then attempts to identify any devices found on
1527  *      the bus.
1528  *
1529  *      LOCKING:
1530  *      PCI/etc. bus probe sem.
1531  *
1532  *      RETURNS:
1533  *      Zero on success, negative errno otherwise.
1534  */
1535
1536 static int ata_bus_probe(struct ata_port *ap)
1537 {
1538         unsigned int classes[ATA_MAX_DEVICES];
1539         int tries[ATA_MAX_DEVICES];
1540         int i, rc, down_xfermask;
1541         struct ata_device *dev;
1542
1543         ata_port_probe(ap);
1544
1545         for (i = 0; i < ATA_MAX_DEVICES; i++)
1546                 tries[i] = ATA_PROBE_MAX_TRIES;
1547
1548  retry:
1549         down_xfermask = 0;
1550
1551         /* reset and determine device classes */
1552         ap->ops->phy_reset(ap);
1553
1554         for (i = 0; i < ATA_MAX_DEVICES; i++) {
1555                 dev = &ap->device[i];
1556
1557                 if (!(ap->flags & ATA_FLAG_DISABLED) &&
1558                     dev->class != ATA_DEV_UNKNOWN)
1559                         classes[dev->devno] = dev->class;
1560                 else
1561                         classes[dev->devno] = ATA_DEV_NONE;
1562
1563                 dev->class = ATA_DEV_UNKNOWN;
1564         }
1565
1566         ata_port_probe(ap);
1567
1568         /* after the reset the device state is PIO 0 and the controller
1569            state is undefined. Record the mode */
1570
1571         for (i = 0; i < ATA_MAX_DEVICES; i++)
1572                 ap->device[i].pio_mode = XFER_PIO_0;
1573
1574         /* read IDENTIFY page and configure devices */
1575         for (i = 0; i < ATA_MAX_DEVICES; i++) {
1576                 dev = &ap->device[i];
1577
1578                 if (tries[i])
1579                         dev->class = classes[i];
1580
1581                 if (!ata_dev_enabled(dev))
1582                         continue;
1583
1584                 rc = ata_dev_read_id(dev, &dev->class, 1, dev->id);
1585                 if (rc)
1586                         goto fail;
1587
1588                 rc = ata_dev_configure(dev, 1);
1589                 if (rc)
1590                         goto fail;
1591         }
1592
1593         /* configure transfer mode */
1594         rc = ata_set_mode(ap, &dev);
1595         if (rc) {
1596                 down_xfermask = 1;
1597                 goto fail;
1598         }
1599
1600         for (i = 0; i < ATA_MAX_DEVICES; i++)
1601                 if (ata_dev_enabled(&ap->device[i]))
1602                         return 0;
1603
1604         /* no device present, disable port */
1605         ata_port_disable(ap);
1606         ap->ops->port_disable(ap);
1607         return -ENODEV;
1608
1609  fail:
1610         switch (rc) {
1611         case -EINVAL:
1612         case -ENODEV:
1613                 tries[dev->devno] = 0;
1614                 break;
1615         case -EIO:
1616                 sata_down_spd_limit(ap);
1617                 /* fall through */
1618         default:
1619                 tries[dev->devno]--;
1620                 if (down_xfermask &&
1621                     ata_down_xfermask_limit(dev, tries[dev->devno] == 1))
1622                         tries[dev->devno] = 0;
1623         }
1624
1625         if (!tries[dev->devno]) {
1626                 ata_down_xfermask_limit(dev, 1);
1627                 ata_dev_disable(dev);
1628         }
1629
1630         goto retry;
1631 }
1632
1633 /**
1634  *      ata_port_probe - Mark port as enabled
1635  *      @ap: Port for which we indicate enablement
1636  *
1637  *      Modify @ap data structure such that the system
1638  *      thinks that the entire port is enabled.
1639  *
1640  *      LOCKING: host_set lock, or some other form of
1641  *      serialization.
1642  */
1643
1644 void ata_port_probe(struct ata_port *ap)
1645 {
1646         ap->flags &= ~ATA_FLAG_DISABLED;
1647 }
1648
1649 /**
1650  *      sata_print_link_status - Print SATA link status
1651  *      @ap: SATA port to printk link status about
1652  *
1653  *      This function prints link speed and status of a SATA link.
1654  *
1655  *      LOCKING:
1656  *      None.
1657  */
1658 static void sata_print_link_status(struct ata_port *ap)
1659 {
1660         u32 sstatus, scontrol, tmp;
1661
1662         if (sata_scr_read(ap, SCR_STATUS, &sstatus))
1663                 return;
1664         sata_scr_read(ap, SCR_CONTROL, &scontrol);
1665
1666         if (ata_port_online(ap)) {
1667                 tmp = (sstatus >> 4) & 0xf;
1668                 ata_port_printk(ap, KERN_INFO,
1669                                 "SATA link up %s (SStatus %X SControl %X)\n",
1670                                 sata_spd_string(tmp), sstatus, scontrol);
1671         } else {
1672                 ata_port_printk(ap, KERN_INFO,
1673                                 "SATA link down (SStatus %X SControl %X)\n",
1674                                 sstatus, scontrol);
1675         }
1676 }
1677
1678 /**
1679  *      __sata_phy_reset - Wake/reset a low-level SATA PHY
1680  *      @ap: SATA port associated with target SATA PHY.
1681  *
1682  *      This function issues commands to standard SATA Sxxx
1683  *      PHY registers, to wake up the phy (and device), and
1684  *      clear any reset condition.
1685  *
1686  *      LOCKING:
1687  *      PCI/etc. bus probe sem.
1688  *
1689  */
1690 void __sata_phy_reset(struct ata_port *ap)
1691 {
1692         u32 sstatus;
1693         unsigned long timeout = jiffies + (HZ * 5);
1694
1695         if (ap->flags & ATA_FLAG_SATA_RESET) {
1696                 /* issue phy wake/reset */
1697                 sata_scr_write_flush(ap, SCR_CONTROL, 0x301);
1698                 /* Couldn't find anything in SATA I/II specs, but
1699                  * AHCI-1.1 10.4.2 says at least 1 ms. */
1700                 mdelay(1);
1701         }
1702         /* phy wake/clear reset */
1703         sata_scr_write_flush(ap, SCR_CONTROL, 0x300);
1704
1705         /* wait for phy to become ready, if necessary */
1706         do {
1707                 msleep(200);
1708                 sata_scr_read(ap, SCR_STATUS, &sstatus);
1709                 if ((sstatus & 0xf) != 1)
1710                         break;
1711         } while (time_before(jiffies, timeout));
1712
1713         /* print link status */
1714         sata_print_link_status(ap);
1715
1716         /* TODO: phy layer with polling, timeouts, etc. */
1717         if (!ata_port_offline(ap))
1718                 ata_port_probe(ap);
1719         else
1720                 ata_port_disable(ap);
1721
1722         if (ap->flags & ATA_FLAG_DISABLED)
1723                 return;
1724
1725         if (ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT)) {
1726                 ata_port_disable(ap);
1727                 return;
1728         }
1729
1730         ap->cbl = ATA_CBL_SATA;
1731 }
1732
1733 /**
1734  *      sata_phy_reset - Reset SATA bus.
1735  *      @ap: SATA port associated with target SATA PHY.
1736  *
1737  *      This function resets the SATA bus, and then probes
1738  *      the bus for devices.
1739  *
1740  *      LOCKING:
1741  *      PCI/etc. bus probe sem.
1742  *
1743  */
1744 void sata_phy_reset(struct ata_port *ap)
1745 {
1746         __sata_phy_reset(ap);
1747         if (ap->flags & ATA_FLAG_DISABLED)
1748                 return;
1749         ata_bus_reset(ap);
1750 }
1751
1752 /**
1753  *      ata_dev_pair            -       return other device on cable
1754  *      @adev: device
1755  *
1756  *      Obtain the other device on the same cable, or if none is
1757  *      present NULL is returned
1758  */
1759
1760 struct ata_device *ata_dev_pair(struct ata_device *adev)
1761 {
1762         struct ata_port *ap = adev->ap;
1763         struct ata_device *pair = &ap->device[1 - adev->devno];
1764         if (!ata_dev_enabled(pair))
1765                 return NULL;
1766         return pair;
1767 }
1768
1769 /**
1770  *      ata_port_disable - Disable port.
1771  *      @ap: Port to be disabled.
1772  *
1773  *      Modify @ap data structure such that the system
1774  *      thinks that the entire port is disabled, and should
1775  *      never attempt to probe or communicate with devices
1776  *      on this port.
1777  *
1778  *      LOCKING: host_set lock, or some other form of
1779  *      serialization.
1780  */
1781
1782 void ata_port_disable(struct ata_port *ap)
1783 {
1784         ap->device[0].class = ATA_DEV_NONE;
1785         ap->device[1].class = ATA_DEV_NONE;
1786         ap->flags |= ATA_FLAG_DISABLED;
1787 }
1788
1789 /**
1790  *      sata_down_spd_limit - adjust SATA spd limit downward
1791  *      @ap: Port to adjust SATA spd limit for
1792  *
1793  *      Adjust SATA spd limit of @ap downward.  Note that this
1794  *      function only adjusts the limit.  The change must be applied
1795  *      using sata_set_spd().
1796  *
1797  *      LOCKING:
1798  *      Inherited from caller.
1799  *
1800  *      RETURNS:
1801  *      0 on success, negative errno on failure
1802  */
1803 int sata_down_spd_limit(struct ata_port *ap)
1804 {
1805         u32 sstatus, spd, mask;
1806         int rc, highbit;
1807
1808         rc = sata_scr_read(ap, SCR_STATUS, &sstatus);
1809         if (rc)
1810                 return rc;
1811
1812         mask = ap->sata_spd_limit;
1813         if (mask <= 1)
1814                 return -EINVAL;
1815         highbit = fls(mask) - 1;
1816         mask &= ~(1 << highbit);
1817
1818         spd = (sstatus >> 4) & 0xf;
1819         if (spd <= 1)
1820                 return -EINVAL;
1821         spd--;
1822         mask &= (1 << spd) - 1;
1823         if (!mask)
1824                 return -EINVAL;
1825
1826         ap->sata_spd_limit = mask;
1827
1828         ata_port_printk(ap, KERN_WARNING, "limiting SATA link speed to %s\n",
1829                         sata_spd_string(fls(mask)));
1830
1831         return 0;
1832 }
1833
1834 static int __sata_set_spd_needed(struct ata_port *ap, u32 *scontrol)
1835 {
1836         u32 spd, limit;
1837
1838         if (ap->sata_spd_limit == UINT_MAX)
1839                 limit = 0;
1840         else
1841                 limit = fls(ap->sata_spd_limit);
1842
1843         spd = (*scontrol >> 4) & 0xf;
1844         *scontrol = (*scontrol & ~0xf0) | ((limit & 0xf) << 4);
1845
1846         return spd != limit;
1847 }
1848
1849 /**
1850  *      sata_set_spd_needed - is SATA spd configuration needed
1851  *      @ap: Port in question
1852  *
1853  *      Test whether the spd limit in SControl matches
1854  *      @ap->sata_spd_limit.  This function is used to determine
1855  *      whether hardreset is necessary to apply SATA spd
1856  *      configuration.
1857  *
1858  *      LOCKING:
1859  *      Inherited from caller.
1860  *
1861  *      RETURNS:
1862  *      1 if SATA spd configuration is needed, 0 otherwise.
1863  */
1864 int sata_set_spd_needed(struct ata_port *ap)
1865 {
1866         u32 scontrol;
1867
1868         if (sata_scr_read(ap, SCR_CONTROL, &scontrol))
1869                 return 0;
1870
1871         return __sata_set_spd_needed(ap, &scontrol);
1872 }
1873
1874 /**
1875  *      sata_set_spd - set SATA spd according to spd limit
1876  *      @ap: Port to set SATA spd for
1877  *
1878  *      Set SATA spd of @ap according to sata_spd_limit.
1879  *
1880  *      LOCKING:
1881  *      Inherited from caller.
1882  *
1883  *      RETURNS:
1884  *      0 if spd doesn't need to be changed, 1 if spd has been
1885  *      changed.  Negative errno if SCR registers are inaccessible.
1886  */
1887 int sata_set_spd(struct ata_port *ap)
1888 {
1889         u32 scontrol;
1890         int rc;
1891
1892         if ((rc = sata_scr_read(ap, SCR_CONTROL, &scontrol)))
1893                 return rc;
1894
1895         if (!__sata_set_spd_needed(ap, &scontrol))
1896                 return 0;
1897
1898         if ((rc = sata_scr_write(ap, SCR_CONTROL, scontrol)))
1899                 return rc;
1900
1901         return 1;
1902 }
1903
1904 /*
1905  * This mode timing computation functionality is ported over from
1906  * drivers/ide/ide-timing.h and was originally written by Vojtech Pavlik
1907  */
1908 /*
1909  * PIO 0-5, MWDMA 0-2 and UDMA 0-6 timings (in nanoseconds).
1910  * These were taken from ATA/ATAPI-6 standard, rev 0a, except
1911  * for PIO 5, which is a nonstandard extension and UDMA6, which
1912  * is currently supported only by Maxtor drives.
1913  */
1914
1915 static const struct ata_timing ata_timing[] = {
1916
1917         { XFER_UDMA_6,     0,   0,   0,   0,   0,   0,   0,  15 },
1918         { XFER_UDMA_5,     0,   0,   0,   0,   0,   0,   0,  20 },
1919         { XFER_UDMA_4,     0,   0,   0,   0,   0,   0,   0,  30 },
1920         { XFER_UDMA_3,     0,   0,   0,   0,   0,   0,   0,  45 },
1921
1922         { XFER_UDMA_2,     0,   0,   0,   0,   0,   0,   0,  60 },
1923         { XFER_UDMA_1,     0,   0,   0,   0,   0,   0,   0,  80 },
1924         { XFER_UDMA_0,     0,   0,   0,   0,   0,   0,   0, 120 },
1925
1926 /*      { XFER_UDMA_SLOW,  0,   0,   0,   0,   0,   0,   0, 150 }, */
1927
1928         { XFER_MW_DMA_2,  25,   0,   0,   0,  70,  25, 120,   0 },
1929         { XFER_MW_DMA_1,  45,   0,   0,   0,  80,  50, 150,   0 },
1930         { XFER_MW_DMA_0,  60,   0,   0,   0, 215, 215, 480,   0 },
1931
1932         { XFER_SW_DMA_2,  60,   0,   0,   0, 120, 120, 240,   0 },
1933         { XFER_SW_DMA_1,  90,   0,   0,   0, 240, 240, 480,   0 },
1934         { XFER_SW_DMA_0, 120,   0,   0,   0, 480, 480, 960,   0 },
1935
1936 /*      { XFER_PIO_5,     20,  50,  30, 100,  50,  30, 100,   0 }, */
1937         { XFER_PIO_4,     25,  70,  25, 120,  70,  25, 120,   0 },
1938         { XFER_PIO_3,     30,  80,  70, 180,  80,  70, 180,   0 },
1939
1940         { XFER_PIO_2,     30, 290,  40, 330, 100,  90, 240,   0 },
1941         { XFER_PIO_1,     50, 290,  93, 383, 125, 100, 383,   0 },
1942         { XFER_PIO_0,     70, 290, 240, 600, 165, 150, 600,   0 },
1943
1944 /*      { XFER_PIO_SLOW, 120, 290, 240, 960, 290, 240, 960,   0 }, */
1945
1946         { 0xFF }
1947 };
1948
1949 #define ENOUGH(v,unit)          (((v)-1)/(unit)+1)
1950 #define EZ(v,unit)              ((v)?ENOUGH(v,unit):0)
1951
1952 static void ata_timing_quantize(const struct ata_timing *t, struct ata_timing *q, int T, int UT)
1953 {
1954         q->setup   = EZ(t->setup   * 1000,  T);
1955         q->act8b   = EZ(t->act8b   * 1000,  T);
1956         q->rec8b   = EZ(t->rec8b   * 1000,  T);
1957         q->cyc8b   = EZ(t->cyc8b   * 1000,  T);
1958         q->active  = EZ(t->active  * 1000,  T);
1959         q->recover = EZ(t->recover * 1000,  T);
1960         q->cycle   = EZ(t->cycle   * 1000,  T);
1961         q->udma    = EZ(t->udma    * 1000, UT);
1962 }
1963
1964 void ata_timing_merge(const struct ata_timing *a, const struct ata_timing *b,
1965                       struct ata_timing *m, unsigned int what)
1966 {
1967         if (what & ATA_TIMING_SETUP  ) m->setup   = max(a->setup,   b->setup);
1968         if (what & ATA_TIMING_ACT8B  ) m->act8b   = max(a->act8b,   b->act8b);
1969         if (what & ATA_TIMING_REC8B  ) m->rec8b   = max(a->rec8b,   b->rec8b);
1970         if (what & ATA_TIMING_CYC8B  ) m->cyc8b   = max(a->cyc8b,   b->cyc8b);
1971         if (what & ATA_TIMING_ACTIVE ) m->active  = max(a->active,  b->active);
1972         if (what & ATA_TIMING_RECOVER) m->recover = max(a->recover, b->recover);
1973         if (what & ATA_TIMING_CYCLE  ) m->cycle   = max(a->cycle,   b->cycle);
1974         if (what & ATA_TIMING_UDMA   ) m->udma    = max(a->udma,    b->udma);
1975 }
1976
1977 static const struct ata_timing* ata_timing_find_mode(unsigned short speed)
1978 {
1979         const struct ata_timing *t;
1980
1981         for (t = ata_timing; t->mode != speed; t++)
1982                 if (t->mode == 0xFF)
1983                         return NULL;
1984         return t;
1985 }
1986
1987 int ata_timing_compute(struct ata_device *adev, unsigned short speed,
1988                        struct ata_timing *t, int T, int UT)
1989 {
1990         const struct ata_timing *s;
1991         struct ata_timing p;
1992
1993         /*
1994          * Find the mode.
1995          */
1996
1997         if (!(s = ata_timing_find_mode(speed)))
1998                 return -EINVAL;
1999
2000         memcpy(t, s, sizeof(*s));
2001
2002         /*
2003          * If the drive is an EIDE drive, it can tell us it needs extended
2004          * PIO/MW_DMA cycle timing.
2005          */
2006
2007         if (adev->id[ATA_ID_FIELD_VALID] & 2) { /* EIDE drive */
2008                 memset(&p, 0, sizeof(p));
2009                 if(speed >= XFER_PIO_0 && speed <= XFER_SW_DMA_0) {
2010                         if (speed <= XFER_PIO_2) p.cycle = p.cyc8b = adev->id[ATA_ID_EIDE_PIO];
2011                                             else p.cycle = p.cyc8b = adev->id[ATA_ID_EIDE_PIO_IORDY];
2012                 } else if(speed >= XFER_MW_DMA_0 && speed <= XFER_MW_DMA_2) {
2013                         p.cycle = adev->id[ATA_ID_EIDE_DMA_MIN];
2014                 }
2015                 ata_timing_merge(&p, t, t, ATA_TIMING_CYCLE | ATA_TIMING_CYC8B);
2016         }
2017
2018         /*
2019          * Convert the timing to bus clock counts.
2020          */
2021
2022         ata_timing_quantize(t, t, T, UT);
2023
2024         /*
2025          * Even in DMA/UDMA modes we still use PIO access for IDENTIFY,
2026          * S.M.A.R.T * and some other commands. We have to ensure that the
2027          * DMA cycle timing is slower/equal than the fastest PIO timing.
2028          */
2029
2030         if (speed > XFER_PIO_4) {
2031                 ata_timing_compute(adev, adev->pio_mode, &p, T, UT);
2032                 ata_timing_merge(&p, t, t, ATA_TIMING_ALL);
2033         }
2034
2035         /*
2036          * Lengthen active & recovery time so that cycle time is correct.
2037          */
2038
2039         if (t->act8b + t->rec8b < t->cyc8b) {
2040                 t->act8b += (t->cyc8b - (t->act8b + t->rec8b)) / 2;
2041                 t->rec8b = t->cyc8b - t->act8b;
2042         }
2043
2044         if (t->active + t->recover < t->cycle) {
2045                 t->active += (t->cycle - (t->active + t->recover)) / 2;
2046                 t->recover = t->cycle - t->active;
2047         }
2048
2049         return 0;
2050 }
2051
2052 /**
2053  *      ata_down_xfermask_limit - adjust dev xfer masks downward
2054  *      @dev: Device to adjust xfer masks
2055  *      @force_pio0: Force PIO0
2056  *
2057  *      Adjust xfer masks of @dev downward.  Note that this function
2058  *      does not apply the change.  Invoking ata_set_mode() afterwards
2059  *      will apply the limit.
2060  *
2061  *      LOCKING:
2062  *      Inherited from caller.
2063  *
2064  *      RETURNS:
2065  *      0 on success, negative errno on failure
2066  */
2067 int ata_down_xfermask_limit(struct ata_device *dev, int force_pio0)
2068 {
2069         unsigned long xfer_mask;
2070         int highbit;
2071
2072         xfer_mask = ata_pack_xfermask(dev->pio_mask, dev->mwdma_mask,
2073                                       dev->udma_mask);
2074
2075         if (!xfer_mask)
2076                 goto fail;
2077         /* don't gear down to MWDMA from UDMA, go directly to PIO */
2078         if (xfer_mask & ATA_MASK_UDMA)
2079                 xfer_mask &= ~ATA_MASK_MWDMA;
2080
2081         highbit = fls(xfer_mask) - 1;
2082         xfer_mask &= ~(1 << highbit);
2083         if (force_pio0)
2084                 xfer_mask &= 1 << ATA_SHIFT_PIO;
2085         if (!xfer_mask)
2086                 goto fail;
2087
2088         ata_unpack_xfermask(xfer_mask, &dev->pio_mask, &dev->mwdma_mask,
2089                             &dev->udma_mask);
2090
2091         ata_dev_printk(dev, KERN_WARNING, "limiting speed to %s\n",
2092                        ata_mode_string(xfer_mask));
2093
2094         return 0;
2095
2096  fail:
2097         return -EINVAL;
2098 }
2099
2100 static int ata_dev_set_mode(struct ata_device *dev)
2101 {
2102         unsigned int err_mask;
2103         int rc;
2104
2105         dev->flags &= ~ATA_DFLAG_PIO;
2106         if (dev->xfer_shift == ATA_SHIFT_PIO)
2107                 dev->flags |= ATA_DFLAG_PIO;
2108
2109         err_mask = ata_dev_set_xfermode(dev);
2110         if (err_mask) {
2111                 ata_dev_printk(dev, KERN_ERR, "failed to set xfermode "
2112                                "(err_mask=0x%x)\n", err_mask);
2113                 return -EIO;
2114         }
2115
2116         rc = ata_dev_revalidate(dev, 0);
2117         if (rc)
2118                 return rc;
2119
2120         DPRINTK("xfer_shift=%u, xfer_mode=0x%x\n",
2121                 dev->xfer_shift, (int)dev->xfer_mode);
2122
2123         ata_dev_printk(dev, KERN_INFO, "configured for %s\n",
2124                        ata_mode_string(ata_xfer_mode2mask(dev->xfer_mode)));
2125         return 0;
2126 }
2127
2128 /**
2129  *      ata_set_mode - Program timings and issue SET FEATURES - XFER
2130  *      @ap: port on which timings will be programmed
2131  *      @r_failed_dev: out paramter for failed device
2132  *
2133  *      Set ATA device disk transfer mode (PIO3, UDMA6, etc.).  If
2134  *      ata_set_mode() fails, pointer to the failing device is
2135  *      returned in @r_failed_dev.
2136  *
2137  *      LOCKING:
2138  *      PCI/etc. bus probe sem.
2139  *
2140  *      RETURNS:
2141  *      0 on success, negative errno otherwise
2142  */
2143 int ata_set_mode(struct ata_port *ap, struct ata_device **r_failed_dev)
2144 {
2145         struct ata_device *dev;
2146         int i, rc = 0, used_dma = 0, found = 0;
2147
2148         /* has private set_mode? */
2149         if (ap->ops->set_mode) {
2150                 /* FIXME: make ->set_mode handle no device case and
2151                  * return error code and failing device on failure.
2152                  */
2153                 for (i = 0; i < ATA_MAX_DEVICES; i++) {
2154                         if (ata_dev_ready(&ap->device[i])) {
2155                                 ap->ops->set_mode(ap);
2156                                 break;
2157                         }
2158                 }
2159                 return 0;
2160         }
2161
2162         /* step 1: calculate xfer_mask */
2163         for (i = 0; i < ATA_MAX_DEVICES; i++) {
2164                 unsigned int pio_mask, dma_mask;
2165
2166                 dev = &ap->device[i];
2167
2168                 if (!ata_dev_enabled(dev))
2169                         continue;
2170
2171                 ata_dev_xfermask(dev);
2172
2173                 pio_mask = ata_pack_xfermask(dev->pio_mask, 0, 0);
2174                 dma_mask = ata_pack_xfermask(0, dev->mwdma_mask, dev->udma_mask);
2175                 dev->pio_mode = ata_xfer_mask2mode(pio_mask);
2176                 dev->dma_mode = ata_xfer_mask2mode(dma_mask);
2177
2178                 found = 1;
2179                 if (dev->dma_mode)
2180                         used_dma = 1;
2181         }
2182         if (!found)
2183                 goto out;
2184
2185         /* step 2: always set host PIO timings */
2186         for (i = 0; i < ATA_MAX_DEVICES; i++) {
2187                 dev = &ap->device[i];
2188                 if (!ata_dev_enabled(dev))
2189                         continue;
2190
2191                 if (!dev->pio_mode) {
2192                         ata_dev_printk(dev, KERN_WARNING, "no PIO support\n");
2193                         rc = -EINVAL;
2194                         goto out;
2195                 }
2196
2197                 dev->xfer_mode = dev->pio_mode;
2198                 dev->xfer_shift = ATA_SHIFT_PIO;
2199                 if (ap->ops->set_piomode)
2200                         ap->ops->set_piomode(ap, dev);
2201         }
2202
2203         /* step 3: set host DMA timings */
2204         for (i = 0; i < ATA_MAX_DEVICES; i++) {
2205                 dev = &ap->device[i];
2206
2207                 if (!ata_dev_enabled(dev) || !dev->dma_mode)
2208                         continue;
2209
2210                 dev->xfer_mode = dev->dma_mode;
2211                 dev->xfer_shift = ata_xfer_mode2shift(dev->dma_mode);
2212                 if (ap->ops->set_dmamode)
2213                         ap->ops->set_dmamode(ap, dev);
2214         }
2215
2216         /* step 4: update devices' xfer mode */
2217         for (i = 0; i < ATA_MAX_DEVICES; i++) {
2218                 dev = &ap->device[i];
2219
2220                 /* don't udpate suspended devices' xfer mode */
2221                 if (!ata_dev_ready(dev))
2222                         continue;
2223
2224                 rc = ata_dev_set_mode(dev);
2225                 if (rc)
2226                         goto out;
2227         }
2228
2229         /* Record simplex status. If we selected DMA then the other
2230          * host channels are not permitted to do so.
2231          */
2232         if (used_dma && (ap->host_set->flags & ATA_HOST_SIMPLEX))
2233                 ap->host_set->simplex_claimed = 1;
2234
2235         /* step5: chip specific finalisation */
2236         if (ap->ops->post_set_mode)
2237                 ap->ops->post_set_mode(ap);
2238
2239  out:
2240         if (rc)
2241                 *r_failed_dev = dev;
2242         return rc;
2243 }
2244
2245 /**
2246  *      ata_tf_to_host - issue ATA taskfile to host controller
2247  *      @ap: port to which command is being issued
2248  *      @tf: ATA taskfile register set
2249  *
2250  *      Issues ATA taskfile register set to ATA host controller,
2251  *      with proper synchronization with interrupt handler and
2252  *      other threads.
2253  *
2254  *      LOCKING:
2255  *      spin_lock_irqsave(host_set lock)
2256  */
2257
2258 static inline void ata_tf_to_host(struct ata_port *ap,
2259                                   const struct ata_taskfile *tf)
2260 {
2261         ap->ops->tf_load(ap, tf);
2262         ap->ops->exec_command(ap, tf);
2263 }
2264
2265 /**
2266  *      ata_busy_sleep - sleep until BSY clears, or timeout
2267  *      @ap: port containing status register to be polled
2268  *      @tmout_pat: impatience timeout
2269  *      @tmout: overall timeout
2270  *
2271  *      Sleep until ATA Status register bit BSY clears,
2272  *      or a timeout occurs.
2273  *
2274  *      LOCKING: None.
2275  */
2276
2277 unsigned int ata_busy_sleep (struct ata_port *ap,
2278                              unsigned long tmout_pat, unsigned long tmout)
2279 {
2280         unsigned long timer_start, timeout;
2281         u8 status;
2282
2283         status = ata_busy_wait(ap, ATA_BUSY, 300);
2284         timer_start = jiffies;
2285         timeout = timer_start + tmout_pat;
2286         while ((status & ATA_BUSY) && (time_before(jiffies, timeout))) {
2287                 msleep(50);
2288                 status = ata_busy_wait(ap, ATA_BUSY, 3);
2289         }
2290
2291         if (status & ATA_BUSY)
2292                 ata_port_printk(ap, KERN_WARNING,
2293                                 "port is slow to respond, please be patient\n");
2294
2295         timeout = timer_start + tmout;
2296         while ((status & ATA_BUSY) && (time_before(jiffies, timeout))) {
2297                 msleep(50);
2298                 status = ata_chk_status(ap);
2299         }
2300
2301         if (status & ATA_BUSY) {
2302                 ata_port_printk(ap, KERN_ERR, "port failed to respond "
2303                                 "(%lu secs)\n", tmout / HZ);
2304                 return 1;
2305         }
2306
2307         return 0;
2308 }
2309
2310 static void ata_bus_post_reset(struct ata_port *ap, unsigned int devmask)
2311 {
2312         struct ata_ioports *ioaddr = &ap->ioaddr;
2313         unsigned int dev0 = devmask & (1 << 0);
2314         unsigned int dev1 = devmask & (1 << 1);
2315         unsigned long timeout;
2316
2317         /* if device 0 was found in ata_devchk, wait for its
2318          * BSY bit to clear
2319          */
2320         if (dev0)
2321                 ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT);
2322
2323         /* if device 1 was found in ata_devchk, wait for
2324          * register access, then wait for BSY to clear
2325          */
2326         timeout = jiffies + ATA_TMOUT_BOOT;
2327         while (dev1) {
2328                 u8 nsect, lbal;
2329
2330                 ap->ops->dev_select(ap, 1);
2331                 if (ap->flags & ATA_FLAG_MMIO) {
2332                         nsect = readb((void __iomem *) ioaddr->nsect_addr);
2333                         lbal = readb((void __iomem *) ioaddr->lbal_addr);
2334                 } else {
2335                         nsect = inb(ioaddr->nsect_addr);
2336                         lbal = inb(ioaddr->lbal_addr);
2337                 }
2338                 if ((nsect == 1) && (lbal == 1))
2339                         break;
2340                 if (time_after(jiffies, timeout)) {
2341                         dev1 = 0;
2342                         break;
2343                 }
2344                 msleep(50);     /* give drive a breather */
2345         }
2346         if (dev1)
2347                 ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT);
2348
2349         /* is all this really necessary? */
2350         ap->ops->dev_select(ap, 0);
2351         if (dev1)
2352                 ap->ops->dev_select(ap, 1);
2353         if (dev0)
2354                 ap->ops->dev_select(ap, 0);
2355 }
2356
2357 static unsigned int ata_bus_softreset(struct ata_port *ap,
2358                                       unsigned int devmask)
2359 {
2360         struct ata_ioports *ioaddr = &ap->ioaddr;
2361
2362         DPRINTK("ata%u: bus reset via SRST\n", ap->id);
2363
2364         /* software reset.  causes dev0 to be selected */
2365         if (ap->flags & ATA_FLAG_MMIO) {
2366                 writeb(ap->ctl, (void __iomem *) ioaddr->ctl_addr);
2367                 udelay(20);     /* FIXME: flush */
2368                 writeb(ap->ctl | ATA_SRST, (void __iomem *) ioaddr->ctl_addr);
2369                 udelay(20);     /* FIXME: flush */
2370                 writeb(ap->ctl, (void __iomem *) ioaddr->ctl_addr);
2371         } else {
2372                 outb(ap->ctl, ioaddr->ctl_addr);
2373                 udelay(10);
2374                 outb(ap->ctl | ATA_SRST, ioaddr->ctl_addr);
2375                 udelay(10);
2376                 outb(ap->ctl, ioaddr->ctl_addr);
2377         }
2378
2379         /* spec mandates ">= 2ms" before checking status.
2380          * We wait 150ms, because that was the magic delay used for
2381          * ATAPI devices in Hale Landis's ATADRVR, for the period of time
2382          * between when the ATA command register is written, and then
2383          * status is checked.  Because waiting for "a while" before
2384          * checking status is fine, post SRST, we perform this magic
2385          * delay here as well.
2386          *
2387          * Old drivers/ide uses the 2mS rule and then waits for ready
2388          */
2389         msleep(150);
2390
2391         /* Before we perform post reset processing we want to see if
2392          * the bus shows 0xFF because the odd clown forgets the D7
2393          * pulldown resistor.
2394          */
2395         if (ata_check_status(ap) == 0xFF) {
2396                 ata_port_printk(ap, KERN_ERR, "SRST failed (status 0xFF)\n");
2397                 return AC_ERR_OTHER;
2398         }
2399
2400         ata_bus_post_reset(ap, devmask);
2401
2402         return 0;
2403 }
2404
2405 /**
2406  *      ata_bus_reset - reset host port and associated ATA channel
2407  *      @ap: port to reset
2408  *
2409  *      This is typically the first time we actually start issuing
2410  *      commands to the ATA channel.  We wait for BSY to clear, then
2411  *      issue EXECUTE DEVICE DIAGNOSTIC command, polling for its
2412  *      result.  Determine what devices, if any, are on the channel
2413  *      by looking at the device 0/1 error register.  Look at the signature
2414  *      stored in each device's taskfile registers, to determine if
2415  *      the device is ATA or ATAPI.
2416  *
2417  *      LOCKING:
2418  *      PCI/etc. bus probe sem.
2419  *      Obtains host_set lock.
2420  *
2421  *      SIDE EFFECTS:
2422  *      Sets ATA_FLAG_DISABLED if bus reset fails.
2423  */
2424
2425 void ata_bus_reset(struct ata_port *ap)
2426 {
2427         struct ata_ioports *ioaddr = &ap->ioaddr;
2428         unsigned int slave_possible = ap->flags & ATA_FLAG_SLAVE_POSS;
2429         u8 err;
2430         unsigned int dev0, dev1 = 0, devmask = 0;
2431
2432         DPRINTK("ENTER, host %u, port %u\n", ap->id, ap->port_no);
2433
2434         /* determine if device 0/1 are present */
2435         if (ap->flags & ATA_FLAG_SATA_RESET)
2436                 dev0 = 1;
2437         else {
2438                 dev0 = ata_devchk(ap, 0);
2439                 if (slave_possible)
2440                         dev1 = ata_devchk(ap, 1);
2441         }
2442
2443         if (dev0)
2444                 devmask |= (1 << 0);
2445         if (dev1)
2446                 devmask |= (1 << 1);
2447
2448         /* select device 0 again */
2449         ap->ops->dev_select(ap, 0);
2450
2451         /* issue bus reset */
2452         if (ap->flags & ATA_FLAG_SRST)
2453                 if (ata_bus_softreset(ap, devmask))
2454                         goto err_out;
2455
2456         /*
2457          * determine by signature whether we have ATA or ATAPI devices
2458          */
2459         ap->device[0].class = ata_dev_try_classify(ap, 0, &err);
2460         if ((slave_possible) && (err != 0x81))
2461                 ap->device[1].class = ata_dev_try_classify(ap, 1, &err);
2462
2463         /* re-enable interrupts */
2464         if (ap->ioaddr.ctl_addr)        /* FIXME: hack. create a hook instead */
2465                 ata_irq_on(ap);
2466
2467         /* is double-select really necessary? */
2468         if (ap->device[1].class != ATA_DEV_NONE)
2469                 ap->ops->dev_select(ap, 1);
2470         if (ap->device[0].class != ATA_DEV_NONE)
2471                 ap->ops->dev_select(ap, 0);
2472
2473         /* if no devices were detected, disable this port */
2474         if ((ap->device[0].class == ATA_DEV_NONE) &&
2475             (ap->device[1].class == ATA_DEV_NONE))
2476                 goto err_out;
2477
2478         if (ap->flags & (ATA_FLAG_SATA_RESET | ATA_FLAG_SRST)) {
2479                 /* set up device control for ATA_FLAG_SATA_RESET */
2480                 if (ap->flags & ATA_FLAG_MMIO)
2481                         writeb(ap->ctl, (void __iomem *) ioaddr->ctl_addr);
2482                 else
2483                         outb(ap->ctl, ioaddr->ctl_addr);
2484         }
2485
2486         DPRINTK("EXIT\n");
2487         return;
2488
2489 err_out:
2490         ata_port_printk(ap, KERN_ERR, "disabling port\n");
2491         ap->ops->port_disable(ap);
2492
2493         DPRINTK("EXIT\n");
2494 }
2495
2496 /**
2497  *      sata_phy_debounce - debounce SATA phy status
2498  *      @ap: ATA port to debounce SATA phy status for
2499  *      @params: timing parameters { interval, duratinon, timeout } in msec
2500  *
2501  *      Make sure SStatus of @ap reaches stable state, determined by
2502  *      holding the same value where DET is not 1 for @duration polled
2503  *      every @interval, before @timeout.  Timeout constraints the
2504  *      beginning of the stable state.  Because, after hot unplugging,
2505  *      DET gets stuck at 1 on some controllers, this functions waits
2506  *      until timeout then returns 0 if DET is stable at 1.
2507  *
2508  *      LOCKING:
2509  *      Kernel thread context (may sleep)
2510  *
2511  *      RETURNS:
2512  *      0 on success, -errno on failure.
2513  */
2514 int sata_phy_debounce(struct ata_port *ap, const unsigned long *params)
2515 {
2516         unsigned long interval_msec = params[0];
2517         unsigned long duration = params[1] * HZ / 1000;
2518         unsigned long timeout = jiffies + params[2] * HZ / 1000;
2519         unsigned long last_jiffies;
2520         u32 last, cur;
2521         int rc;
2522
2523         if ((rc = sata_scr_read(ap, SCR_STATUS, &cur)))
2524                 return rc;
2525         cur &= 0xf;
2526
2527         last = cur;
2528         last_jiffies = jiffies;
2529
2530         while (1) {
2531                 msleep(interval_msec);
2532                 if ((rc = sata_scr_read(ap, SCR_STATUS, &cur)))
2533                         return rc;
2534                 cur &= 0xf;
2535
2536                 /* DET stable? */
2537                 if (cur == last) {
2538                         if (cur == 1 && time_before(jiffies, timeout))
2539                                 continue;
2540                         if (time_after(jiffies, last_jiffies + duration))
2541                                 return 0;
2542                         continue;
2543                 }
2544
2545                 /* unstable, start over */
2546                 last = cur;
2547                 last_jiffies = jiffies;
2548
2549                 /* check timeout */
2550                 if (time_after(jiffies, timeout))
2551                         return -EBUSY;
2552         }
2553 }
2554
2555 /**
2556  *      sata_phy_resume - resume SATA phy
2557  *      @ap: ATA port to resume SATA phy for
2558  *      @params: timing parameters { interval, duratinon, timeout } in msec
2559  *
2560  *      Resume SATA phy of @ap and debounce it.
2561  *
2562  *      LOCKING:
2563  *      Kernel thread context (may sleep)
2564  *
2565  *      RETURNS:
2566  *      0 on success, -errno on failure.
2567  */
2568 int sata_phy_resume(struct ata_port *ap, const unsigned long *params)
2569 {
2570         u32 scontrol;
2571         int rc;
2572
2573         if ((rc = sata_scr_read(ap, SCR_CONTROL, &scontrol)))
2574                 return rc;
2575
2576         scontrol = (scontrol & 0x0f0) | 0x300;
2577
2578         if ((rc = sata_scr_write(ap, SCR_CONTROL, scontrol)))
2579                 return rc;
2580
2581         /* Some PHYs react badly if SStatus is pounded immediately
2582          * after resuming.  Delay 200ms before debouncing.
2583          */
2584         msleep(200);
2585
2586         return sata_phy_debounce(ap, params);
2587 }
2588
2589 static void ata_wait_spinup(struct ata_port *ap)
2590 {
2591         struct ata_eh_context *ehc = &ap->eh_context;
2592         unsigned long end, secs;
2593         int rc;
2594
2595         /* first, debounce phy if SATA */
2596         if (ap->cbl == ATA_CBL_SATA) {
2597                 rc = sata_phy_debounce(ap, sata_deb_timing_hotplug);
2598
2599                 /* if debounced successfully and offline, no need to wait */
2600                 if ((rc == 0 || rc == -EOPNOTSUPP) && ata_port_offline(ap))
2601                         return;
2602         }
2603
2604         /* okay, let's give the drive time to spin up */
2605         end = ehc->i.hotplug_timestamp + ATA_SPINUP_WAIT * HZ / 1000;
2606         secs = ((end - jiffies) + HZ - 1) / HZ;
2607
2608         if (time_after(jiffies, end))
2609                 return;
2610
2611         if (secs > 5)
2612                 ata_port_printk(ap, KERN_INFO, "waiting for device to spin up "
2613                                 "(%lu secs)\n", secs);
2614
2615         schedule_timeout_uninterruptible(end - jiffies);
2616 }
2617
2618 /**
2619  *      ata_std_prereset - prepare for reset
2620  *      @ap: ATA port to be reset
2621  *
2622  *      @ap is about to be reset.  Initialize it.
2623  *
2624  *      LOCKING:
2625  *      Kernel thread context (may sleep)
2626  *
2627  *      RETURNS:
2628  *      0 on success, -errno otherwise.
2629  */
2630 int ata_std_prereset(struct ata_port *ap)
2631 {
2632         struct ata_eh_context *ehc = &ap->eh_context;
2633         const unsigned long *timing = sata_ehc_deb_timing(ehc);
2634         int rc;
2635
2636         /* handle link resume & hotplug spinup */
2637         if ((ehc->i.flags & ATA_EHI_RESUME_LINK) &&
2638             (ap->flags & ATA_FLAG_HRST_TO_RESUME))
2639                 ehc->i.action |= ATA_EH_HARDRESET;
2640
2641         if ((ehc->i.flags & ATA_EHI_HOTPLUGGED) &&
2642             (ap->flags & ATA_FLAG_SKIP_D2H_BSY))
2643                 ata_wait_spinup(ap);
2644
2645         /* if we're about to do hardreset, nothing more to do */
2646         if (ehc->i.action & ATA_EH_HARDRESET)
2647                 return 0;
2648
2649         /* if SATA, resume phy */
2650         if (ap->cbl == ATA_CBL_SATA) {
2651                 rc = sata_phy_resume(ap, timing);
2652                 if (rc && rc != -EOPNOTSUPP) {
2653                         /* phy resume failed */
2654                         ata_port_printk(ap, KERN_WARNING, "failed to resume "
2655                                         "link for reset (errno=%d)\n", rc);
2656                         return rc;
2657                 }
2658         }
2659
2660         /* Wait for !BSY if the controller can wait for the first D2H
2661          * Reg FIS and we don't know that no device is attached.
2662          */
2663         if (!(ap->flags & ATA_FLAG_SKIP_D2H_BSY) && !ata_port_offline(ap))
2664                 ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT);
2665
2666         return 0;
2667 }
2668
2669 /**
2670  *      ata_std_softreset - reset host port via ATA SRST
2671  *      @ap: port to reset
2672  *      @classes: resulting classes of attached devices
2673  *
2674  *      Reset host port using ATA SRST.
2675  *
2676  *      LOCKING:
2677  *      Kernel thread context (may sleep)
2678  *
2679  *      RETURNS:
2680  *      0 on success, -errno otherwise.
2681  */
2682 int ata_std_softreset(struct ata_port *ap, unsigned int *classes)
2683 {
2684         unsigned int slave_possible = ap->flags & ATA_FLAG_SLAVE_POSS;
2685         unsigned int devmask = 0, err_mask;
2686         u8 err;
2687
2688         DPRINTK("ENTER\n");
2689
2690         if (ata_port_offline(ap)) {
2691                 classes[0] = ATA_DEV_NONE;
2692                 goto out;
2693         }
2694
2695         /* determine if device 0/1 are present */
2696         if (ata_devchk(ap, 0))
2697                 devmask |= (1 << 0);
2698         if (slave_possible && ata_devchk(ap, 1))
2699                 devmask |= (1 << 1);
2700
2701         /* select device 0 again */
2702         ap->ops->dev_select(ap, 0);
2703
2704         /* issue bus reset */
2705         DPRINTK("about to softreset, devmask=%x\n", devmask);
2706         err_mask = ata_bus_softreset(ap, devmask);
2707         if (err_mask) {
2708                 ata_port_printk(ap, KERN_ERR, "SRST failed (err_mask=0x%x)\n",
2709                                 err_mask);
2710                 return -EIO;
2711         }
2712
2713         /* determine by signature whether we have ATA or ATAPI devices */
2714         classes[0] = ata_dev_try_classify(ap, 0, &err);
2715         if (slave_possible && err != 0x81)
2716                 classes[1] = ata_dev_try_classify(ap, 1, &err);
2717
2718  out:
2719         DPRINTK("EXIT, classes[0]=%u [1]=%u\n", classes[0], classes[1]);
2720         return 0;
2721 }
2722
2723 /**
2724  *      sata_std_hardreset - reset host port via SATA phy reset
2725  *      @ap: port to reset
2726  *      @class: resulting class of attached device
2727  *
2728  *      SATA phy-reset host port using DET bits of SControl register.
2729  *
2730  *      LOCKING:
2731  *      Kernel thread context (may sleep)
2732  *
2733  *      RETURNS:
2734  *      0 on success, -errno otherwise.
2735  */
2736 int sata_std_hardreset(struct ata_port *ap, unsigned int *class)
2737 {
2738         struct ata_eh_context *ehc = &ap->eh_context;
2739         const unsigned long *timing = sata_ehc_deb_timing(ehc);
2740         u32 scontrol;
2741         int rc;
2742
2743         DPRINTK("ENTER\n");
2744
2745         if (sata_set_spd_needed(ap)) {
2746                 /* SATA spec says nothing about how to reconfigure
2747                  * spd.  To be on the safe side, turn off phy during
2748                  * reconfiguration.  This works for at least ICH7 AHCI
2749                  * and Sil3124.
2750                  */
2751                 if ((rc = sata_scr_read(ap, SCR_CONTROL, &scontrol)))
2752                         return rc;
2753
2754                 scontrol = (scontrol & 0x0f0) | 0x304;
2755
2756                 if ((rc = sata_scr_write(ap, SCR_CONTROL, scontrol)))
2757                         return rc;
2758
2759                 sata_set_spd(ap);
2760         }
2761
2762         /* issue phy wake/reset */
2763         if ((rc = sata_scr_read(ap, SCR_CONTROL, &scontrol)))
2764                 return rc;
2765
2766         scontrol = (scontrol & 0x0f0) | 0x301;
2767
2768         if ((rc = sata_scr_write_flush(ap, SCR_CONTROL, scontrol)))
2769                 return rc;
2770
2771         /* Couldn't find anything in SATA I/II specs, but AHCI-1.1
2772          * 10.4.2 says at least 1 ms.
2773          */
2774         msleep(1);
2775
2776         /* bring phy back */
2777         sata_phy_resume(ap, timing);
2778
2779         /* TODO: phy layer with polling, timeouts, etc. */
2780         if (ata_port_offline(ap)) {
2781                 *class = ATA_DEV_NONE;
2782                 DPRINTK("EXIT, link offline\n");
2783                 return 0;
2784         }
2785
2786         if (ata_busy_sleep(ap, ATA_TMOUT_BOOT_QUICK, ATA_TMOUT_BOOT)) {
2787                 ata_port_printk(ap, KERN_ERR,
2788                                 "COMRESET failed (device not ready)\n");
2789                 return -EIO;
2790         }
2791
2792         ap->ops->dev_select(ap, 0);     /* probably unnecessary */
2793
2794         *class = ata_dev_try_classify(ap, 0, NULL);
2795
2796         DPRINTK("EXIT, class=%u\n", *class);
2797         return 0;
2798 }
2799
2800 /**
2801  *      ata_std_postreset - standard postreset callback
2802  *      @ap: the target ata_port
2803  *      @classes: classes of attached devices
2804  *
2805  *      This function is invoked after a successful reset.  Note that
2806  *      the device might have been reset more than once using
2807  *      different reset methods before postreset is invoked.
2808  *
2809  *      LOCKING:
2810  *      Kernel thread context (may sleep)
2811  */
2812 void ata_std_postreset(struct ata_port *ap, unsigned int *classes)
2813 {
2814         u32 serror;
2815
2816         DPRINTK("ENTER\n");
2817
2818         /* print link status */
2819         sata_print_link_status(ap);
2820
2821         /* clear SError */
2822         if (sata_scr_read(ap, SCR_ERROR, &serror) == 0)
2823                 sata_scr_write(ap, SCR_ERROR, serror);
2824
2825         /* re-enable interrupts */
2826         if (!ap->ops->error_handler) {
2827                 /* FIXME: hack. create a hook instead */
2828                 if (ap->ioaddr.ctl_addr)
2829                         ata_irq_on(ap);
2830         }
2831
2832         /* is double-select really necessary? */
2833         if (classes[0] != ATA_DEV_NONE)
2834                 ap->ops->dev_select(ap, 1);
2835         if (classes[1] != ATA_DEV_NONE)
2836                 ap->ops->dev_select(ap, 0);
2837
2838         /* bail out if no device is present */
2839         if (classes[0] == ATA_DEV_NONE && classes[1] == ATA_DEV_NONE) {
2840                 DPRINTK("EXIT, no device\n");
2841                 return;
2842         }
2843
2844         /* set up device control */
2845         if (ap->ioaddr.ctl_addr) {
2846                 if (ap->flags & ATA_FLAG_MMIO)
2847                         writeb(ap->ctl, (void __iomem *) ap->ioaddr.ctl_addr);
2848                 else
2849                         outb(ap->ctl, ap->ioaddr.ctl_addr);
2850         }
2851
2852         DPRINTK("EXIT\n");
2853 }
2854
2855 /**
2856  *      ata_dev_same_device - Determine whether new ID matches configured device
2857  *      @dev: device to compare against
2858  *      @new_class: class of the new device
2859  *      @new_id: IDENTIFY page of the new device
2860  *
2861  *      Compare @new_class and @new_id against @dev and determine
2862  *      whether @dev is the device indicated by @new_class and
2863  *      @new_id.
2864  *
2865  *      LOCKING:
2866  *      None.
2867  *
2868  *      RETURNS:
2869  *      1 if @dev matches @new_class and @new_id, 0 otherwise.
2870  */
2871 static int ata_dev_same_device(struct ata_device *dev, unsigned int new_class,
2872                                const u16 *new_id)
2873 {
2874         const u16 *old_id = dev->id;
2875         unsigned char model[2][41], serial[2][21];
2876         u64 new_n_sectors;
2877
2878         if (dev->class != new_class) {
2879                 ata_dev_printk(dev, KERN_INFO, "class mismatch %d != %d\n",
2880                                dev->class, new_class);
2881                 return 0;
2882         }
2883
2884         ata_id_c_string(old_id, model[0], ATA_ID_PROD_OFS, sizeof(model[0]));
2885         ata_id_c_string(new_id, model[1], ATA_ID_PROD_OFS, sizeof(model[1]));
2886         ata_id_c_string(old_id, serial[0], ATA_ID_SERNO_OFS, sizeof(serial[0]));
2887         ata_id_c_string(new_id, serial[1], ATA_ID_SERNO_OFS, sizeof(serial[1]));
2888         new_n_sectors = ata_id_n_sectors(new_id);
2889
2890         if (strcmp(model[0], model[1])) {
2891                 ata_dev_printk(dev, KERN_INFO, "model number mismatch "
2892                                "'%s' != '%s'\n", model[0], model[1]);
2893                 return 0;
2894         }
2895
2896         if (strcmp(serial[0], serial[1])) {
2897                 ata_dev_printk(dev, KERN_INFO, "serial number mismatch "
2898                                "'%s' != '%s'\n", serial[0], serial[1]);
2899                 return 0;
2900         }
2901
2902         if (dev->class == ATA_DEV_ATA && dev->n_sectors != new_n_sectors) {
2903                 ata_dev_printk(dev, KERN_INFO, "n_sectors mismatch "
2904                                "%llu != %llu\n",
2905                                (unsigned long long)dev->n_sectors,
2906                                (unsigned long long)new_n_sectors);
2907                 return 0;
2908         }
2909
2910         return 1;
2911 }
2912
2913 /**
2914  *      ata_dev_revalidate - Revalidate ATA device
2915  *      @dev: device to revalidate
2916  *      @post_reset: is this revalidation after reset?
2917  *
2918  *      Re-read IDENTIFY page and make sure @dev is still attached to
2919  *      the port.
2920  *
2921  *      LOCKING:
2922  *      Kernel thread context (may sleep)
2923  *
2924  *      RETURNS:
2925  *      0 on success, negative errno otherwise
2926  */
2927 int ata_dev_revalidate(struct ata_device *dev, int post_reset)
2928 {
2929         unsigned int class = dev->class;
2930         u16 *id = (void *)dev->ap->sector_buf;
2931         int rc;
2932
2933         if (!ata_dev_enabled(dev)) {
2934                 rc = -ENODEV;
2935                 goto fail;
2936         }
2937
2938         /* read ID data */
2939         rc = ata_dev_read_id(dev, &class, post_reset, id);
2940         if (rc)
2941                 goto fail;
2942
2943         /* is the device still there? */
2944         if (!ata_dev_same_device(dev, class, id)) {
2945                 rc = -ENODEV;
2946                 goto fail;
2947         }
2948
2949         memcpy(dev->id, id, sizeof(id[0]) * ATA_ID_WORDS);
2950
2951         /* configure device according to the new ID */
2952         rc = ata_dev_configure(dev, 0);
2953         if (rc == 0)
2954                 return 0;
2955
2956  fail:
2957         ata_dev_printk(dev, KERN_ERR, "revalidation failed (errno=%d)\n", rc);
2958         return rc;
2959 }
2960
2961 static const char * const ata_dma_blacklist [] = {
2962         "WDC AC11000H", NULL,
2963         "WDC AC22100H", NULL,
2964         "WDC AC32500H", NULL,
2965         "WDC AC33100H", NULL,
2966         "WDC AC31600H", NULL,
2967         "WDC AC32100H", "24.09P07",
2968         "WDC AC23200L", "21.10N21",
2969         "Compaq CRD-8241B",  NULL,
2970         "CRD-8400B", NULL,
2971         "CRD-8480B", NULL,
2972         "CRD-8482B", NULL,
2973         "CRD-84", NULL,
2974         "SanDisk SDP3B", NULL,
2975         "SanDisk SDP3B-64", NULL,
2976         "SANYO CD-ROM CRD", NULL,
2977         "HITACHI CDR-8", NULL,
2978         "HITACHI CDR-8335", NULL,
2979         "HITACHI CDR-8435", NULL,
2980         "Toshiba CD-ROM XM-6202B", NULL,
2981         "TOSHIBA CD-ROM XM-1702BC", NULL,
2982         "CD-532E-A", NULL,
2983         "E-IDE CD-ROM CR-840", NULL,
2984         "CD-ROM Drive/F5A", NULL,
2985         "WPI CDD-820", NULL,
2986         "SAMSUNG CD-ROM SC-148C", NULL,
2987         "SAMSUNG CD-ROM SC", NULL,
2988         "SanDisk SDP3B-64", NULL,
2989         "ATAPI CD-ROM DRIVE 40X MAXIMUM",NULL,
2990         "_NEC DV5800A", NULL,
2991         "SAMSUNG CD-ROM SN-124", "N001"
2992 };
2993
2994 static int ata_strim(char *s, size_t len)
2995 {
2996         len = strnlen(s, len);
2997
2998         /* ATAPI specifies that empty space is blank-filled; remove blanks */
2999         while ((len > 0) && (s[len - 1] == ' ')) {
3000                 len--;
3001                 s[len] = 0;
3002         }
3003         return len;
3004 }
3005
3006 static int ata_dma_blacklisted(const struct ata_device *dev)
3007 {
3008         unsigned char model_num[40];
3009         unsigned char model_rev[16];
3010         unsigned int nlen, rlen;
3011         int i;
3012
3013         /* We don't support polling DMA.
3014          * DMA blacklist those ATAPI devices with CDB-intr (and use PIO)
3015          * if the LLDD handles only interrupts in the HSM_ST_LAST state.
3016          */
3017         if ((dev->ap->flags & ATA_FLAG_PIO_POLLING) &&
3018             (dev->flags & ATA_DFLAG_CDB_INTR))
3019                 return 1;
3020
3021         ata_id_string(dev->id, model_num, ATA_ID_PROD_OFS,
3022                           sizeof(model_num));
3023         ata_id_string(dev->id, model_rev, ATA_ID_FW_REV_OFS,
3024                           sizeof(model_rev));
3025         nlen = ata_strim(model_num, sizeof(model_num));
3026         rlen = ata_strim(model_rev, sizeof(model_rev));
3027
3028         for (i = 0; i < ARRAY_SIZE(ata_dma_blacklist); i += 2) {
3029                 if (!strncmp(ata_dma_blacklist[i], model_num, nlen)) {
3030                         if (ata_dma_blacklist[i+1] == NULL)
3031                                 return 1;
3032                         if (!strncmp(ata_dma_blacklist[i], model_rev, rlen))
3033                                 return 1;
3034                 }
3035         }
3036         return 0;
3037 }
3038
3039 /**
3040  *      ata_dev_xfermask - Compute supported xfermask of the given device
3041  *      @dev: Device to compute xfermask for
3042  *
3043  *      Compute supported xfermask of @dev and store it in
3044  *      dev->*_mask.  This function is responsible for applying all
3045  *      known limits including host controller limits, device
3046  *      blacklist, etc...
3047  *
3048  *      FIXME: The current implementation limits all transfer modes to
3049  *      the fastest of the lowested device on the port.  This is not
3050  *      required on most controllers.
3051  *
3052  *      LOCKING:
3053  *      None.
3054  */
3055 static void ata_dev_xfermask(struct ata_device *dev)
3056 {
3057         struct ata_port *ap = dev->ap;
3058         struct ata_host_set *hs = ap->host_set;
3059         unsigned long xfer_mask;
3060         int i;
3061
3062         xfer_mask = ata_pack_xfermask(ap->pio_mask,
3063                                       ap->mwdma_mask, ap->udma_mask);
3064
3065         /* Apply cable rule here.  Don't apply it early because when
3066          * we handle hot plug the cable type can itself change.
3067          */
3068         if (ap->cbl == ATA_CBL_PATA40)
3069                 xfer_mask &= ~(0xF8 << ATA_SHIFT_UDMA);
3070
3071         /* FIXME: Use port-wide xfermask for now */
3072         for (i = 0; i < ATA_MAX_DEVICES; i++) {
3073                 struct ata_device *d = &ap->device[i];
3074
3075                 if (ata_dev_absent(d))
3076                         continue;
3077
3078                 if (ata_dev_disabled(d)) {
3079                         /* to avoid violating device selection timing */
3080                         xfer_mask &= ata_pack_xfermask(d->pio_mask,
3081                                                        UINT_MAX, UINT_MAX);
3082                         continue;
3083                 }
3084
3085                 xfer_mask &= ata_pack_xfermask(d->pio_mask,
3086                                                d->mwdma_mask, d->udma_mask);
3087                 xfer_mask &= ata_id_xfermask(d->id);
3088                 if (ata_dma_blacklisted(d))
3089                         xfer_mask &= ~(ATA_MASK_MWDMA | ATA_MASK_UDMA);
3090         }
3091
3092         if (ata_dma_blacklisted(dev))
3093                 ata_dev_printk(dev, KERN_WARNING,
3094                                "device is on DMA blacklist, disabling DMA\n");
3095
3096         if (hs->flags & ATA_HOST_SIMPLEX) {
3097                 if (hs->simplex_claimed)
3098                         xfer_mask &= ~(ATA_MASK_MWDMA | ATA_MASK_UDMA);
3099         }
3100
3101         if (ap->ops->mode_filter)
3102                 xfer_mask = ap->ops->mode_filter(ap, dev, xfer_mask);
3103
3104         ata_unpack_xfermask(xfer_mask, &dev->pio_mask,
3105                             &dev->mwdma_mask, &dev->udma_mask);
3106 }
3107
3108 /**
3109  *      ata_dev_set_xfermode - Issue SET FEATURES - XFER MODE command
3110  *      @dev: Device to which command will be sent
3111  *
3112  *      Issue SET FEATURES - XFER MODE command to device @dev
3113  *      on port @ap.
3114  *
3115  *      LOCKING:
3116  *      PCI/etc. bus probe sem.
3117  *
3118  *      RETURNS:
3119  *      0 on success, AC_ERR_* mask otherwise.
3120  */
3121
3122 static unsigned int ata_dev_set_xfermode(struct ata_device *dev)
3123 {
3124         struct ata_taskfile tf;
3125         unsigned int err_mask;
3126
3127         /* set up set-features taskfile */
3128         DPRINTK("set features - xfer mode\n");
3129
3130         ata_tf_init(dev, &tf);
3131         tf.command = ATA_CMD_SET_FEATURES;
3132         tf.feature = SETFEATURES_XFER;
3133         tf.flags |= ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE;
3134         tf.protocol = ATA_PROT_NODATA;
3135         tf.nsect = dev->xfer_mode;
3136
3137         err_mask = ata_exec_internal(dev, &tf, NULL, DMA_NONE, NULL, 0);
3138
3139         DPRINTK("EXIT, err_mask=%x\n", err_mask);
3140         return err_mask;
3141 }
3142
3143 /**
3144  *      ata_dev_init_params - Issue INIT DEV PARAMS command
3145  *      @dev: Device to which command will be sent
3146  *      @heads: Number of heads (taskfile parameter)
3147  *      @sectors: Number of sectors (taskfile parameter)
3148  *
3149  *      LOCKING:
3150  *      Kernel thread context (may sleep)
3151  *
3152  *      RETURNS:
3153  *      0 on success, AC_ERR_* mask otherwise.
3154  */
3155 static unsigned int ata_dev_init_params(struct ata_device *dev,
3156                                         u16 heads, u16 sectors)
3157 {
3158         struct ata_taskfile tf;
3159         unsigned int err_mask;
3160
3161         /* Number of sectors per track 1-255. Number of heads 1-16 */
3162         if (sectors < 1 || sectors > 255 || heads < 1 || heads > 16)
3163                 return AC_ERR_INVALID;
3164
3165         /* set up init dev params taskfile */
3166         DPRINTK("init dev params \n");
3167
3168         ata_tf_init(dev, &tf);
3169         tf.command = ATA_CMD_INIT_DEV_PARAMS;
3170         tf.flags |= ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE;
3171         tf.protocol = ATA_PROT_NODATA;
3172         tf.nsect = sectors;
3173         tf.device |= (heads - 1) & 0x0f; /* max head = num. of heads - 1 */
3174
3175         err_mask = ata_exec_internal(dev, &tf, NULL, DMA_NONE, NULL, 0);
3176
3177         DPRINTK("EXIT, err_mask=%x\n", err_mask);
3178         return err_mask;
3179 }
3180
3181 /**
3182  *      ata_sg_clean - Unmap DMA memory associated with command
3183  *      @qc: Command containing DMA memory to be released
3184  *
3185  *      Unmap all mapped DMA memory associated with this command.
3186  *
3187  *      LOCKING:
3188  *      spin_lock_irqsave(host_set lock)
3189  */
3190
3191 static void ata_sg_clean(struct ata_queued_cmd *qc)
3192 {
3193         struct ata_port *ap = qc->ap;
3194         struct scatterlist *sg = qc->__sg;
3195         int dir = qc->dma_dir;
3196         void *pad_buf = NULL;
3197
3198         WARN_ON(!(qc->flags & ATA_QCFLAG_DMAMAP));
3199         WARN_ON(sg == NULL);
3200
3201         if (qc->flags & ATA_QCFLAG_SINGLE)
3202                 WARN_ON(qc->n_elem > 1);
3203
3204         VPRINTK("unmapping %u sg elements\n", qc->n_elem);
3205
3206         /* if we padded the buffer out to 32-bit bound, and data
3207          * xfer direction is from-device, we must copy from the
3208          * pad buffer back into the supplied buffer
3209          */
3210         if (qc->pad_len && !(qc->tf.flags & ATA_TFLAG_WRITE))
3211                 pad_buf = ap->pad + (qc->tag * ATA_DMA_PAD_SZ);
3212
3213         if (qc->flags & ATA_QCFLAG_SG) {
3214                 if (qc->n_elem)
3215                         dma_unmap_sg(ap->dev, sg, qc->n_elem, dir);
3216                 /* restore last sg */
3217                 sg[qc->orig_n_elem - 1].length += qc->pad_len;
3218                 if (pad_buf) {
3219                         struct scatterlist *psg = &qc->pad_sgent;
3220                         void *addr = kmap_atomic(psg->page, KM_IRQ0);
3221                         memcpy(addr + psg->offset, pad_buf, qc->pad_len);
3222                         kunmap_atomic(addr, KM_IRQ0);
3223                 }
3224         } else {
3225                 if (qc->n_elem)
3226                         dma_unmap_single(ap->dev,
3227                                 sg_dma_address(&sg[0]), sg_dma_len(&sg[0]),
3228                                 dir);
3229                 /* restore sg */
3230                 sg->length += qc->pad_len;
3231                 if (pad_buf)
3232                         memcpy(qc->buf_virt + sg->length - qc->pad_len,
3233                                pad_buf, qc->pad_len);
3234         }
3235
3236         qc->flags &= ~ATA_QCFLAG_DMAMAP;
3237         qc->__sg = NULL;
3238 }
3239
3240 /**
3241  *      ata_fill_sg - Fill PCI IDE PRD table
3242  *      @qc: Metadata associated with taskfile to be transferred
3243  *
3244  *      Fill PCI IDE PRD (scatter-gather) table with segments
3245  *      associated with the current disk command.
3246  *
3247  *      LOCKING:
3248  *      spin_lock_irqsave(host_set lock)
3249  *
3250  */
3251 static void ata_fill_sg(struct ata_queued_cmd *qc)
3252 {
3253         struct ata_port *ap = qc->ap;
3254         struct scatterlist *sg;
3255         unsigned int idx;
3256
3257         WARN_ON(qc->__sg == NULL);
3258         WARN_ON(qc->n_elem == 0 && qc->pad_len == 0);
3259
3260         idx = 0;
3261         ata_for_each_sg(sg, qc) {
3262                 u32 addr, offset;
3263                 u32 sg_len, len;
3264
3265                 /* determine if physical DMA addr spans 64K boundary.
3266                  * Note h/w doesn't support 64-bit, so we unconditionally
3267                  * truncate dma_addr_t to u32.
3268                  */
3269                 addr = (u32) sg_dma_address(sg);
3270                 sg_len = sg_dma_len(sg);
3271
3272                 while (sg_len) {
3273                         offset = addr & 0xffff;
3274                         len = sg_len;
3275                         if ((offset + sg_len) > 0x10000)
3276                                 len = 0x10000 - offset;
3277
3278                         ap->prd[idx].addr = cpu_to_le32(addr);
3279                         ap->prd[idx].flags_len = cpu_to_le32(len & 0xffff);
3280                         VPRINTK("PRD[%u] = (0x%X, 0x%X)\n", idx, addr, len);
3281
3282                         idx++;
3283                         sg_len -= len;
3284                         addr += len;
3285                 }
3286         }
3287
3288         if (idx)
3289                 ap->prd[idx - 1].flags_len |= cpu_to_le32(ATA_PRD_EOT);
3290 }
3291 /**
3292  *      ata_check_atapi_dma - Check whether ATAPI DMA can be supported
3293  *      @qc: Metadata associated with taskfile to check
3294  *
3295  *      Allow low-level driver to filter ATA PACKET commands, returning
3296  *      a status indicating whether or not it is OK to use DMA for the
3297  *      supplied PACKET command.
3298  *
3299  *      LOCKING:
3300  *      spin_lock_irqsave(host_set lock)
3301  *
3302  *      RETURNS: 0 when ATAPI DMA can be used
3303  *               nonzero otherwise
3304  */
3305 int ata_check_atapi_dma(struct ata_queued_cmd *qc)
3306 {
3307         struct ata_port *ap = qc->ap;
3308         int rc = 0; /* Assume ATAPI DMA is OK by default */
3309
3310         if (ap->ops->check_atapi_dma)
3311                 rc = ap->ops->check_atapi_dma(qc);
3312
3313         return rc;
3314 }
3315 /**
3316  *      ata_qc_prep - Prepare taskfile for submission
3317  *      @qc: Metadata associated with taskfile to be prepared
3318  *
3319  *      Prepare ATA taskfile for submission.
3320  *
3321  *      LOCKING:
3322  *      spin_lock_irqsave(host_set lock)
3323  */
3324 void ata_qc_prep(struct ata_queued_cmd *qc)
3325 {
3326         if (!(qc->flags & ATA_QCFLAG_DMAMAP))
3327                 return;
3328
3329         ata_fill_sg(qc);
3330 }
3331
3332 void ata_noop_qc_prep(struct ata_queued_cmd *qc) { }
3333
3334 /**
3335  *      ata_sg_init_one - Associate command with memory buffer
3336  *      @qc: Command to be associated
3337  *      @buf: Memory buffer
3338  *      @buflen: Length of memory buffer, in bytes.
3339  *
3340  *      Initialize the data-related elements of queued_cmd @qc
3341  *      to point to a single memory buffer, @buf of byte length @buflen.
3342  *
3343  *      LOCKING:
3344  *      spin_lock_irqsave(host_set lock)
3345  */
3346
3347 void ata_sg_init_one(struct ata_queued_cmd *qc, void *buf, unsigned int buflen)
3348 {
3349         struct scatterlist *sg;
3350
3351         qc->flags |= ATA_QCFLAG_SINGLE;
3352
3353         memset(&qc->sgent, 0, sizeof(qc->sgent));
3354         qc->__sg = &qc->sgent;
3355         qc->n_elem = 1;
3356         qc->orig_n_elem = 1;
3357         qc->buf_virt = buf;
3358         qc->nbytes = buflen;
3359
3360         sg = qc->__sg;
3361         sg_init_one(sg, buf, buflen);
3362 }
3363
3364 /**
3365  *      ata_sg_init - Associate command with scatter-gather table.
3366  *      @qc: Command to be associated
3367  *      @sg: Scatter-gather table.
3368  *      @n_elem: Number of elements in s/g table.
3369  *
3370  *      Initialize the data-related elements of queued_cmd @qc
3371  *      to point to a scatter-gather table @sg, containing @n_elem
3372  *      elements.
3373  *
3374  *      LOCKING:
3375  *      spin_lock_irqsave(host_set lock)
3376  */
3377
3378 void ata_sg_init(struct ata_queued_cmd *qc, struct scatterlist *sg,
3379                  unsigned int n_elem)
3380 {
3381         qc->flags |= ATA_QCFLAG_SG;
3382         qc->__sg = sg;
3383         qc->n_elem = n_elem;
3384         qc->orig_n_elem = n_elem;
3385 }
3386
3387 /**
3388  *      ata_sg_setup_one - DMA-map the memory buffer associated with a command.
3389  *      @qc: Command with memory buffer to be mapped.
3390  *
3391  *      DMA-map the memory buffer associated with queued_cmd @qc.
3392  *
3393  *      LOCKING:
3394  *      spin_lock_irqsave(host_set lock)
3395  *
3396  *      RETURNS:
3397  *      Zero on success, negative on error.
3398  */
3399
3400 static int ata_sg_setup_one(struct ata_queued_cmd *qc)
3401 {
3402         struct ata_port *ap = qc->ap;
3403         int dir = qc->dma_dir;
3404         struct scatterlist *sg = qc->__sg;
3405         dma_addr_t dma_address;
3406         int trim_sg = 0;
3407
3408         /* we must lengthen transfers to end on a 32-bit boundary */
3409         qc->pad_len = sg->length & 3;
3410         if (qc->pad_len) {
3411                 void *pad_buf = ap->pad + (qc->tag * ATA_DMA_PAD_SZ);
3412                 struct scatterlist *psg = &qc->pad_sgent;
3413
3414                 WARN_ON(qc->dev->class != ATA_DEV_ATAPI);
3415
3416                 memset(pad_buf, 0, ATA_DMA_PAD_SZ);
3417
3418                 if (qc->tf.flags & ATA_TFLAG_WRITE)
3419                         memcpy(pad_buf, qc->buf_virt + sg->length - qc->pad_len,
3420                                qc->pad_len);
3421
3422                 sg_dma_address(psg) = ap->pad_dma + (qc->tag * ATA_DMA_PAD_SZ);
3423                 sg_dma_len(psg) = ATA_DMA_PAD_SZ;
3424                 /* trim sg */
3425                 sg->length -= qc->pad_len;
3426                 if (sg->length == 0)
3427                         trim_sg = 1;
3428
3429                 DPRINTK("padding done, sg->length=%u pad_len=%u\n",
3430                         sg->length, qc->pad_len);
3431         }
3432
3433         if (trim_sg) {
3434                 qc->n_elem--;
3435                 goto skip_map;
3436         }
3437
3438         dma_address = dma_map_single(ap->dev, qc->buf_virt,
3439                                      sg->length, dir);
3440         if (dma_mapping_error(dma_address)) {
3441                 /* restore sg */
3442                 sg->length += qc->pad_len;
3443                 return -1;
3444         }
3445
3446         sg_dma_address(sg) = dma_address;
3447         sg_dma_len(sg) = sg->length;
3448
3449 skip_map:
3450         DPRINTK("mapped buffer of %d bytes for %s\n", sg_dma_len(sg),
3451                 qc->tf.flags & ATA_TFLAG_WRITE ? "write" : "read");
3452
3453         return 0;
3454 }
3455
3456 /**
3457  *      ata_sg_setup - DMA-map the scatter-gather table associated with a command.
3458  *      @qc: Command with scatter-gather table to be mapped.
3459  *
3460  *      DMA-map the scatter-gather table associated with queued_cmd @qc.
3461  *
3462  *      LOCKING:
3463  *      spin_lock_irqsave(host_set lock)
3464  *
3465  *      RETURNS:
3466  *      Zero on success, negative on error.
3467  *
3468  */
3469
3470 static int ata_sg_setup(struct ata_queued_cmd *qc)
3471 {
3472         struct ata_port *ap = qc->ap;
3473         struct scatterlist *sg = qc->__sg;
3474         struct scatterlist *lsg = &sg[qc->n_elem - 1];
3475         int n_elem, pre_n_elem, dir, trim_sg = 0;
3476
3477         VPRINTK("ENTER, ata%u\n", ap->id);
3478         WARN_ON(!(qc->flags & ATA_QCFLAG_SG));
3479
3480         /* we must lengthen transfers to end on a 32-bit boundary */
3481         qc->pad_len = lsg->length & 3;
3482         if (qc->pad_len) {
3483                 void *pad_buf = ap->pad + (qc->tag * ATA_DMA_PAD_SZ);
3484                 struct scatterlist *psg = &qc->pad_sgent;
3485                 unsigned int offset;
3486
3487                 WARN_ON(qc->dev->class != ATA_DEV_ATAPI);
3488
3489                 memset(pad_buf, 0, ATA_DMA_PAD_SZ);
3490
3491                 /*
3492                  * psg->page/offset are used to copy to-be-written
3493                  * data in this function or read data in ata_sg_clean.
3494                  */
3495                 offset = lsg->offset + lsg->length - qc->pad_len;
3496                 psg->page = nth_page(lsg->page, offset >> PAGE_SHIFT);
3497                 psg->offset = offset_in_page(offset);
3498
3499                 if (qc->tf.flags & ATA_TFLAG_WRITE) {
3500                         void *addr = kmap_atomic(psg->page, KM_IRQ0);
3501                         memcpy(pad_buf, addr + psg->offset, qc->pad_len);
3502                         kunmap_atomic(addr, KM_IRQ0);
3503                 }
3504
3505                 sg_dma_address(psg) = ap->pad_dma + (qc->tag * ATA_DMA_PAD_SZ);
3506                 sg_dma_len(psg) = ATA_DMA_PAD_SZ;
3507                 /* trim last sg */
3508                 lsg->length -= qc->pad_len;
3509                 if (lsg->length == 0)
3510                         trim_sg = 1;
3511
3512                 DPRINTK("padding done, sg[%d].length=%u pad_len=%u\n",
3513                         qc->n_elem - 1, lsg->length, qc->pad_len);
3514         }
3515
3516         pre_n_elem = qc->n_elem;
3517         if (trim_sg && pre_n_elem)
3518                 pre_n_elem--;
3519
3520         if (!pre_n_elem) {
3521                 n_elem = 0;
3522                 goto skip_map;
3523         }
3524
3525         dir = qc->dma_dir;
3526         n_elem = dma_map_sg(ap->dev, sg, pre_n_elem, dir);
3527         if (n_elem < 1) {
3528                 /* restore last sg */
3529                 lsg->length += qc->pad_len;
3530                 return -1;
3531         }
3532
3533         DPRINTK("%d sg elements mapped\n", n_elem);
3534
3535 skip_map:
3536         qc->n_elem = n_elem;
3537
3538         return 0;
3539 }
3540
3541 /**
3542  *      swap_buf_le16 - swap halves of 16-bit words in place
3543  *      @buf:  Buffer to swap
3544  *      @buf_words:  Number of 16-bit words in buffer.
3545  *
3546  *      Swap halves of 16-bit words if needed to convert from
3547  *      little-endian byte order to native cpu byte order, or
3548  *      vice-versa.
3549  *
3550  *      LOCKING:
3551  *      Inherited from caller.
3552  */
3553 void swap_buf_le16(u16 *buf, unsigned int buf_words)
3554 {
3555 #ifdef __BIG_ENDIAN
3556         unsigned int i;
3557
3558         for (i = 0; i < buf_words; i++)
3559                 buf[i] = le16_to_cpu(buf[i]);
3560 #endif /* __BIG_ENDIAN */
3561 }
3562
3563 /**
3564  *      ata_mmio_data_xfer - Transfer data by MMIO
3565  *      @adev: device for this I/O
3566  *      @buf: data buffer
3567  *      @buflen: buffer length
3568  *      @write_data: read/write
3569  *
3570  *      Transfer data from/to the device data register by MMIO.
3571  *
3572  *      LOCKING:
3573  *      Inherited from caller.
3574  */
3575
3576 void ata_mmio_data_xfer(struct ata_device *adev, unsigned char *buf,
3577                         unsigned int buflen, int write_data)
3578 {
3579         struct ata_port *ap = adev->ap;
3580         unsigned int i;
3581         unsigned int words = buflen >> 1;
3582         u16 *buf16 = (u16 *) buf;
3583         void __iomem *mmio = (void __iomem *)ap->ioaddr.data_addr;
3584
3585         /* Transfer multiple of 2 bytes */
3586         if (write_data) {
3587                 for (i = 0; i < words; i++)
3588                         writew(le16_to_cpu(buf16[i]), mmio);
3589         } else {
3590                 for (i = 0; i < words; i++)
3591                         buf16[i] = cpu_to_le16(readw(mmio));
3592         }
3593
3594         /* Transfer trailing 1 byte, if any. */
3595         if (unlikely(buflen & 0x01)) {
3596                 u16 align_buf[1] = { 0 };
3597                 unsigned char *trailing_buf = buf + buflen - 1;
3598
3599                 if (write_data) {
3600                         memcpy(align_buf, trailing_buf, 1);
3601                         writew(le16_to_cpu(align_buf[0]), mmio);
3602                 } else {
3603                         align_buf[0] = cpu_to_le16(readw(mmio));
3604                         memcpy(trailing_buf, align_buf, 1);
3605                 }
3606         }
3607 }
3608
3609 /**
3610  *      ata_pio_data_xfer - Transfer data by PIO
3611  *      @adev: device to target
3612  *      @buf: data buffer
3613  *      @buflen: buffer length
3614  *      @write_data: read/write
3615  *
3616  *      Transfer data from/to the device data register by PIO.
3617  *
3618  *      LOCKING:
3619  *      Inherited from caller.
3620  */
3621
3622 void ata_pio_data_xfer(struct ata_device *adev, unsigned char *buf,
3623                        unsigned int buflen, int write_data)
3624 {
3625         struct ata_port *ap = adev->ap;
3626         unsigned int words = buflen >> 1;
3627
3628         /* Transfer multiple of 2 bytes */
3629         if (write_data)
3630                 outsw(ap->ioaddr.data_addr, buf, words);
3631         else
3632                 insw(ap->ioaddr.data_addr, buf, words);
3633
3634         /* Transfer trailing 1 byte, if any. */
3635         if (unlikely(buflen & 0x01)) {
3636                 u16 align_buf[1] = { 0 };
3637                 unsigned char *trailing_buf = buf + buflen - 1;
3638
3639                 if (write_data) {
3640                         memcpy(align_buf, trailing_buf, 1);
3641                         outw(le16_to_cpu(align_buf[0]), ap->ioaddr.data_addr);
3642                 } else {
3643                         align_buf[0] = cpu_to_le16(inw(ap->ioaddr.data_addr));
3644                         memcpy(trailing_buf, align_buf, 1);
3645                 }
3646         }
3647 }
3648
3649 /**
3650  *      ata_pio_data_xfer_noirq - Transfer data by PIO
3651  *      @adev: device to target
3652  *      @buf: data buffer
3653  *      @buflen: buffer length
3654  *      @write_data: read/write
3655  *
3656  *      Transfer data from/to the device data register by PIO. Do the
3657  *      transfer with interrupts disabled.
3658  *
3659  *      LOCKING:
3660  *      Inherited from caller.
3661  */
3662
3663 void ata_pio_data_xfer_noirq(struct ata_device *adev, unsigned char *buf,
3664                                     unsigned int buflen, int write_data)
3665 {
3666         unsigned long flags;
3667         local_irq_save(flags);
3668         ata_pio_data_xfer(adev, buf, buflen, write_data);
3669         local_irq_restore(flags);
3670 }
3671
3672
3673 /**
3674  *      ata_pio_sector - Transfer ATA_SECT_SIZE (512 bytes) of data.
3675  *      @qc: Command on going
3676  *
3677  *      Transfer ATA_SECT_SIZE of data from/to the ATA device.
3678  *
3679  *      LOCKING:
3680  *      Inherited from caller.
3681  */
3682
3683 static void ata_pio_sector(struct ata_queued_cmd *qc)
3684 {
3685         int do_write = (qc->tf.flags & ATA_TFLAG_WRITE);
3686         struct scatterlist *sg = qc->__sg;
3687         struct ata_port *ap = qc->ap;
3688         struct page *page;
3689         unsigned int offset;
3690         unsigned char *buf;
3691
3692         if (qc->cursect == (qc->nsect - 1))
3693                 ap->hsm_task_state = HSM_ST_LAST;
3694
3695         page = sg[qc->cursg].page;
3696         offset = sg[qc->cursg].offset + qc->cursg_ofs * ATA_SECT_SIZE;
3697
3698         /* get the current page and offset */
3699         page = nth_page(page, (offset >> PAGE_SHIFT));
3700         offset %= PAGE_SIZE;
3701
3702         DPRINTK("data %s\n", qc->tf.flags & ATA_TFLAG_WRITE ? "write" : "read");
3703
3704         if (PageHighMem(page)) {
3705                 unsigned long flags;
3706
3707                 /* FIXME: use a bounce buffer */
3708                 local_irq_save(flags);
3709                 buf = kmap_atomic(page, KM_IRQ0);
3710
3711                 /* do the actual data transfer */
3712                 ap->ops->data_xfer(qc->dev, buf + offset, ATA_SECT_SIZE, do_write);
3713
3714                 kunmap_atomic(buf, KM_IRQ0);
3715                 local_irq_restore(flags);
3716         } else {
3717                 buf = page_address(page);
3718                 ap->ops->data_xfer(qc->dev, buf + offset, ATA_SECT_SIZE, do_write);
3719         }
3720
3721         qc->cursect++;
3722         qc->cursg_ofs++;
3723
3724         if ((qc->cursg_ofs * ATA_SECT_SIZE) == (&sg[qc->cursg])->length) {
3725                 qc->cursg++;
3726                 qc->cursg_ofs = 0;
3727         }
3728 }
3729
3730 /**
3731  *      ata_pio_sectors - Transfer one or many 512-byte sectors.
3732  *      @qc: Command on going
3733  *
3734  *      Transfer one or many ATA_SECT_SIZE of data from/to the
3735  *      ATA device for the DRQ request.
3736  *
3737  *      LOCKING:
3738  *      Inherited from caller.
3739  */
3740
3741 static void ata_pio_sectors(struct ata_queued_cmd *qc)
3742 {
3743         if (is_multi_taskfile(&qc->tf)) {
3744                 /* READ/WRITE MULTIPLE */
3745                 unsigned int nsect;
3746
3747                 WARN_ON(qc->dev->multi_count == 0);
3748
3749                 nsect = min(qc->nsect - qc->cursect, qc->dev->multi_count);
3750                 while (nsect--)
3751                         ata_pio_sector(qc);
3752         } else
3753                 ata_pio_sector(qc);
3754 }
3755
3756 /**
3757  *      atapi_send_cdb - Write CDB bytes to hardware
3758  *      @ap: Port to which ATAPI device is attached.
3759  *      @qc: Taskfile currently active
3760  *
3761  *      When device has indicated its readiness to accept
3762  *      a CDB, this function is called.  Send the CDB.
3763  *
3764  *      LOCKING:
3765  *      caller.
3766  */
3767
3768 static void atapi_send_cdb(struct ata_port *ap, struct ata_queued_cmd *qc)
3769 {
3770         /* send SCSI cdb */
3771         DPRINTK("send cdb\n");
3772         WARN_ON(qc->dev->cdb_len < 12);
3773
3774         ap->ops->data_xfer(qc->dev, qc->cdb, qc->dev->cdb_len, 1);
3775         ata_altstatus(ap); /* flush */
3776
3777         switch (qc->tf.protocol) {
3778         case ATA_PROT_ATAPI:
3779                 ap->hsm_task_state = HSM_ST;
3780                 break;
3781         case ATA_PROT_ATAPI_NODATA:
3782                 ap->hsm_task_state = HSM_ST_LAST;
3783                 break;
3784         case ATA_PROT_ATAPI_DMA:
3785                 ap->hsm_task_state = HSM_ST_LAST;
3786                 /* initiate bmdma */
3787                 ap->ops->bmdma_start(qc);
3788                 break;
3789         }
3790 }
3791
3792 /**
3793  *      __atapi_pio_bytes - Transfer data from/to the ATAPI device.
3794  *      @qc: Command on going
3795  *      @bytes: number of bytes
3796  *
3797  *      Transfer Transfer data from/to the ATAPI device.
3798  *
3799  *      LOCKING:
3800  *      Inherited from caller.
3801  *
3802  */
3803
3804 static void __atapi_pio_bytes(struct ata_queued_cmd *qc, unsigned int bytes)
3805 {
3806         int do_write = (qc->tf.flags & ATA_TFLAG_WRITE);
3807         struct scatterlist *sg = qc->__sg;
3808         struct ata_port *ap = qc->ap;
3809         struct page *page;
3810         unsigned char *buf;
3811         unsigned int offset, count;
3812
3813         if (qc->curbytes + bytes >= qc->nbytes)
3814                 ap->hsm_task_state = HSM_ST_LAST;
3815
3816 next_sg:
3817         if (unlikely(qc->cursg >= qc->n_elem)) {
3818                 /*
3819                  * The end of qc->sg is reached and the device expects
3820                  * more data to transfer. In order not to overrun qc->sg
3821                  * and fulfill length specified in the byte count register,
3822                  *    - for read case, discard trailing data from the device
3823                  *    - for write case, padding zero data to the device
3824                  */
3825                 u16 pad_buf[1] = { 0 };
3826                 unsigned int words = bytes >> 1;
3827                 unsigned int i;
3828
3829                 if (words) /* warning if bytes > 1 */
3830                         ata_dev_printk(qc->dev, KERN_WARNING,
3831                                        "%u bytes trailing data\n", bytes);
3832
3833                 for (i = 0; i < words; i++)
3834                         ap->ops->data_xfer(qc->dev, (unsigned char*)pad_buf, 2, do_write);
3835
3836                 ap->hsm_task_state = HSM_ST_LAST;
3837                 return;
3838         }
3839
3840         sg = &qc->__sg[qc->cursg];
3841
3842         page = sg->page;
3843         offset = sg->offset + qc->cursg_ofs;
3844
3845         /* get the current page and offset */
3846         page = nth_page(page, (offset >> PAGE_SHIFT));
3847         offset %= PAGE_SIZE;
3848
3849         /* don't overrun current sg */
3850         count = min(sg->length - qc->cursg_ofs, bytes);
3851
3852         /* don't cross page boundaries */
3853         count = min(count, (unsigned int)PAGE_SIZE - offset);
3854
3855         DPRINTK("data %s\n", qc->tf.flags & ATA_TFLAG_WRITE ? "write" : "read");
3856
3857         if (PageHighMem(page)) {
3858                 unsigned long flags;
3859
3860                 /* FIXME: use bounce buffer */
3861                 local_irq_save(flags);
3862                 buf = kmap_atomic(page, KM_IRQ0);
3863
3864                 /* do the actual data transfer */
3865                 ap->ops->data_xfer(qc->dev,  buf + offset, count, do_write);
3866
3867                 kunmap_atomic(buf, KM_IRQ0);
3868                 local_irq_restore(flags);
3869         } else {
3870                 buf = page_address(page);
3871                 ap->ops->data_xfer(qc->dev,  buf + offset, count, do_write);
3872         }
3873
3874         bytes -= count;
3875         qc->curbytes += count;
3876         qc->cursg_ofs += count;
3877
3878         if (qc->cursg_ofs == sg->length) {
3879                 qc->cursg++;
3880                 qc->cursg_ofs = 0;
3881         }
3882
3883         if (bytes)
3884                 goto next_sg;
3885 }
3886
3887 /**
3888  *      atapi_pio_bytes - Transfer data from/to the ATAPI device.
3889  *      @qc: Command on going
3890  *
3891  *      Transfer Transfer data from/to the ATAPI device.
3892  *
3893  *      LOCKING:
3894  *      Inherited from caller.
3895  */
3896
3897 static void atapi_pio_bytes(struct ata_queued_cmd *qc)
3898 {
3899         struct ata_port *ap = qc->ap;
3900         struct ata_device *dev = qc->dev;
3901         unsigned int ireason, bc_lo, bc_hi, bytes;
3902         int i_write, do_write = (qc->tf.flags & ATA_TFLAG_WRITE) ? 1 : 0;
3903
3904         /* Abuse qc->result_tf for temp storage of intermediate TF
3905          * here to save some kernel stack usage.
3906          * For normal completion, qc->result_tf is not relevant. For
3907          * error, qc->result_tf is later overwritten by ata_qc_complete().
3908          * So, the correctness of qc->result_tf is not affected.
3909          */
3910         ap->ops->tf_read(ap, &qc->result_tf);
3911         ireason = qc->result_tf.nsect;
3912         bc_lo = qc->result_tf.lbam;
3913         bc_hi = qc->result_tf.lbah;
3914         bytes = (bc_hi << 8) | bc_lo;
3915
3916         /* shall be cleared to zero, indicating xfer of data */
3917         if (ireason & (1 << 0))
3918                 goto err_out;
3919
3920         /* make sure transfer direction matches expected */
3921         i_write = ((ireason & (1 << 1)) == 0) ? 1 : 0;
3922         if (do_write != i_write)
3923                 goto err_out;
3924
3925         VPRINTK("ata%u: xfering %d bytes\n", ap->id, bytes);
3926
3927         __atapi_pio_bytes(qc, bytes);
3928
3929         return;
3930
3931 err_out:
3932         ata_dev_printk(dev, KERN_INFO, "ATAPI check failed\n");
3933         qc->err_mask |= AC_ERR_HSM;
3934         ap->hsm_task_state = HSM_ST_ERR;
3935 }
3936
3937 /**
3938  *      ata_hsm_ok_in_wq - Check if the qc can be handled in the workqueue.
3939  *      @ap: the target ata_port
3940  *      @qc: qc on going
3941  *
3942  *      RETURNS:
3943  *      1 if ok in workqueue, 0 otherwise.
3944  */
3945
3946 static inline int ata_hsm_ok_in_wq(struct ata_port *ap, struct ata_queued_cmd *qc)
3947 {
3948         if (qc->tf.flags & ATA_TFLAG_POLLING)
3949                 return 1;
3950
3951         if (ap->hsm_task_state == HSM_ST_FIRST) {
3952                 if (qc->tf.protocol == ATA_PROT_PIO &&
3953                     (qc->tf.flags & ATA_TFLAG_WRITE))
3954                     return 1;
3955
3956                 if (is_atapi_taskfile(&qc->tf) &&
3957                     !(qc->dev->flags & ATA_DFLAG_CDB_INTR))
3958                         return 1;
3959         }
3960
3961         return 0;
3962 }
3963
3964 /**
3965  *      ata_hsm_qc_complete - finish a qc running on standard HSM
3966  *      @qc: Command to complete
3967  *      @in_wq: 1 if called from workqueue, 0 otherwise
3968  *
3969  *      Finish @qc which is running on standard HSM.
3970  *
3971  *      LOCKING:
3972  *      If @in_wq is zero, spin_lock_irqsave(host_set lock).
3973  *      Otherwise, none on entry and grabs host lock.
3974  */
3975 static void ata_hsm_qc_complete(struct ata_queued_cmd *qc, int in_wq)
3976 {
3977         struct ata_port *ap = qc->ap;
3978         unsigned long flags;
3979
3980         if (ap->ops->error_handler) {
3981                 if (in_wq) {
3982                         spin_lock_irqsave(ap->lock, flags);
3983
3984                         /* EH might have kicked in while host_set lock
3985                          * is released.
3986                          */
3987                         qc = ata_qc_from_tag(ap, qc->tag);
3988                         if (qc) {
3989                                 if (likely(!(qc->err_mask & AC_ERR_HSM))) {
3990                                         ata_irq_on(ap);
3991                                         ata_qc_complete(qc);
3992                                 } else
3993                                         ata_port_freeze(ap);
3994                         }
3995
3996                         spin_unlock_irqrestore(ap->lock, flags);
3997                 } else {
3998                         if (likely(!(qc->err_mask & AC_ERR_HSM)))
3999                                 ata_qc_complete(qc);
4000                         else
4001                                 ata_port_freeze(ap);
4002                 }
4003         } else {
4004                 if (in_wq) {
4005                         spin_lock_irqsave(ap->lock, flags);
4006                         ata_irq_on(ap);
4007                         ata_qc_complete(qc);
4008                         spin_unlock_irqrestore(ap->lock, flags);
4009                 } else
4010                         ata_qc_complete(qc);
4011         }
4012
4013         ata_altstatus(ap); /* flush */
4014 }
4015
4016 /**
4017  *      ata_hsm_move - move the HSM to the next state.
4018  *      @ap: the target ata_port
4019  *      @qc: qc on going
4020  *      @status: current device status
4021  *      @in_wq: 1 if called from workqueue, 0 otherwise
4022  *
4023  *      RETURNS:
4024  *      1 when poll next status needed, 0 otherwise.
4025  */
4026 int ata_hsm_move(struct ata_port *ap, struct ata_queued_cmd *qc,
4027                  u8 status, int in_wq)
4028 {
4029         unsigned long flags = 0;
4030         int poll_next;
4031
4032         WARN_ON((qc->flags & ATA_QCFLAG_ACTIVE) == 0);
4033
4034         /* Make sure ata_qc_issue_prot() does not throw things
4035          * like DMA polling into the workqueue. Notice that
4036          * in_wq is not equivalent to (qc->tf.flags & ATA_TFLAG_POLLING).
4037          */
4038         WARN_ON(in_wq != ata_hsm_ok_in_wq(ap, qc));
4039
4040 fsm_start:
4041         DPRINTK("ata%u: protocol %d task_state %d (dev_stat 0x%X)\n",
4042                 ap->id, qc->tf.protocol, ap->hsm_task_state, status);
4043
4044         switch (ap->hsm_task_state) {
4045         case HSM_ST_FIRST:
4046                 /* Send first data block or PACKET CDB */
4047
4048                 /* If polling, we will stay in the work queue after
4049                  * sending the data. Otherwise, interrupt handler
4050                  * takes over after sending the data.
4051                  */
4052                 poll_next = (qc->tf.flags & ATA_TFLAG_POLLING);
4053
4054                 /* check device status */
4055                 if (unlikely((status & ATA_DRQ) == 0)) {
4056                         /* handle BSY=0, DRQ=0 as error */
4057                         if (likely(status & (ATA_ERR | ATA_DF)))
4058                                 /* device stops HSM for abort/error */
4059                                 qc->err_mask |= AC_ERR_DEV;
4060                         else
4061                                 /* HSM violation. Let EH handle this */
4062                                 qc->err_mask |= AC_ERR_HSM;
4063
4064                         ap->hsm_task_state = HSM_ST_ERR;
4065                         goto fsm_start;
4066                 }
4067
4068                 /* Device should not ask for data transfer (DRQ=1)
4069                  * when it finds something wrong.
4070                  * We ignore DRQ here and stop the HSM by
4071                  * changing hsm_task_state to HSM_ST_ERR and
4072                  * let the EH abort the command or reset the device.
4073                  */
4074                 if (unlikely(status & (ATA_ERR | ATA_DF))) {
4075                         printk(KERN_WARNING "ata%d: DRQ=1 with device error, dev_stat 0x%X\n",
4076                                ap->id, status);
4077                         qc->err_mask |= AC_ERR_HSM;
4078                         ap->hsm_task_state = HSM_ST_ERR;
4079                         goto fsm_start;
4080                 }
4081
4082                 /* Send the CDB (atapi) or the first data block (ata pio out).
4083                  * During the state transition, interrupt handler shouldn't
4084                  * be invoked before the data transfer is complete and
4085                  * hsm_task_state is changed. Hence, the following locking.
4086                  */
4087                 if (in_wq)
4088                         spin_lock_irqsave(ap->lock, flags);
4089
4090                 if (qc->tf.protocol == ATA_PROT_PIO) {
4091                         /* PIO data out protocol.
4092                          * send first data block.
4093                          */
4094
4095                         /* ata_pio_sectors() might change the state
4096                          * to HSM_ST_LAST. so, the state is changed here
4097                          * before ata_pio_sectors().
4098                          */
4099                         ap->hsm_task_state = HSM_ST;
4100                         ata_pio_sectors(qc);
4101                         ata_altstatus(ap); /* flush */
4102                 } else
4103                         /* send CDB */
4104                         atapi_send_cdb(ap, qc);
4105
4106                 if (in_wq)
4107                         spin_unlock_irqrestore(ap->lock, flags);
4108
4109                 /* if polling, ata_pio_task() handles the rest.
4110                  * otherwise, interrupt handler takes over from here.
4111                  */
4112                 break;
4113
4114         case HSM_ST:
4115                 /* complete command or read/write the data register */
4116                 if (qc->tf.protocol == ATA_PROT_ATAPI) {
4117                         /* ATAPI PIO protocol */
4118                         if ((status & ATA_DRQ) == 0) {
4119                                 /* No more data to transfer or device error.
4120                                  * Device error will be tagged in HSM_ST_LAST.
4121                                  */
4122                                 ap->hsm_task_state = HSM_ST_LAST;
4123                                 goto fsm_start;
4124                         }
4125
4126                         /* Device should not ask for data transfer (DRQ=1)
4127                          * when it finds something wrong.
4128                          * We ignore DRQ here and stop the HSM by
4129                          * changing hsm_task_state to HSM_ST_ERR and
4130                          * let the EH abort the command or reset the device.
4131                          */
4132                         if (unlikely(status & (ATA_ERR | ATA_DF))) {
4133                                 printk(KERN_WARNING "ata%d: DRQ=1 with device error, dev_stat 0x%X\n",
4134                                        ap->id, status);
4135                                 qc->err_mask |= AC_ERR_HSM;
4136                                 ap->hsm_task_state = HSM_ST_ERR;
4137                                 goto fsm_start;
4138                         }
4139
4140                         atapi_pio_bytes(qc);
4141
4142                         if (unlikely(ap->hsm_task_state == HSM_ST_ERR))
4143                                 /* bad ireason reported by device */
4144                                 goto fsm_start;
4145
4146                 } else {
4147                         /* ATA PIO protocol */
4148                         if (unlikely((status & ATA_DRQ) == 0)) {
4149                                 /* handle BSY=0, DRQ=0 as error */
4150                                 if (likely(status & (ATA_ERR | ATA_DF)))
4151                                         /* device stops HSM for abort/error */
4152                                         qc->err_mask |= AC_ERR_DEV;
4153                                 else
4154                                         /* HSM violation. Let EH handle this */
4155                                         qc->err_mask |= AC_ERR_HSM;
4156
4157                                 ap->hsm_task_state = HSM_ST_ERR;
4158                                 goto fsm_start;
4159                         }
4160
4161                         /* For PIO reads, some devices may ask for
4162                          * data transfer (DRQ=1) alone with ERR=1.
4163                          * We respect DRQ here and transfer one
4164                          * block of junk data before changing the
4165                          * hsm_task_state to HSM_ST_ERR.
4166                          *
4167                          * For PIO writes, ERR=1 DRQ=1 doesn't make
4168                          * sense since the data block has been
4169                          * transferred to the device.
4170                          */
4171                         if (unlikely(status & (ATA_ERR | ATA_DF))) {
4172                                 /* data might be corrputed */
4173                                 qc->err_mask |= AC_ERR_DEV;
4174
4175                                 if (!(qc->tf.flags & ATA_TFLAG_WRITE)) {
4176                                         ata_pio_sectors(qc);
4177                                         ata_altstatus(ap);
4178                                         status = ata_wait_idle(ap);
4179                                 }
4180
4181                                 if (status & (ATA_BUSY | ATA_DRQ))
4182                                         qc->err_mask |= AC_ERR_HSM;
4183
4184                                 /* ata_pio_sectors() might change the
4185                                  * state to HSM_ST_LAST. so, the state
4186                                  * is changed after ata_pio_sectors().
4187                                  */
4188                                 ap->hsm_task_state = HSM_ST_ERR;
4189                                 goto fsm_start;
4190                         }
4191
4192                         ata_pio_sectors(qc);
4193
4194                         if (ap->hsm_task_state == HSM_ST_LAST &&
4195                             (!(qc->tf.flags & ATA_TFLAG_WRITE))) {
4196                                 /* all data read */
4197                                 ata_altstatus(ap);
4198                                 status = ata_wait_idle(ap);
4199                                 goto fsm_start;
4200                         }
4201                 }
4202
4203                 ata_altstatus(ap); /* flush */
4204                 poll_next = 1;
4205                 break;
4206
4207         case HSM_ST_LAST:
4208                 if (unlikely(!ata_ok(status))) {
4209                         qc->err_mask |= __ac_err_mask(status);
4210                         ap->hsm_task_state = HSM_ST_ERR;
4211                         goto fsm_start;
4212                 }
4213
4214                 /* no more data to transfer */
4215                 DPRINTK("ata%u: dev %u command complete, drv_stat 0x%x\n",
4216                         ap->id, qc->dev->devno, status);
4217
4218                 WARN_ON(qc->err_mask);
4219
4220                 ap->hsm_task_state = HSM_ST_IDLE;
4221
4222                 /* complete taskfile transaction */
4223                 ata_hsm_qc_complete(qc, in_wq);
4224
4225                 poll_next = 0;
4226                 break;
4227
4228         case HSM_ST_ERR:
4229                 /* make sure qc->err_mask is available to
4230                  * know what's wrong and recover
4231                  */
4232                 WARN_ON(qc->err_mask == 0);
4233
4234                 ap->hsm_task_state = HSM_ST_IDLE;
4235
4236                 /* complete taskfile transaction */
4237                 ata_hsm_qc_complete(qc, in_wq);
4238
4239                 poll_next = 0;
4240                 break;
4241         default:
4242                 poll_next = 0;
4243                 BUG();
4244         }
4245
4246         return poll_next;
4247 }
4248
4249 static void ata_pio_task(void *_data)
4250 {
4251         struct ata_queued_cmd *qc = _data;
4252         struct ata_port *ap = qc->ap;
4253         u8 status;
4254         int poll_next;
4255
4256 fsm_start:
4257         WARN_ON(ap->hsm_task_state == HSM_ST_IDLE);
4258
4259         /*
4260          * This is purely heuristic.  This is a fast path.
4261          * Sometimes when we enter, BSY will be cleared in
4262          * a chk-status or two.  If not, the drive is probably seeking
4263          * or something.  Snooze for a couple msecs, then
4264          * chk-status again.  If still busy, queue delayed work.
4265          */
4266         status = ata_busy_wait(ap, ATA_BUSY, 5);
4267         if (status & ATA_BUSY) {
4268                 msleep(2);
4269                 status = ata_busy_wait(ap, ATA_BUSY, 10);
4270                 if (status & ATA_BUSY) {
4271                         ata_port_queue_task(ap, ata_pio_task, qc, ATA_SHORT_PAUSE);
4272                         return;
4273                 }
4274         }
4275
4276         /* move the HSM */
4277         poll_next = ata_hsm_move(ap, qc, status, 1);
4278
4279         /* another command or interrupt handler
4280          * may be running at this point.
4281          */
4282         if (poll_next)
4283                 goto fsm_start;
4284 }
4285
4286 /**
4287  *      ata_qc_new - Request an available ATA command, for queueing
4288  *      @ap: Port associated with device @dev
4289  *      @dev: Device from whom we request an available command structure
4290  *
4291  *      LOCKING:
4292  *      None.
4293  */
4294
4295 static struct ata_queued_cmd *ata_qc_new(struct ata_port *ap)
4296 {
4297         struct ata_queued_cmd *qc = NULL;
4298         unsigned int i;
4299
4300         /* no command while frozen */
4301         if (unlikely(ap->pflags & ATA_PFLAG_FROZEN))
4302                 return NULL;
4303
4304         /* the last tag is reserved for internal command. */
4305         for (i = 0; i < ATA_MAX_QUEUE - 1; i++)
4306                 if (!test_and_set_bit(i, &ap->qc_allocated)) {
4307                         qc = __ata_qc_from_tag(ap, i);
4308                         break;
4309                 }
4310
4311         if (qc)
4312                 qc->tag = i;
4313
4314         return qc;
4315 }
4316
4317 /**
4318  *      ata_qc_new_init - Request an available ATA command, and initialize it
4319  *      @dev: Device from whom we request an available command structure
4320  *
4321  *      LOCKING:
4322  *      None.
4323  */
4324
4325 struct ata_queued_cmd *ata_qc_new_init(struct ata_device *dev)
4326 {
4327         struct ata_port *ap = dev->ap;
4328         struct ata_queued_cmd *qc;
4329
4330         qc = ata_qc_new(ap);
4331         if (qc) {
4332                 qc->scsicmd = NULL;
4333                 qc->ap = ap;
4334                 qc->dev = dev;
4335
4336                 ata_qc_reinit(qc);
4337         }
4338
4339         return qc;
4340 }
4341
4342 /**
4343  *      ata_qc_free - free unused ata_queued_cmd
4344  *      @qc: Command to complete
4345  *
4346  *      Designed to free unused ata_queued_cmd object
4347  *      in case something prevents using it.
4348  *
4349  *      LOCKING:
4350  *      spin_lock_irqsave(host_set lock)
4351  */
4352 void ata_qc_free(struct ata_queued_cmd *qc)
4353 {
4354         struct ata_port *ap = qc->ap;
4355         unsigned int tag;
4356
4357         WARN_ON(qc == NULL);    /* ata_qc_from_tag _might_ return NULL */
4358
4359         qc->flags = 0;
4360         tag = qc->tag;
4361         if (likely(ata_tag_valid(tag))) {
4362                 qc->tag = ATA_TAG_POISON;
4363                 clear_bit(tag, &ap->qc_allocated);
4364         }
4365 }
4366
4367 void __ata_qc_complete(struct ata_queued_cmd *qc)
4368 {
4369         struct ata_port *ap = qc->ap;
4370
4371         WARN_ON(qc == NULL);    /* ata_qc_from_tag _might_ return NULL */
4372         WARN_ON(!(qc->flags & ATA_QCFLAG_ACTIVE));
4373
4374         if (likely(qc->flags & ATA_QCFLAG_DMAMAP))
4375                 ata_sg_clean(qc);
4376
4377         /* command should be marked inactive atomically with qc completion */
4378         if (qc->tf.protocol == ATA_PROT_NCQ)
4379                 ap->sactive &= ~(1 << qc->tag);
4380         else
4381                 ap->active_tag = ATA_TAG_POISON;
4382
4383         /* atapi: mark qc as inactive to prevent the interrupt handler
4384          * from completing the command twice later, before the error handler
4385          * is called. (when rc != 0 and atapi request sense is needed)
4386          */
4387         qc->flags &= ~ATA_QCFLAG_ACTIVE;
4388         ap->qc_active &= ~(1 << qc->tag);
4389
4390         /* call completion callback */
4391         qc->complete_fn(qc);
4392 }
4393
4394 /**
4395  *      ata_qc_complete - Complete an active ATA command
4396  *      @qc: Command to complete
4397  *      @err_mask: ATA Status register contents
4398  *
4399  *      Indicate to the mid and upper layers that an ATA
4400  *      command has completed, with either an ok or not-ok status.
4401  *
4402  *      LOCKING:
4403  *      spin_lock_irqsave(host_set lock)
4404  */
4405 void ata_qc_complete(struct ata_queued_cmd *qc)
4406 {
4407         struct ata_port *ap = qc->ap;
4408
4409         /* XXX: New EH and old EH use different mechanisms to
4410          * synchronize EH with regular execution path.
4411          *
4412          * In new EH, a failed qc is marked with ATA_QCFLAG_FAILED.
4413          * Normal execution path is responsible for not accessing a
4414          * failed qc.  libata core enforces the rule by returning NULL
4415          * from ata_qc_from_tag() for failed qcs.
4416          *
4417          * Old EH depends on ata_qc_complete() nullifying completion
4418          * requests if ATA_QCFLAG_EH_SCHEDULED is set.  Old EH does
4419          * not synchronize with interrupt handler.  Only PIO task is
4420          * taken care of.
4421          */
4422         if (ap->ops->error_handler) {
4423                 WARN_ON(ap->pflags & ATA_PFLAG_FROZEN);
4424
4425                 if (unlikely(qc->err_mask))
4426                         qc->flags |= ATA_QCFLAG_FAILED;
4427
4428                 if (unlikely(qc->flags & ATA_QCFLAG_FAILED)) {
4429                         if (!ata_tag_internal(qc->tag)) {
4430                                 /* always fill result TF for failed qc */
4431                                 ap->ops->tf_read(ap, &qc->result_tf);
4432                                 ata_qc_schedule_eh(qc);
4433                                 return;
4434                         }
4435                 }
4436
4437                 /* read result TF if requested */
4438                 if (qc->flags & ATA_QCFLAG_RESULT_TF)
4439                         ap->ops->tf_read(ap, &qc->result_tf);
4440
4441                 __ata_qc_complete(qc);
4442         } else {
4443                 if (qc->flags & ATA_QCFLAG_EH_SCHEDULED)
4444                         return;
4445
4446                 /* read result TF if failed or requested */
4447                 if (qc->err_mask || qc->flags & ATA_QCFLAG_RESULT_TF)
4448                         ap->ops->tf_read(ap, &qc->result_tf);
4449
4450                 __ata_qc_complete(qc);
4451         }
4452 }
4453
4454 /**
4455  *      ata_qc_complete_multiple - Complete multiple qcs successfully
4456  *      @ap: port in question
4457  *      @qc_active: new qc_active mask
4458  *      @finish_qc: LLDD callback invoked before completing a qc
4459  *
4460  *      Complete in-flight commands.  This functions is meant to be
4461  *      called from low-level driver's interrupt routine to complete
4462  *      requests normally.  ap->qc_active and @qc_active is compared
4463  *      and commands are completed accordingly.
4464  *
4465  *      LOCKING:
4466  *      spin_lock_irqsave(host_set lock)
4467  *
4468  *      RETURNS:
4469  *      Number of completed commands on success, -errno otherwise.
4470  */
4471 int ata_qc_complete_multiple(struct ata_port *ap, u32 qc_active,
4472                              void (*finish_qc)(struct ata_queued_cmd *))
4473 {
4474         int nr_done = 0;
4475         u32 done_mask;
4476         int i;
4477
4478         done_mask = ap->qc_active ^ qc_active;
4479
4480         if (unlikely(done_mask & qc_active)) {
4481                 ata_port_printk(ap, KERN_ERR, "illegal qc_active transition "
4482                                 "(%08x->%08x)\n", ap->qc_active, qc_active);
4483                 return -EINVAL;
4484         }
4485
4486         for (i = 0; i < ATA_MAX_QUEUE; i++) {
4487                 struct ata_queued_cmd *qc;
4488
4489                 if (!(done_mask & (1 << i)))
4490                         continue;
4491
4492                 if ((qc = ata_qc_from_tag(ap, i))) {
4493                         if (finish_qc)
4494                                 finish_qc(qc);
4495                         ata_qc_complete(qc);
4496                         nr_done++;
4497                 }
4498         }
4499
4500         return nr_done;
4501 }
4502
4503 static inline int ata_should_dma_map(struct ata_queued_cmd *qc)
4504 {
4505         struct ata_port *ap = qc->ap;
4506
4507         switch (qc->tf.protocol) {
4508         case ATA_PROT_NCQ:
4509         case ATA_PROT_DMA:
4510         case ATA_PROT_ATAPI_DMA:
4511                 return 1;
4512
4513         case ATA_PROT_ATAPI:
4514         case ATA_PROT_PIO:
4515                 if (ap->flags & ATA_FLAG_PIO_DMA)
4516                         return 1;
4517
4518                 /* fall through */
4519
4520         default:
4521                 return 0;
4522         }
4523
4524         /* never reached */
4525 }
4526
4527 /**
4528  *      ata_qc_issue - issue taskfile to device
4529  *      @qc: command to issue to device
4530  *
4531  *      Prepare an ATA command to submission to device.
4532  *      This includes mapping the data into a DMA-able
4533  *      area, filling in the S/G table, and finally
4534  *      writing the taskfile to hardware, starting the command.
4535  *
4536  *      LOCKING:
4537  *      spin_lock_irqsave(host_set lock)
4538  */
4539 void ata_qc_issue(struct ata_queued_cmd *qc)
4540 {
4541         struct ata_port *ap = qc->ap;
4542
4543         /* Make sure only one non-NCQ command is outstanding.  The
4544          * check is skipped for old EH because it reuses active qc to
4545          * request ATAPI sense.
4546          */
4547         WARN_ON(ap->ops->error_handler && ata_tag_valid(ap->active_tag));
4548
4549         if (qc->tf.protocol == ATA_PROT_NCQ) {
4550                 WARN_ON(ap->sactive & (1 << qc->tag));
4551                 ap->sactive |= 1 << qc->tag;
4552         } else {
4553                 WARN_ON(ap->sactive);
4554                 ap->active_tag = qc->tag;
4555         }
4556
4557         qc->flags |= ATA_QCFLAG_ACTIVE;
4558         ap->qc_active |= 1 << qc->tag;
4559
4560         if (ata_should_dma_map(qc)) {
4561                 if (qc->flags & ATA_QCFLAG_SG) {
4562                         if (ata_sg_setup(qc))
4563                                 goto sg_err;
4564                 } else if (qc->flags & ATA_QCFLAG_SINGLE) {
4565                         if (ata_sg_setup_one(qc))
4566                                 goto sg_err;
4567                 }
4568         } else {
4569                 qc->flags &= ~ATA_QCFLAG_DMAMAP;
4570         }
4571
4572         ap->ops->qc_prep(qc);
4573
4574         qc->err_mask |= ap->ops->qc_issue(qc);
4575         if (unlikely(qc->err_mask))
4576                 goto err;
4577         return;
4578
4579 sg_err:
4580         qc->flags &= ~ATA_QCFLAG_DMAMAP;
4581         qc->err_mask |= AC_ERR_SYSTEM;
4582 err:
4583         ata_qc_complete(qc);
4584 }
4585
4586 /**
4587  *      ata_qc_issue_prot - issue taskfile to device in proto-dependent manner
4588  *      @qc: command to issue to device
4589  *
4590  *      Using various libata functions and hooks, this function
4591  *      starts an ATA command.  ATA commands are grouped into
4592  *      classes called "protocols", and issuing each type of protocol
4593  *      is slightly different.
4594  *
4595  *      May be used as the qc_issue() entry in ata_port_operations.
4596  *
4597  *      LOCKING:
4598  *      spin_lock_irqsave(host_set lock)
4599  *
4600  *      RETURNS:
4601  *      Zero on success, AC_ERR_* mask on failure
4602  */
4603
4604 unsigned int ata_qc_issue_prot(struct ata_queued_cmd *qc)
4605 {
4606         struct ata_port *ap = qc->ap;
4607
4608         /* Use polling pio if the LLD doesn't handle
4609          * interrupt driven pio and atapi CDB interrupt.
4610          */
4611         if (ap->flags & ATA_FLAG_PIO_POLLING) {
4612                 switch (qc->tf.protocol) {
4613                 case ATA_PROT_PIO:
4614                 case ATA_PROT_ATAPI:
4615                 case ATA_PROT_ATAPI_NODATA:
4616                         qc->tf.flags |= ATA_TFLAG_POLLING;
4617                         break;
4618                 case ATA_PROT_ATAPI_DMA:
4619                         if (qc->dev->flags & ATA_DFLAG_CDB_INTR)
4620                                 /* see ata_dma_blacklisted() */
4621                                 BUG();
4622                         break;
4623                 default:
4624                         break;
4625                 }
4626         }
4627
4628         /* select the device */
4629         ata_dev_select(ap, qc->dev->devno, 1, 0);
4630
4631         /* start the command */
4632         switch (qc->tf.protocol) {
4633         case ATA_PROT_NODATA:
4634                 if (qc->tf.flags & ATA_TFLAG_POLLING)
4635                         ata_qc_set_polling(qc);
4636
4637                 ata_tf_to_host(ap, &qc->tf);
4638                 ap->hsm_task_state = HSM_ST_LAST;
4639
4640                 if (qc->tf.flags & ATA_TFLAG_POLLING)
4641                         ata_port_queue_task(ap, ata_pio_task, qc, 0);
4642
4643                 break;
4644
4645         case ATA_PROT_DMA:
4646                 WARN_ON(qc->tf.flags & ATA_TFLAG_POLLING);
4647
4648                 ap->ops->tf_load(ap, &qc->tf);   /* load tf registers */
4649                 ap->ops->bmdma_setup(qc);           /* set up bmdma */
4650                 ap->ops->bmdma_start(qc);           /* initiate bmdma */
4651                 ap->hsm_task_state = HSM_ST_LAST;
4652                 break;
4653
4654         case ATA_PROT_PIO:
4655                 if (qc->tf.flags & ATA_TFLAG_POLLING)
4656                         ata_qc_set_polling(qc);
4657
4658                 ata_tf_to_host(ap, &qc->tf);
4659
4660                 if (qc->tf.flags & ATA_TFLAG_WRITE) {
4661                         /* PIO data out protocol */
4662                         ap->hsm_task_state = HSM_ST_FIRST;
4663                         ata_port_queue_task(ap, ata_pio_task, qc, 0);
4664
4665                         /* always send first data block using
4666                          * the ata_pio_task() codepath.
4667                          */
4668                 } else {
4669                         /* PIO data in protocol */
4670                         ap->hsm_task_state = HSM_ST;
4671
4672                         if (qc->tf.flags & ATA_TFLAG_POLLING)
4673                                 ata_port_queue_task(ap, ata_pio_task, qc, 0);
4674
4675                         /* if polling, ata_pio_task() handles the rest.
4676                          * otherwise, interrupt handler takes over from here.
4677                          */
4678                 }
4679
4680                 break;
4681
4682         case ATA_PROT_ATAPI:
4683         case ATA_PROT_ATAPI_NODATA:
4684                 if (qc->tf.flags & ATA_TFLAG_POLLING)
4685                         ata_qc_set_polling(qc);
4686
4687                 ata_tf_to_host(ap, &qc->tf);
4688
4689                 ap->hsm_task_state = HSM_ST_FIRST;
4690
4691                 /* send cdb by polling if no cdb interrupt */
4692                 if ((!(qc->dev->flags & ATA_DFLAG_CDB_INTR)) ||
4693                     (qc->tf.flags & ATA_TFLAG_POLLING))
4694                         ata_port_queue_task(ap, ata_pio_task, qc, 0);
4695                 break;
4696
4697         case ATA_PROT_ATAPI_DMA:
4698                 WARN_ON(qc->tf.flags & ATA_TFLAG_POLLING);
4699
4700                 ap->ops->tf_load(ap, &qc->tf);   /* load tf registers */
4701                 ap->ops->bmdma_setup(qc);           /* set up bmdma */
4702                 ap->hsm_task_state = HSM_ST_FIRST;
4703
4704                 /* send cdb by polling if no cdb interrupt */
4705                 if (!(qc->dev->flags & ATA_DFLAG_CDB_INTR))
4706                         ata_port_queue_task(ap, ata_pio_task, qc, 0);
4707                 break;
4708
4709         default:
4710                 WARN_ON(1);
4711                 return AC_ERR_SYSTEM;
4712         }
4713
4714         return 0;
4715 }
4716
4717 /**
4718  *      ata_host_intr - Handle host interrupt for given (port, task)
4719  *      @ap: Port on which interrupt arrived (possibly...)
4720  *      @qc: Taskfile currently active in engine
4721  *
4722  *      Handle host interrupt for given queued command.  Currently,
4723  *      only DMA interrupts are handled.  All other commands are
4724  *      handled via polling with interrupts disabled (nIEN bit).
4725  *
4726  *      LOCKING:
4727  *      spin_lock_irqsave(host_set lock)
4728  *
4729  *      RETURNS:
4730  *      One if interrupt was handled, zero if not (shared irq).
4731  */
4732
4733 inline unsigned int ata_host_intr (struct ata_port *ap,
4734                                    struct ata_queued_cmd *qc)
4735 {
4736         u8 status, host_stat = 0;
4737
4738         VPRINTK("ata%u: protocol %d task_state %d\n",
4739                 ap->id, qc->tf.protocol, ap->hsm_task_state);
4740
4741         /* Check whether we are expecting interrupt in this state */
4742         switch (ap->hsm_task_state) {
4743         case HSM_ST_FIRST:
4744                 /* Some pre-ATAPI-4 devices assert INTRQ
4745                  * at this state when ready to receive CDB.
4746                  */
4747
4748                 /* Check the ATA_DFLAG_CDB_INTR flag is enough here.
4749                  * The flag was turned on only for atapi devices.
4750                  * No need to check is_atapi_taskfile(&qc->tf) again.
4751                  */
4752                 if (!(qc->dev->flags & ATA_DFLAG_CDB_INTR))
4753                         goto idle_irq;
4754                 break;
4755         case HSM_ST_LAST:
4756                 if (qc->tf.protocol == ATA_PROT_DMA ||
4757                     qc->tf.protocol == ATA_PROT_ATAPI_DMA) {
4758                         /* check status of DMA engine */
4759                         host_stat = ap->ops->bmdma_status(ap);
4760                         VPRINTK("ata%u: host_stat 0x%X\n", ap->id, host_stat);
4761
4762                         /* if it's not our irq... */
4763                         if (!(host_stat & ATA_DMA_INTR))
4764                                 goto idle_irq;
4765
4766                         /* before we do anything else, clear DMA-Start bit */
4767                         ap->ops->bmdma_stop(qc);
4768
4769                         if (unlikely(host_stat & ATA_DMA_ERR)) {
4770                                 /* error when transfering data to/from memory */
4771                                 qc->err_mask |= AC_ERR_HOST_BUS;
4772                                 ap->hsm_task_state = HSM_ST_ERR;
4773                         }
4774                 }
4775                 break;
4776         case HSM_ST:
4777                 break;
4778         default:
4779                 goto idle_irq;
4780         }
4781
4782         /* check altstatus */
4783         status = ata_altstatus(ap);
4784         if (status & ATA_BUSY)
4785                 goto idle_irq;
4786
4787         /* check main status, clearing INTRQ */
4788         status = ata_chk_status(ap);
4789         if (unlikely(status & ATA_BUSY))
4790                 goto idle_irq;
4791
4792         /* ack bmdma irq events */
4793         ap->ops->irq_clear(ap);
4794
4795         ata_hsm_move(ap, qc, status, 0);
4796         return 1;       /* irq handled */
4797
4798 idle_irq:
4799         ap->stats.idle_irq++;
4800
4801 #ifdef ATA_IRQ_TRAP
4802         if ((ap->stats.idle_irq % 1000) == 0) {
4803                 ata_irq_ack(ap, 0); /* debug trap */
4804                 ata_port_printk(ap, KERN_WARNING, "irq trap\n");
4805                 return 1;
4806         }
4807 #endif
4808         return 0;       /* irq not handled */
4809 }
4810
4811 /**
4812  *      ata_interrupt - Default ATA host interrupt handler
4813  *      @irq: irq line (unused)
4814  *      @dev_instance: pointer to our ata_host_set information structure
4815  *      @regs: unused
4816  *
4817  *      Default interrupt handler for PCI IDE devices.  Calls
4818  *      ata_host_intr() for each port that is not disabled.
4819  *
4820  *      LOCKING:
4821  *      Obtains host_set lock during operation.
4822  *
4823  *      RETURNS:
4824  *      IRQ_NONE or IRQ_HANDLED.
4825  */
4826
4827 irqreturn_t ata_interrupt (int irq, void *dev_instance, struct pt_regs *regs)
4828 {
4829         struct ata_host_set *host_set = dev_instance;
4830         unsigned int i;
4831         unsigned int handled = 0;
4832         unsigned long flags;
4833
4834         /* TODO: make _irqsave conditional on x86 PCI IDE legacy mode */
4835         spin_lock_irqsave(&host_set->lock, flags);
4836
4837         for (i = 0; i < host_set->n_ports; i++) {
4838                 struct ata_port *ap;
4839
4840                 ap = host_set->ports[i];
4841                 if (ap &&
4842                     !(ap->flags & ATA_FLAG_DISABLED)) {
4843                         struct ata_queued_cmd *qc;
4844
4845                         qc = ata_qc_from_tag(ap, ap->active_tag);
4846                         if (qc && (!(qc->tf.flags & ATA_TFLAG_POLLING)) &&
4847                             (qc->flags & ATA_QCFLAG_ACTIVE))
4848                                 handled |= ata_host_intr(ap, qc);
4849                 }
4850         }
4851
4852         spin_unlock_irqrestore(&host_set->lock, flags);
4853
4854         return IRQ_RETVAL(handled);
4855 }
4856
4857 /**
4858  *      sata_scr_valid - test whether SCRs are accessible
4859  *      @ap: ATA port to test SCR accessibility for
4860  *
4861  *      Test whether SCRs are accessible for @ap.
4862  *
4863  *      LOCKING:
4864  *      None.
4865  *
4866  *      RETURNS:
4867  *      1 if SCRs are accessible, 0 otherwise.
4868  */
4869 int sata_scr_valid(struct ata_port *ap)
4870 {
4871         return ap->cbl == ATA_CBL_SATA && ap->ops->scr_read;
4872 }
4873
4874 /**
4875  *      sata_scr_read - read SCR register of the specified port
4876  *      @ap: ATA port to read SCR for
4877  *      @reg: SCR to read
4878  *      @val: Place to store read value
4879  *
4880  *      Read SCR register @reg of @ap into *@val.  This function is
4881  *      guaranteed to succeed if the cable type of the port is SATA
4882  *      and the port implements ->scr_read.
4883  *
4884  *      LOCKING:
4885  *      None.
4886  *
4887  *      RETURNS:
4888  *      0 on success, negative errno on failure.
4889  */
4890 int sata_scr_read(struct ata_port *ap, int reg, u32 *val)
4891 {
4892         if (sata_scr_valid(ap)) {
4893                 *val = ap->ops->scr_read(ap, reg);
4894                 return 0;
4895         }
4896         return -EOPNOTSUPP;
4897 }
4898
4899 /**
4900  *      sata_scr_write - write SCR register of the specified port
4901  *      @ap: ATA port to write SCR for
4902  *      @reg: SCR to write
4903  *      @val: value to write
4904  *
4905  *      Write @val to SCR register @reg of @ap.  This function is
4906  *      guaranteed to succeed if the cable type of the port is SATA
4907  *      and the port implements ->scr_read.
4908  *
4909  *      LOCKING:
4910  *      None.
4911  *
4912  *      RETURNS:
4913  *      0 on success, negative errno on failure.
4914  */
4915 int sata_scr_write(struct ata_port *ap, int reg, u32 val)
4916 {
4917         if (sata_scr_valid(ap)) {
4918                 ap->ops->scr_write(ap, reg, val);
4919                 return 0;
4920         }
4921         return -EOPNOTSUPP;
4922 }
4923
4924 /**
4925  *      sata_scr_write_flush - write SCR register of the specified port and flush
4926  *      @ap: ATA port to write SCR for
4927  *      @reg: SCR to write
4928  *      @val: value to write
4929  *
4930  *      This function is identical to sata_scr_write() except that this
4931  *      function performs flush after writing to the register.
4932  *
4933  *      LOCKING:
4934  *      None.
4935  *
4936  *      RETURNS:
4937  *      0 on success, negative errno on failure.
4938  */
4939 int sata_scr_write_flush(struct ata_port *ap, int reg, u32 val)
4940 {
4941         if (sata_scr_valid(ap)) {
4942                 ap->ops->scr_write(ap, reg, val);
4943                 ap->ops->scr_read(ap, reg);
4944                 return 0;
4945         }
4946         return -EOPNOTSUPP;
4947 }
4948
4949 /**
4950  *      ata_port_online - test whether the given port is online
4951  *      @ap: ATA port to test
4952  *
4953  *      Test whether @ap is online.  Note that this function returns 0
4954  *      if online status of @ap cannot be obtained, so
4955  *      ata_port_online(ap) != !ata_port_offline(ap).
4956  *
4957  *      LOCKING:
4958  *      None.
4959  *
4960  *      RETURNS:
4961  *      1 if the port online status is available and online.
4962  */
4963 int ata_port_online(struct ata_port *ap)
4964 {
4965         u32 sstatus;
4966
4967         if (!sata_scr_read(ap, SCR_STATUS, &sstatus) && (sstatus & 0xf) == 0x3)
4968                 return 1;
4969         return 0;
4970 }
4971
4972 /**
4973  *      ata_port_offline - test whether the given port is offline
4974  *      @ap: ATA port to test
4975  *
4976  *      Test whether @ap is offline.  Note that this function returns
4977  *      0 if offline status of @ap cannot be obtained, so
4978  *      ata_port_online(ap) != !ata_port_offline(ap).
4979  *
4980  *      LOCKING:
4981  *      None.
4982  *
4983  *      RETURNS:
4984  *      1 if the port offline status is available and offline.
4985  */
4986 int ata_port_offline(struct ata_port *ap)
4987 {
4988         u32 sstatus;
4989
4990         if (!sata_scr_read(ap, SCR_STATUS, &sstatus) && (sstatus & 0xf) != 0x3)
4991                 return 1;
4992         return 0;
4993 }
4994
4995 int ata_flush_cache(struct ata_device *dev)
4996 {
4997         unsigned int err_mask;
4998         u8 cmd;
4999
5000         if (!ata_try_flush_cache(dev))
5001                 return 0;
5002
5003         if (ata_id_has_flush_ext(dev->id))
5004                 cmd = ATA_CMD_FLUSH_EXT;
5005         else
5006                 cmd = ATA_CMD_FLUSH;
5007
5008         err_mask = ata_do_simple_cmd(dev, cmd);
5009         if (err_mask) {
5010                 ata_dev_printk(dev, KERN_ERR, "failed to flush cache\n");
5011                 return -EIO;
5012         }
5013
5014         return 0;
5015 }
5016
5017 static int ata_host_set_request_pm(struct ata_host_set *host_set,
5018                                    pm_message_t mesg, unsigned int action,
5019                                    unsigned int ehi_flags, int wait)
5020 {
5021         unsigned long flags;
5022         int i, rc;
5023
5024         for (i = 0; i < host_set->n_ports; i++) {
5025                 struct ata_port *ap = host_set->ports[i];
5026
5027                 /* Previous resume operation might still be in
5028                  * progress.  Wait for PM_PENDING to clear.
5029                  */
5030                 if (ap->pflags & ATA_PFLAG_PM_PENDING) {
5031                         ata_port_wait_eh(ap);
5032                         WARN_ON(ap->pflags & ATA_PFLAG_PM_PENDING);
5033                 }
5034
5035                 /* request PM ops to EH */
5036                 spin_lock_irqsave(ap->lock, flags);
5037
5038                 ap->pm_mesg = mesg;
5039                 if (wait) {
5040                         rc = 0;
5041                         ap->pm_result = &rc;
5042                 }
5043
5044                 ap->pflags |= ATA_PFLAG_PM_PENDING;
5045                 ap->eh_info.action |= action;
5046                 ap->eh_info.flags |= ehi_flags;
5047
5048                 ata_port_schedule_eh(ap);
5049
5050                 spin_unlock_irqrestore(ap->lock, flags);
5051
5052                 /* wait and check result */
5053                 if (wait) {
5054                         ata_port_wait_eh(ap);
5055                         WARN_ON(ap->pflags & ATA_PFLAG_PM_PENDING);
5056                         if (rc)
5057                                 return rc;
5058                 }
5059         }
5060
5061         return 0;
5062 }
5063
5064 /**
5065  *      ata_host_set_suspend - suspend host_set
5066  *      @host_set: host_set to suspend
5067  *      @mesg: PM message
5068  *
5069  *      Suspend @host_set.  Actual operation is performed by EH.  This
5070  *      function requests EH to perform PM operations and waits for EH
5071  *      to finish.
5072  *
5073  *      LOCKING:
5074  *      Kernel thread context (may sleep).
5075  *
5076  *      RETURNS:
5077  *      0 on success, -errno on failure.
5078  */
5079 int ata_host_set_suspend(struct ata_host_set *host_set, pm_message_t mesg)
5080 {
5081         int i, j, rc;
5082
5083         rc = ata_host_set_request_pm(host_set, mesg, 0, ATA_EHI_QUIET, 1);
5084         if (rc)
5085                 goto fail;
5086
5087         /* EH is quiescent now.  Fail if we have any ready device.
5088          * This happens if hotplug occurs between completion of device
5089          * suspension and here.
5090          */
5091         for (i = 0; i < host_set->n_ports; i++) {
5092                 struct ata_port *ap = host_set->ports[i];
5093
5094                 for (j = 0; j < ATA_MAX_DEVICES; j++) {
5095                         struct ata_device *dev = &ap->device[j];
5096
5097                         if (ata_dev_ready(dev)) {
5098                                 ata_port_printk(ap, KERN_WARNING,
5099                                                 "suspend failed, device %d "
5100                                                 "still active\n", dev->devno);
5101                                 rc = -EBUSY;
5102                                 goto fail;
5103                         }
5104                 }
5105         }
5106
5107         host_set->dev->power.power_state = mesg;
5108         return 0;
5109
5110  fail:
5111         ata_host_set_resume(host_set);
5112         return rc;
5113 }
5114
5115 /**
5116  *      ata_host_set_resume - resume host_set
5117  *      @host_set: host_set to resume
5118  *
5119  *      Resume @host_set.  Actual operation is performed by EH.  This
5120  *      function requests EH to perform PM operations and returns.
5121  *      Note that all resume operations are performed parallely.
5122  *
5123  *      LOCKING:
5124  *      Kernel thread context (may sleep).
5125  */
5126 void ata_host_set_resume(struct ata_host_set *host_set)
5127 {
5128         ata_host_set_request_pm(host_set, PMSG_ON, ATA_EH_SOFTRESET,
5129                                 ATA_EHI_NO_AUTOPSY | ATA_EHI_QUIET, 0);
5130         host_set->dev->power.power_state = PMSG_ON;
5131 }
5132
5133 /**
5134  *      ata_port_start - Set port up for dma.
5135  *      @ap: Port to initialize
5136  *
5137  *      Called just after data structures for each port are
5138  *      initialized.  Allocates space for PRD table.
5139  *
5140  *      May be used as the port_start() entry in ata_port_operations.
5141  *
5142  *      LOCKING:
5143  *      Inherited from caller.
5144  */
5145
5146 int ata_port_start (struct ata_port *ap)
5147 {
5148         struct device *dev = ap->dev;
5149         int rc;
5150
5151         ap->prd = dma_alloc_coherent(dev, ATA_PRD_TBL_SZ, &ap->prd_dma, GFP_KERNEL);
5152         if (!ap->prd)
5153                 return -ENOMEM;
5154
5155         rc = ata_pad_alloc(ap, dev);
5156         if (rc) {
5157                 dma_free_coherent(dev, ATA_PRD_TBL_SZ, ap->prd, ap->prd_dma);
5158                 return rc;
5159         }
5160
5161         DPRINTK("prd alloc, virt %p, dma %llx\n", ap->prd, (unsigned long long) ap->prd_dma);
5162
5163         return 0;
5164 }
5165
5166
5167 /**
5168  *      ata_port_stop - Undo ata_port_start()
5169  *      @ap: Port to shut down
5170  *
5171  *      Frees the PRD table.
5172  *
5173  *      May be used as the port_stop() entry in ata_port_operations.
5174  *
5175  *      LOCKING:
5176  *      Inherited from caller.
5177  */
5178
5179 void ata_port_stop (struct ata_port *ap)
5180 {
5181         struct device *dev = ap->dev;
5182
5183         dma_free_coherent(dev, ATA_PRD_TBL_SZ, ap->prd, ap->prd_dma);
5184         ata_pad_free(ap, dev);
5185 }
5186
5187 void ata_host_stop (struct ata_host_set *host_set)
5188 {
5189         if (host_set->mmio_base)
5190                 iounmap(host_set->mmio_base);
5191 }
5192
5193 /**
5194  *      ata_dev_init - Initialize an ata_device structure
5195  *      @dev: Device structure to initialize
5196  *
5197  *      Initialize @dev in preparation for probing.
5198  *
5199  *      LOCKING:
5200  *      Inherited from caller.
5201  */
5202 void ata_dev_init(struct ata_device *dev)
5203 {
5204         struct ata_port *ap = dev->ap;
5205         unsigned long flags;
5206
5207         /* SATA spd limit is bound to the first device */
5208         ap->sata_spd_limit = ap->hw_sata_spd_limit;
5209
5210         /* High bits of dev->flags are used to record warm plug
5211          * requests which occur asynchronously.  Synchronize using
5212          * host_set lock.
5213          */
5214         spin_lock_irqsave(ap->lock, flags);
5215         dev->flags &= ~ATA_DFLAG_INIT_MASK;
5216         spin_unlock_irqrestore(ap->lock, flags);
5217
5218         memset((void *)dev + ATA_DEVICE_CLEAR_OFFSET, 0,
5219                sizeof(*dev) - ATA_DEVICE_CLEAR_OFFSET);
5220         dev->pio_mask = UINT_MAX;
5221         dev->mwdma_mask = UINT_MAX;
5222         dev->udma_mask = UINT_MAX;
5223 }
5224
5225 /**
5226  *      ata_host_init - Initialize an ata_port structure
5227  *      @ap: Structure to initialize
5228  *      @host: associated SCSI mid-layer structure
5229  *      @host_set: Collection of hosts to which @ap belongs
5230  *      @ent: Probe information provided by low-level driver
5231  *      @port_no: Port number associated with this ata_port
5232  *
5233  *      Initialize a new ata_port structure, and its associated
5234  *      scsi_host.
5235  *
5236  *      LOCKING:
5237  *      Inherited from caller.
5238  */
5239 static void ata_host_init(struct ata_port *ap, struct Scsi_Host *host,
5240                           struct ata_host_set *host_set,
5241                           const struct ata_probe_ent *ent, unsigned int port_no)
5242 {
5243         unsigned int i;
5244
5245         host->max_id = 16;
5246         host->max_lun = 1;
5247         host->max_channel = 1;
5248         host->unique_id = ata_unique_id++;
5249         host->max_cmd_len = 12;
5250
5251         ap->lock = &host_set->lock;
5252         ap->flags = ATA_FLAG_DISABLED;
5253         ap->id = host->unique_id;
5254         ap->host = host;
5255         ap->ctl = ATA_DEVCTL_OBS;
5256         ap->host_set = host_set;
5257         ap->dev = ent->dev;
5258         ap->port_no = port_no;
5259         ap->hard_port_no =
5260                 ent->legacy_mode ? ent->hard_port_no : port_no;
5261         ap->pio_mask = ent->pio_mask;
5262         ap->mwdma_mask = ent->mwdma_mask;
5263         ap->udma_mask = ent->udma_mask;
5264         ap->flags |= ent->host_flags;
5265         ap->ops = ent->port_ops;
5266         ap->hw_sata_spd_limit = UINT_MAX;
5267         ap->active_tag = ATA_TAG_POISON;
5268         ap->last_ctl = 0xFF;
5269
5270 #if defined(ATA_VERBOSE_DEBUG)
5271         /* turn on all debugging levels */
5272         ap->msg_enable = 0x00FF;
5273 #elif defined(ATA_DEBUG)
5274         ap->msg_enable = ATA_MSG_DRV | ATA_MSG_INFO | ATA_MSG_CTL | ATA_MSG_WARN | ATA_MSG_ERR;
5275 #else
5276         ap->msg_enable = ATA_MSG_DRV | ATA_MSG_ERR | ATA_MSG_WARN;
5277 #endif
5278
5279         INIT_WORK(&ap->port_task, NULL, NULL);
5280         INIT_WORK(&ap->hotplug_task, ata_scsi_hotplug, ap);
5281         INIT_WORK(&ap->scsi_rescan_task, ata_scsi_dev_rescan, ap);
5282         INIT_LIST_HEAD(&ap->eh_done_q);
5283         init_waitqueue_head(&ap->eh_wait_q);
5284
5285         /* set cable type */
5286         ap->cbl = ATA_CBL_NONE;
5287         if (ap->flags & ATA_FLAG_SATA)
5288                 ap->cbl = ATA_CBL_SATA;
5289
5290         for (i = 0; i < ATA_MAX_DEVICES; i++) {
5291                 struct ata_device *dev = &ap->device[i];
5292                 dev->ap = ap;
5293                 dev->devno = i;
5294                 ata_dev_init(dev);
5295         }
5296
5297 #ifdef ATA_IRQ_TRAP
5298         ap->stats.unhandled_irq = 1;
5299         ap->stats.idle_irq = 1;
5300 #endif
5301
5302         memcpy(&ap->ioaddr, &ent->port[port_no], sizeof(struct ata_ioports));
5303 }
5304
5305 /**
5306  *      ata_host_add - Attach low-level ATA driver to system
5307  *      @ent: Information provided by low-level driver
5308  *      @host_set: Collections of ports to which we add
5309  *      @port_no: Port number associated with this host
5310  *
5311  *      Attach low-level ATA driver to system.
5312  *
5313  *      LOCKING:
5314  *      PCI/etc. bus probe sem.
5315  *
5316  *      RETURNS:
5317  *      New ata_port on success, for NULL on error.
5318  */
5319
5320 static struct ata_port * ata_host_add(const struct ata_probe_ent *ent,
5321                                       struct ata_host_set *host_set,
5322                                       unsigned int port_no)
5323 {
5324         struct Scsi_Host *host;
5325         struct ata_port *ap;
5326         int rc;
5327
5328         DPRINTK("ENTER\n");
5329
5330         if (!ent->port_ops->error_handler &&
5331             !(ent->host_flags & (ATA_FLAG_SATA_RESET | ATA_FLAG_SRST))) {
5332                 printk(KERN_ERR "ata%u: no reset mechanism available\n",
5333                        port_no);
5334                 return NULL;
5335         }
5336
5337         host = scsi_host_alloc(ent->sht, sizeof(struct ata_port));
5338         if (!host)
5339                 return NULL;
5340
5341         host->transportt = &ata_scsi_transport_template;
5342
5343         ap = ata_shost_to_port(host);
5344
5345         ata_host_init(ap, host, host_set, ent, port_no);
5346
5347         rc = ap->ops->port_start(ap);
5348         if (rc)
5349                 goto err_out;
5350
5351         return ap;
5352
5353 err_out:
5354         scsi_host_put(host);
5355         return NULL;
5356 }
5357
5358 /**
5359  *      ata_device_add - Register hardware device with ATA and SCSI layers
5360  *      @ent: Probe information describing hardware device to be registered
5361  *
5362  *      This function processes the information provided in the probe
5363  *      information struct @ent, allocates the necessary ATA and SCSI
5364  *      host information structures, initializes them, and registers
5365  *      everything with requisite kernel subsystems.
5366  *
5367  *      This function requests irqs, probes the ATA bus, and probes
5368  *      the SCSI bus.
5369  *
5370  *      LOCKING:
5371  *      PCI/etc. bus probe sem.
5372  *
5373  *      RETURNS:
5374  *      Number of ports registered.  Zero on error (no ports registered).
5375  */
5376 int ata_device_add(const struct ata_probe_ent *ent)
5377 {
5378         unsigned int count = 0, i;
5379         struct device *dev = ent->dev;
5380         struct ata_host_set *host_set;
5381         int rc;
5382
5383         DPRINTK("ENTER\n");
5384         /* alloc a container for our list of ATA ports (buses) */
5385         host_set = kzalloc(sizeof(struct ata_host_set) +
5386                            (ent->n_ports * sizeof(void *)), GFP_KERNEL);
5387         if (!host_set)
5388                 return 0;
5389         spin_lock_init(&host_set->lock);
5390
5391         host_set->dev = dev;
5392         host_set->n_ports = ent->n_ports;
5393         host_set->irq = ent->irq;
5394         host_set->mmio_base = ent->mmio_base;
5395         host_set->private_data = ent->private_data;
5396         host_set->ops = ent->port_ops;
5397         host_set->flags = ent->host_set_flags;
5398
5399         /* register each port bound to this device */
5400         for (i = 0; i < ent->n_ports; i++) {
5401                 struct ata_port *ap;
5402                 unsigned long xfer_mode_mask;
5403
5404                 ap = ata_host_add(ent, host_set, i);
5405                 if (!ap)
5406                         goto err_out;
5407
5408                 host_set->ports[i] = ap;
5409                 xfer_mode_mask =(ap->udma_mask << ATA_SHIFT_UDMA) |
5410                                 (ap->mwdma_mask << ATA_SHIFT_MWDMA) |
5411                                 (ap->pio_mask << ATA_SHIFT_PIO);
5412
5413                 /* print per-port info to dmesg */
5414                 ata_port_printk(ap, KERN_INFO, "%cATA max %s cmd 0x%lX "
5415                                 "ctl 0x%lX bmdma 0x%lX irq %lu\n",
5416                                 ap->flags & ATA_FLAG_SATA ? 'S' : 'P',
5417                                 ata_mode_string(xfer_mode_mask),
5418                                 ap->ioaddr.cmd_addr,
5419                                 ap->ioaddr.ctl_addr,
5420                                 ap->ioaddr.bmdma_addr,
5421                                 ent->irq);
5422
5423                 ata_chk_status(ap);
5424                 host_set->ops->irq_clear(ap);
5425                 ata_eh_freeze_port(ap); /* freeze port before requesting IRQ */
5426                 count++;
5427         }
5428
5429         if (!count)
5430                 goto err_free_ret;
5431
5432         /* obtain irq, that is shared between channels */
5433         rc = request_irq(ent->irq, ent->port_ops->irq_handler, ent->irq_flags,
5434                          DRV_NAME, host_set);
5435         if (rc) {
5436                 dev_printk(KERN_ERR, dev, "irq %lu request failed: %d\n",
5437                            ent->irq, rc);
5438                 goto err_out;
5439         }
5440
5441         /* perform each probe synchronously */
5442         DPRINTK("probe begin\n");
5443         for (i = 0; i < count; i++) {
5444                 struct ata_port *ap;
5445                 u32 scontrol;
5446                 int rc;
5447
5448                 ap = host_set->ports[i];
5449
5450                 /* init sata_spd_limit to the current value */
5451                 if (sata_scr_read(ap, SCR_CONTROL, &scontrol) == 0) {
5452                         int spd = (scontrol >> 4) & 0xf;
5453                         ap->hw_sata_spd_limit &= (1 << spd) - 1;
5454                 }
5455                 ap->sata_spd_limit = ap->hw_sata_spd_limit;
5456
5457                 rc = scsi_add_host(ap->host, dev);
5458                 if (rc) {
5459                         ata_port_printk(ap, KERN_ERR, "scsi_add_host failed\n");
5460                         /* FIXME: do something useful here */
5461                         /* FIXME: handle unconditional calls to
5462                          * scsi_scan_host and ata_host_remove, below,
5463                          * at the very least
5464                          */
5465                 }
5466
5467                 if (ap->ops->error_handler) {
5468                         struct ata_eh_info *ehi = &ap->eh_info;
5469                         unsigned long flags;
5470
5471                         ata_port_probe(ap);
5472
5473                         /* kick EH for boot probing */
5474                         spin_lock_irqsave(ap->lock, flags);
5475
5476                         ehi->probe_mask = (1 << ATA_MAX_DEVICES) - 1;
5477                         ehi->action |= ATA_EH_SOFTRESET;
5478                         ehi->flags |= ATA_EHI_NO_AUTOPSY | ATA_EHI_QUIET;
5479
5480                         ap->pflags |= ATA_PFLAG_LOADING;
5481                         ata_port_schedule_eh(ap);
5482
5483                         spin_unlock_irqrestore(ap->lock, flags);
5484
5485                         /* wait for EH to finish */
5486                         ata_port_wait_eh(ap);
5487                 } else {
5488                         DPRINTK("ata%u: bus probe begin\n", ap->id);
5489                         rc = ata_bus_probe(ap);
5490                         DPRINTK("ata%u: bus probe end\n", ap->id);
5491
5492                         if (rc) {
5493                                 /* FIXME: do something useful here?
5494                                  * Current libata behavior will
5495                                  * tear down everything when
5496                                  * the module is removed
5497                                  * or the h/w is unplugged.
5498                                  */
5499                         }
5500                 }
5501         }
5502
5503         /* probes are done, now scan each port's disk(s) */
5504         DPRINTK("host probe begin\n");
5505         for (i = 0; i < count; i++) {
5506                 struct ata_port *ap = host_set->ports[i];
5507
5508                 ata_scsi_scan_host(ap);
5509         }
5510
5511         dev_set_drvdata(dev, host_set);
5512
5513         VPRINTK("EXIT, returning %u\n", ent->n_ports);
5514         return ent->n_ports; /* success */
5515
5516 err_out:
5517         for (i = 0; i < count; i++) {
5518                 struct ata_port *ap = host_set->ports[i];
5519                 if (ap) {
5520                         ap->ops->port_stop(ap);
5521                         scsi_host_put(ap->host);
5522                 }
5523         }
5524 err_free_ret:
5525         kfree(host_set);
5526         VPRINTK("EXIT, returning 0\n");
5527         return 0;
5528 }
5529
5530 /**
5531  *      ata_port_detach - Detach ATA port in prepration of device removal
5532  *      @ap: ATA port to be detached
5533  *
5534  *      Detach all ATA devices and the associated SCSI devices of @ap;
5535  *      then, remove the associated SCSI host.  @ap is guaranteed to
5536  *      be quiescent on return from this function.
5537  *
5538  *      LOCKING:
5539  *      Kernel thread context (may sleep).
5540  */
5541 void ata_port_detach(struct ata_port *ap)
5542 {
5543         unsigned long flags;
5544         int i;
5545
5546         if (!ap->ops->error_handler)
5547                 goto skip_eh;
5548
5549         /* tell EH we're leaving & flush EH */
5550         spin_lock_irqsave(ap->lock, flags);
5551         ap->pflags |= ATA_PFLAG_UNLOADING;
5552         spin_unlock_irqrestore(ap->lock, flags);
5553
5554         ata_port_wait_eh(ap);
5555
5556         /* EH is now guaranteed to see UNLOADING, so no new device
5557          * will be attached.  Disable all existing devices.
5558          */
5559         spin_lock_irqsave(ap->lock, flags);
5560
5561         for (i = 0; i < ATA_MAX_DEVICES; i++)
5562                 ata_dev_disable(&ap->device[i]);
5563
5564         spin_unlock_irqrestore(ap->lock, flags);
5565
5566         /* Final freeze & EH.  All in-flight commands are aborted.  EH
5567          * will be skipped and retrials will be terminated with bad
5568          * target.
5569          */
5570         spin_lock_irqsave(ap->lock, flags);
5571         ata_port_freeze(ap);    /* won't be thawed */
5572         spin_unlock_irqrestore(ap->lock, flags);
5573
5574         ata_port_wait_eh(ap);
5575
5576         /* Flush hotplug task.  The sequence is similar to
5577          * ata_port_flush_task().
5578          */
5579         flush_workqueue(ata_aux_wq);
5580         cancel_delayed_work(&ap->hotplug_task);
5581         flush_workqueue(ata_aux_wq);
5582
5583  skip_eh:
5584         /* remove the associated SCSI host */
5585         scsi_remove_host(ap->host);
5586 }
5587
5588 /**
5589  *      ata_host_set_remove - PCI layer callback for device removal
5590  *      @host_set: ATA host set that was removed
5591  *
5592  *      Unregister all objects associated with this host set. Free those
5593  *      objects.
5594  *
5595  *      LOCKING:
5596  *      Inherited from calling layer (may sleep).
5597  */
5598
5599 void ata_host_set_remove(struct ata_host_set *host_set)
5600 {
5601         unsigned int i;
5602
5603         for (i = 0; i < host_set->n_ports; i++)
5604                 ata_port_detach(host_set->ports[i]);
5605
5606         free_irq(host_set->irq, host_set);
5607
5608         for (i = 0; i < host_set->n_ports; i++) {
5609                 struct ata_port *ap = host_set->ports[i];
5610
5611                 ata_scsi_release(ap->host);
5612
5613                 if ((ap->flags & ATA_FLAG_NO_LEGACY) == 0) {
5614                         struct ata_ioports *ioaddr = &ap->ioaddr;
5615
5616                         if (ioaddr->cmd_addr == 0x1f0)
5617                                 release_region(0x1f0, 8);
5618                         else if (ioaddr->cmd_addr == 0x170)
5619                                 release_region(0x170, 8);
5620                 }
5621
5622                 scsi_host_put(ap->host);
5623         }
5624
5625         if (host_set->ops->host_stop)
5626                 host_set->ops->host_stop(host_set);
5627
5628         kfree(host_set);
5629 }
5630
5631 /**
5632  *      ata_scsi_release - SCSI layer callback hook for host unload
5633  *      @host: libata host to be unloaded
5634  *
5635  *      Performs all duties necessary to shut down a libata port...
5636  *      Kill port kthread, disable port, and release resources.
5637  *
5638  *      LOCKING:
5639  *      Inherited from SCSI layer.
5640  *
5641  *      RETURNS:
5642  *      One.
5643  */
5644
5645 int ata_scsi_release(struct Scsi_Host *host)
5646 {
5647         struct ata_port *ap = ata_shost_to_port(host);
5648
5649         DPRINTK("ENTER\n");
5650
5651         ap->ops->port_disable(ap);
5652         ap->ops->port_stop(ap);
5653
5654         DPRINTK("EXIT\n");
5655         return 1;
5656 }
5657
5658 /**
5659  *      ata_std_ports - initialize ioaddr with standard port offsets.
5660  *      @ioaddr: IO address structure to be initialized
5661  *
5662  *      Utility function which initializes data_addr, error_addr,
5663  *      feature_addr, nsect_addr, lbal_addr, lbam_addr, lbah_addr,
5664  *      device_addr, status_addr, and command_addr to standard offsets
5665  *      relative to cmd_addr.
5666  *
5667  *      Does not set ctl_addr, altstatus_addr, bmdma_addr, or scr_addr.
5668  */
5669
5670 void ata_std_ports(struct ata_ioports *ioaddr)
5671 {
5672         ioaddr->data_addr = ioaddr->cmd_addr + ATA_REG_DATA;
5673         ioaddr->error_addr = ioaddr->cmd_addr + ATA_REG_ERR;
5674         ioaddr->feature_addr = ioaddr->cmd_addr + ATA_REG_FEATURE;
5675         ioaddr->nsect_addr = ioaddr->cmd_addr + ATA_REG_NSECT;
5676         ioaddr->lbal_addr = ioaddr->cmd_addr + ATA_REG_LBAL;
5677         ioaddr->lbam_addr = ioaddr->cmd_addr + ATA_REG_LBAM;
5678         ioaddr->lbah_addr = ioaddr->cmd_addr + ATA_REG_LBAH;
5679         ioaddr->device_addr = ioaddr->cmd_addr + ATA_REG_DEVICE;
5680         ioaddr->status_addr = ioaddr->cmd_addr + ATA_REG_STATUS;
5681         ioaddr->command_addr = ioaddr->cmd_addr + ATA_REG_CMD;
5682 }
5683
5684
5685 #ifdef CONFIG_PCI
5686
5687 void ata_pci_host_stop (struct ata_host_set *host_set)
5688 {
5689         struct pci_dev *pdev = to_pci_dev(host_set->dev);
5690
5691         pci_iounmap(pdev, host_set->mmio_base);
5692 }
5693
5694 /**
5695  *      ata_pci_remove_one - PCI layer callback for device removal
5696  *      @pdev: PCI device that was removed
5697  *
5698  *      PCI layer indicates to libata via this hook that
5699  *      hot-unplug or module unload event has occurred.
5700  *      Handle this by unregistering all objects associated
5701  *      with this PCI device.  Free those objects.  Then finally
5702  *      release PCI resources and disable device.
5703  *
5704  *      LOCKING:
5705  *      Inherited from PCI layer (may sleep).
5706  */
5707
5708 void ata_pci_remove_one (struct pci_dev *pdev)
5709 {
5710         struct device *dev = pci_dev_to_dev(pdev);
5711         struct ata_host_set *host_set = dev_get_drvdata(dev);
5712         struct ata_host_set *host_set2 = host_set->next;
5713
5714         ata_host_set_remove(host_set);
5715         if (host_set2)
5716                 ata_host_set_remove(host_set2);
5717
5718         pci_release_regions(pdev);
5719         pci_disable_device(pdev);
5720         dev_set_drvdata(dev, NULL);
5721 }
5722
5723 /* move to PCI subsystem */
5724 int pci_test_config_bits(struct pci_dev *pdev, const struct pci_bits *bits)
5725 {
5726         unsigned long tmp = 0;
5727
5728         switch (bits->width) {
5729         case 1: {
5730                 u8 tmp8 = 0;
5731                 pci_read_config_byte(pdev, bits->reg, &tmp8);
5732                 tmp = tmp8;
5733                 break;
5734         }
5735         case 2: {
5736                 u16 tmp16 = 0;
5737                 pci_read_config_word(pdev, bits->reg, &tmp16);
5738                 tmp = tmp16;
5739                 break;
5740         }
5741         case 4: {
5742                 u32 tmp32 = 0;
5743                 pci_read_config_dword(pdev, bits->reg, &tmp32);
5744                 tmp = tmp32;
5745                 break;
5746         }
5747
5748         default:
5749                 return -EINVAL;
5750         }
5751
5752         tmp &= bits->mask;
5753
5754         return (tmp == bits->val) ? 1 : 0;
5755 }
5756
5757 void ata_pci_device_do_suspend(struct pci_dev *pdev, pm_message_t state)
5758 {
5759         pci_save_state(pdev);
5760
5761         if (state.event == PM_EVENT_SUSPEND) {
5762                 pci_disable_device(pdev);
5763                 pci_set_power_state(pdev, PCI_D3hot);
5764         }
5765 }
5766
5767 void ata_pci_device_do_resume(struct pci_dev *pdev)
5768 {
5769         pci_set_power_state(pdev, PCI_D0);
5770         pci_restore_state(pdev);
5771         pci_enable_device(pdev);
5772         pci_set_master(pdev);
5773 }
5774
5775 int ata_pci_device_suspend(struct pci_dev *pdev, pm_message_t state)
5776 {
5777         struct ata_host_set *host_set = dev_get_drvdata(&pdev->dev);
5778         int rc = 0;
5779
5780         rc = ata_host_set_suspend(host_set, state);
5781         if (rc)
5782                 return rc;
5783
5784         if (host_set->next) {
5785                 rc = ata_host_set_suspend(host_set->next, state);
5786                 if (rc) {
5787                         ata_host_set_resume(host_set);
5788                         return rc;
5789                 }
5790         }
5791
5792         ata_pci_device_do_suspend(pdev, state);
5793
5794         return 0;
5795 }
5796
5797 int ata_pci_device_resume(struct pci_dev *pdev)
5798 {
5799         struct ata_host_set *host_set = dev_get_drvdata(&pdev->dev);
5800
5801         ata_pci_device_do_resume(pdev);
5802         ata_host_set_resume(host_set);
5803         if (host_set->next)
5804                 ata_host_set_resume(host_set->next);
5805
5806         return 0;
5807 }
5808 #endif /* CONFIG_PCI */
5809
5810
5811 static int __init ata_init(void)
5812 {
5813         ata_probe_timeout *= HZ;
5814         ata_wq = create_workqueue("ata");
5815         if (!ata_wq)
5816                 return -ENOMEM;
5817
5818         ata_aux_wq = create_singlethread_workqueue("ata_aux");
5819         if (!ata_aux_wq) {
5820                 destroy_workqueue(ata_wq);
5821                 return -ENOMEM;
5822         }
5823
5824         printk(KERN_DEBUG "libata version " DRV_VERSION " loaded.\n");
5825         return 0;
5826 }
5827
5828 static void __exit ata_exit(void)
5829 {
5830         destroy_workqueue(ata_wq);
5831         destroy_workqueue(ata_aux_wq);
5832 }
5833
5834 module_init(ata_init);
5835 module_exit(ata_exit);
5836
5837 static unsigned long ratelimit_time;
5838 static DEFINE_SPINLOCK(ata_ratelimit_lock);
5839
5840 int ata_ratelimit(void)
5841 {
5842         int rc;
5843         unsigned long flags;
5844
5845         spin_lock_irqsave(&ata_ratelimit_lock, flags);
5846
5847         if (time_after(jiffies, ratelimit_time)) {
5848                 rc = 1;
5849                 ratelimit_time = jiffies + (HZ/5);
5850         } else
5851                 rc = 0;
5852
5853         spin_unlock_irqrestore(&ata_ratelimit_lock, flags);
5854
5855         return rc;
5856 }
5857
5858 /**
5859  *      ata_wait_register - wait until register value changes
5860  *      @reg: IO-mapped register
5861  *      @mask: Mask to apply to read register value
5862  *      @val: Wait condition
5863  *      @interval_msec: polling interval in milliseconds
5864  *      @timeout_msec: timeout in milliseconds
5865  *
5866  *      Waiting for some bits of register to change is a common
5867  *      operation for ATA controllers.  This function reads 32bit LE
5868  *      IO-mapped register @reg and tests for the following condition.
5869  *
5870  *      (*@reg & mask) != val
5871  *
5872  *      If the condition is met, it returns; otherwise, the process is
5873  *      repeated after @interval_msec until timeout.
5874  *
5875  *      LOCKING:
5876  *      Kernel thread context (may sleep)
5877  *
5878  *      RETURNS:
5879  *      The final register value.
5880  */
5881 u32 ata_wait_register(void __iomem *reg, u32 mask, u32 val,
5882                       unsigned long interval_msec,
5883                       unsigned long timeout_msec)
5884 {
5885         unsigned long timeout;
5886         u32 tmp;
5887
5888         tmp = ioread32(reg);
5889
5890         /* Calculate timeout _after_ the first read to make sure
5891          * preceding writes reach the controller before starting to
5892          * eat away the timeout.
5893          */
5894         timeout = jiffies + (timeout_msec * HZ) / 1000;
5895
5896         while ((tmp & mask) == val && time_before(jiffies, timeout)) {
5897                 msleep(interval_msec);
5898                 tmp = ioread32(reg);
5899         }
5900
5901         return tmp;
5902 }
5903
5904 /*
5905  * libata is essentially a library of internal helper functions for
5906  * low-level ATA host controller drivers.  As such, the API/ABI is
5907  * likely to change as new drivers are added and updated.
5908  * Do not depend on ABI/API stability.
5909  */
5910
5911 EXPORT_SYMBOL_GPL(sata_deb_timing_normal);
5912 EXPORT_SYMBOL_GPL(sata_deb_timing_hotplug);
5913 EXPORT_SYMBOL_GPL(sata_deb_timing_long);
5914 EXPORT_SYMBOL_GPL(ata_std_bios_param);
5915 EXPORT_SYMBOL_GPL(ata_std_ports);
5916 EXPORT_SYMBOL_GPL(ata_device_add);
5917 EXPORT_SYMBOL_GPL(ata_port_detach);
5918 EXPORT_SYMBOL_GPL(ata_host_set_remove);
5919 EXPORT_SYMBOL_GPL(ata_sg_init);
5920 EXPORT_SYMBOL_GPL(ata_sg_init_one);
5921 EXPORT_SYMBOL_GPL(ata_hsm_move);
5922 EXPORT_SYMBOL_GPL(ata_qc_complete);
5923 EXPORT_SYMBOL_GPL(ata_qc_complete_multiple);
5924 EXPORT_SYMBOL_GPL(ata_qc_issue_prot);
5925 EXPORT_SYMBOL_GPL(ata_tf_load);
5926 EXPORT_SYMBOL_GPL(ata_tf_read);
5927 EXPORT_SYMBOL_GPL(ata_noop_dev_select);
5928 EXPORT_SYMBOL_GPL(ata_std_dev_select);
5929 EXPORT_SYMBOL_GPL(ata_tf_to_fis);
5930 EXPORT_SYMBOL_GPL(ata_tf_from_fis);
5931 EXPORT_SYMBOL_GPL(ata_check_status);
5932 EXPORT_SYMBOL_GPL(ata_altstatus);
5933 EXPORT_SYMBOL_GPL(ata_exec_command);
5934 EXPORT_SYMBOL_GPL(ata_port_start);
5935 EXPORT_SYMBOL_GPL(ata_port_stop);
5936 EXPORT_SYMBOL_GPL(ata_host_stop);
5937 EXPORT_SYMBOL_GPL(ata_interrupt);
5938 EXPORT_SYMBOL_GPL(ata_mmio_data_xfer);
5939 EXPORT_SYMBOL_GPL(ata_pio_data_xfer);
5940 EXPORT_SYMBOL_GPL(ata_pio_data_xfer_noirq);
5941 EXPORT_SYMBOL_GPL(ata_qc_prep);
5942 EXPORT_SYMBOL_GPL(ata_noop_qc_prep);
5943 EXPORT_SYMBOL_GPL(ata_bmdma_setup);
5944 EXPORT_SYMBOL_GPL(ata_bmdma_start);
5945 EXPORT_SYMBOL_GPL(ata_bmdma_irq_clear);
5946 EXPORT_SYMBOL_GPL(ata_bmdma_status);
5947 EXPORT_SYMBOL_GPL(ata_bmdma_stop);
5948 EXPORT_SYMBOL_GPL(ata_bmdma_freeze);
5949 EXPORT_SYMBOL_GPL(ata_bmdma_thaw);
5950 EXPORT_SYMBOL_GPL(ata_bmdma_drive_eh);
5951 EXPORT_SYMBOL_GPL(ata_bmdma_error_handler);
5952 EXPORT_SYMBOL_GPL(ata_bmdma_post_internal_cmd);
5953 EXPORT_SYMBOL_GPL(ata_port_probe);
5954 EXPORT_SYMBOL_GPL(sata_set_spd);
5955 EXPORT_SYMBOL_GPL(sata_phy_debounce);
5956 EXPORT_SYMBOL_GPL(sata_phy_resume);
5957 EXPORT_SYMBOL_GPL(sata_phy_reset);
5958 EXPORT_SYMBOL_GPL(__sata_phy_reset);
5959 EXPORT_SYMBOL_GPL(ata_bus_reset);
5960 EXPORT_SYMBOL_GPL(ata_std_prereset);
5961 EXPORT_SYMBOL_GPL(ata_std_softreset);
5962 EXPORT_SYMBOL_GPL(sata_std_hardreset);
5963 EXPORT_SYMBOL_GPL(ata_std_postreset);
5964 EXPORT_SYMBOL_GPL(ata_dev_revalidate);
5965 EXPORT_SYMBOL_GPL(ata_dev_classify);
5966 EXPORT_SYMBOL_GPL(ata_dev_pair);
5967 EXPORT_SYMBOL_GPL(ata_port_disable);
5968 EXPORT_SYMBOL_GPL(ata_ratelimit);
5969 EXPORT_SYMBOL_GPL(ata_wait_register);
5970 EXPORT_SYMBOL_GPL(ata_busy_sleep);
5971 EXPORT_SYMBOL_GPL(ata_port_queue_task);
5972 EXPORT_SYMBOL_GPL(ata_scsi_ioctl);
5973 EXPORT_SYMBOL_GPL(ata_scsi_queuecmd);
5974 EXPORT_SYMBOL_GPL(ata_scsi_slave_config);
5975 EXPORT_SYMBOL_GPL(ata_scsi_slave_destroy);
5976 EXPORT_SYMBOL_GPL(ata_scsi_change_queue_depth);
5977 EXPORT_SYMBOL_GPL(ata_scsi_release);
5978 EXPORT_SYMBOL_GPL(ata_host_intr);
5979 EXPORT_SYMBOL_GPL(sata_scr_valid);
5980 EXPORT_SYMBOL_GPL(sata_scr_read);
5981 EXPORT_SYMBOL_GPL(sata_scr_write);
5982 EXPORT_SYMBOL_GPL(sata_scr_write_flush);
5983 EXPORT_SYMBOL_GPL(ata_port_online);
5984 EXPORT_SYMBOL_GPL(ata_port_offline);
5985 EXPORT_SYMBOL_GPL(ata_host_set_suspend);
5986 EXPORT_SYMBOL_GPL(ata_host_set_resume);
5987 EXPORT_SYMBOL_GPL(ata_id_string);
5988 EXPORT_SYMBOL_GPL(ata_id_c_string);
5989 EXPORT_SYMBOL_GPL(ata_scsi_simulate);
5990
5991 EXPORT_SYMBOL_GPL(ata_pio_need_iordy);
5992 EXPORT_SYMBOL_GPL(ata_timing_compute);
5993 EXPORT_SYMBOL_GPL(ata_timing_merge);
5994
5995 #ifdef CONFIG_PCI
5996 EXPORT_SYMBOL_GPL(pci_test_config_bits);
5997 EXPORT_SYMBOL_GPL(ata_pci_host_stop);
5998 EXPORT_SYMBOL_GPL(ata_pci_init_native_mode);
5999 EXPORT_SYMBOL_GPL(ata_pci_init_one);
6000 EXPORT_SYMBOL_GPL(ata_pci_remove_one);
6001 EXPORT_SYMBOL_GPL(ata_pci_device_do_suspend);
6002 EXPORT_SYMBOL_GPL(ata_pci_device_do_resume);
6003 EXPORT_SYMBOL_GPL(ata_pci_device_suspend);
6004 EXPORT_SYMBOL_GPL(ata_pci_device_resume);
6005 EXPORT_SYMBOL_GPL(ata_pci_default_filter);
6006 EXPORT_SYMBOL_GPL(ata_pci_clear_simplex);
6007 #endif /* CONFIG_PCI */
6008
6009 EXPORT_SYMBOL_GPL(ata_scsi_device_suspend);
6010 EXPORT_SYMBOL_GPL(ata_scsi_device_resume);
6011
6012 EXPORT_SYMBOL_GPL(ata_eng_timeout);
6013 EXPORT_SYMBOL_GPL(ata_port_schedule_eh);
6014 EXPORT_SYMBOL_GPL(ata_port_abort);
6015 EXPORT_SYMBOL_GPL(ata_port_freeze);
6016 EXPORT_SYMBOL_GPL(ata_eh_freeze_port);
6017 EXPORT_SYMBOL_GPL(ata_eh_thaw_port);
6018 EXPORT_SYMBOL_GPL(ata_eh_qc_complete);
6019 EXPORT_SYMBOL_GPL(ata_eh_qc_retry);
6020 EXPORT_SYMBOL_GPL(ata_do_eh);