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