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