]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Merge branch 'upstream-fixes'
authorJeff Garzik <jgarzik@pobox.com>
Wed, 16 Nov 2005 16:07:14 +0000 (11:07 -0500)
committerJeff Garzik <jgarzik@pobox.com>
Wed, 16 Nov 2005 16:07:14 +0000 (11:07 -0500)
drivers/scsi/ahci.c
drivers/scsi/ata_piix.c
drivers/scsi/libata-core.c
drivers/scsi/libata.h
drivers/scsi/sata_promise.c
drivers/scsi/sata_qstor.c
drivers/scsi/sata_sil24.c
drivers/scsi/sata_svw.c
drivers/scsi/sata_sx4.c
drivers/scsi/sata_vsc.c

index 894e7113e0b35200f3463f4b369c97675cb3d65d..83467a05dc8e3e31f150ca2e030746a1e854b5a7 100644 (file)
@@ -48,7 +48,7 @@
 #include <asm/io.h>
 
 #define DRV_NAME       "ahci"
-#define DRV_VERSION    "1.01"
+#define DRV_VERSION    "1.2"
 
 
 enum {
@@ -558,23 +558,25 @@ static void ahci_qc_prep(struct ata_queued_cmd *qc)
        pp->cmd_slot[0].opts |= cpu_to_le32(n_elem << 16);
 }
 
