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