-static void ahci_intr_error(struct ata_port *ap, u32 irq_stat)
+static void ahci_restart_port(struct ata_port *ap, u32 irq_stat)
 {
        void __iomem *mmio = ap->host_set->mmio_base;
        void __iomem *port_mmio = ahci_port_base(mmio, ap->port_no);
        u32 tmp;
        int work;
 
-       printk(KERN_WARNING "ata%u: port reset, "
-              "p_is %x is %x pis %x cmd %x tf %x ss %x se %x\n",
-               ap->id,
-               irq_stat,
-               readl(mmio + HOST_IRQ_STAT),
-               readl(port_mmio + PORT_IRQ_STAT),
-               readl(port_mmio + PORT_CMD),
-               readl(port_mmio + PORT_TFDATA),
-               readl(port_mmio + PORT_SCR_STAT),
-               readl(port_mmio + PORT_SCR_ERR));
+       if ((ap->device[0].class != ATA_DEV_ATAPI) ||
+           ((irq_stat & PORT_IRQ_TF_ERR) == 0))
+               printk(KERN_WARNING "ata%u: port reset, "
+                      "p_is %x is %x pis %x cmd %x tf %x ss %x se %x\n",
+                       ap->id,
+                       irq_stat,
+                       readl(mmio + HOST_IRQ_STAT),
+                       readl(port_mmio + PORT_IRQ_STAT),
+                       readl(port_mmio + PORT_CMD),
+                       readl(port_mmio + PORT_TFDATA),
+                       readl(port_mmio + PORT_SCR_STAT),
+                       readl(port_mmio + PORT_SCR_ERR));
 
        /* stop DMA */
        tmp = readl(port_mmio + PORT_CMD);
@@ -632,7 +634,7 @@ static void ahci_eng_timeout(struct ata_port *ap)
                printk(KERN_ERR "ata%u: BUG: timeout without command\n",
                       ap->id);
        } else {
-               ahci_intr_error(ap, readl(port_mmio + PORT_IRQ_STAT));
+               ahci_restart_port(ap, readl(port_mmio + PORT_IRQ_STAT));
 
                /* hack alert!  We cannot use the supplied completion
                 * function from inside the ->eh_strategy_handler() thread.
@@ -677,7 +679,7 @@ static inline int ahci_host_intr(struct ata_port *ap, struct ata_queued_cmd *qc)
                        err_mask = AC_ERR_HOST_BUS;
 
                /* command processing has stopped due to error; restart */
-               ahci_intr_error(ap, status);
+               ahci_restart_port(ap, status);
 
                if (qc)
                        ata_qc_complete(qc, err_mask);
index 7a1ed94492f91f07b0bfb332eea65d27daec7e46..887b2b9ee4aa251c8aba07775db2e790cced1bcc 100644 (file)
@@ -50,7 +50,7 @@
 #include <linux/libata.h>
 
 #define DRV_NAME       "ata_piix"
-#define DRV_VERSION    "1.04"
+#define DRV_VERSION    "1.05"
 
 enum {
        PIIX_IOCFG              = 0x54, /* IDE I/O configuration register */
index ba1eb8b38e0030a7860187c15a7a405285198e80..bb604dfbdef693fcb23ebc6abe557909d5727240 100644 (file)
@@ -1570,11 +1570,13 @@ int ata_timing_compute(struct ata_device *adev, unsigned short speed,
 
        /*
         * Find the mode. 
-       */
+        */
 
        if (!(s = ata_timing_find_mode(speed)))
                return -EINVAL;
 
+       memcpy(t, s, sizeof(*s));
+
        /*
         * If the drive is an EIDE drive, it can tell us it needs extended
         * PIO/MW_DMA cycle timing.
@@ -1595,7 +1597,7 @@ int ata_timing_compute(struct ata_device *adev, unsigned short speed,
         * Convert the timing to bus clock counts.
         */
 
-       ata_timing_quantize(s, t, T, UT);
+       ata_timing_quantize(t, t, T, UT);
 
        /*
         * Even in DMA/UDMA modes we still use PIO access for IDENTIFY, S.M.A.R.T
index 74a84e0ec0a42d0b077f60bcd420f2651a9e6cad..8ebaa694d18e423ba88545127f806d71b781da34 100644 (file)
@@ -29,7 +29,7 @@
 #define __LIBATA_H__
 
 #define DRV_NAME       "libata"
-#define DRV_VERSION    "1.12"  /* must be exactly four chars */
+#define DRV_VERSION    "1.20"  /* must be exactly four chars */
 
 struct ata_scsi_args {
        u16                     *id;
index 242d906987ad90b2b109b198840e27b3c07fa37a..8a8e3e3ef0ed3bbaebe61e9713cfaab005f47820 100644 (file)
@@ -46,7 +46,7 @@
 #include "sata_promise.h"
 
 #define DRV_NAME       "sata_promise"
-#define DRV_VERSION    "1.02"
+#define DRV_VERSION    "1.03"
 
 
 enum {
index 4a6d3067d23c3de88cc148847e746c974b248cc0..a8987f5ff5ccac5fac723cfc1138fd033bdf8422 100644 (file)
@@ -41,7 +41,7 @@
 #include <linux/libata.h>
 
 #define DRV_NAME       "sata_qstor"
-#define DRV_VERSION    "0.04"
+#define DRV_VERSION    "0.05"
 
 enum {
        QS_PORTS                = 4,
index 55e744d6db88338486d4c471dc311f3bb480a080..cb1933a3bd55e03ca88ccfe9e5e6af74dd9a07e6 100644 (file)
@@ -139,6 +139,7 @@ enum {
        PORT_CS_DEV_RST         = (1 << 1), /* device reset */
        PORT_CS_INIT            = (1 << 2), /* port initialize */
        PORT_CS_IRQ_WOC         = (1 << 3), /* interrupt write one to clear */
+       PORT_CS_CDB16           = (1 << 5), /* 0=12b cdb, 1=16b cdb */
        PORT_CS_RESUME          = (1 << 6), /* port resume */
        PORT_CS_32BIT_ACTV      = (1 << 10), /* 32-bit activation */
        PORT_CS_PM_EN           = (1 << 13), /* port multiplier enable */
@@ -188,11 +189,29 @@ enum {
        PORT_CERR_XFR_PCIPERR   = 35, /* PSD ecode 11 - PCI prity err during transfer */
        PORT_CERR_SENDSERVICE   = 36, /* FIS received while sending service */
 
+       /* bits of PRB control field */
+       PRB_CTRL_PROTOCOL       = (1 << 0), /* override def. ATA protocol */
+       PRB_CTRL_PACKET_READ    = (1 << 4), /* PACKET cmd read */
+       PRB_CTRL_PACKET_WRITE   = (1 << 5), /* PACKET cmd write */
+       PRB_CTRL_NIEN           = (1 << 6), /* Mask completion irq */
+       PRB_CTRL_SRST           = (1 << 7), /* Soft reset request (ign BSY?) */
+
+       /* PRB protocol field */
+       PRB_PROT_PACKET         = (1 << 0),
+       PRB_PROT_TCQ            = (1 << 1),
+       PRB_PROT_NCQ            = (1 << 2),
+       PRB_PROT_READ           = (1 << 3),
+       PRB_PROT_WRITE          = (1 << 4),
+       PRB_PROT_TRANSPARENT    = (1 << 5),
+
        /*
         * Other constants
         */
        SGE_TRM                 = (1 << 31), /* Last SGE in chain */
-       PRB_SOFT_RST            = (1 << 7),  /* Soft reset request (ign BSY?) */
+       SGE_LNK                 = (1 << 30), /* linked list
+                                               Points to SGT, not SGE */
+       SGE_DRD                 = (1 << 29), /* discard data read (/dev/null)
+                                               data address ignored */
 
        /* board id */
        BID_SIL3124             = 0,
index 57e5a9d964c3f305c1284d870968ec02d81de870..6e7f7c83a75ae52409d1b41a9e397ce19a2d5437 100644 (file)
@@ -54,7 +54,7 @@
 #endif /* CONFIG_PPC_OF */
 
 #define DRV_NAME       "sata_svw"
-#define DRV_VERSION    "1.06"
+#define DRV_VERSION    "1.07"
 
 /* Taskfile registers offsets */
 #define K2_SATA_TF_CMD_OFFSET          0x00
index b4bbe48acab0f85059ed012fa47401f75c5343a7..dcc3ad9a9d6e24cff6a2e236e749b44c64630a31 100644 (file)
@@ -46,7 +46,7 @@
 #include "sata_promise.h"
 
 #define DRV_NAME       "sata_sx4"
-#define DRV_VERSION    "0.7"
+#define DRV_VERSION    "0.8"
 
 
 enum {
index 77a6e4b9262d3b416a9bb59ba8cf0ed739730806..fcfa486965b4035b6106f02fec92be1b3007935d 100644 (file)
@@ -47,7 +47,7 @@
 #include <linux/libata.h>
 
 #define DRV_NAME       "sata_vsc"
-#define DRV_VERSION    "1.0"
+#define DRV_VERSION    "1.1"
 
 /* Interrupt register offsets (from chip base address) */
 #define VSC_SATA_INT_STAT_OFFSET       0x00