]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 28 Oct 2008 16:44:59 +0000 (09:44 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 28 Oct 2008 16:44:59 +0000 (09:44 -0700)
* 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6:
  [S390] s390: Fix build for !CONFIG_S390_GUEST + CONFIG_VIRTIO_CONSOLE
  [S390] No more 4kb stacks.
  [S390] Change default IPL method to IPL_VM.
  [S390] tape: disable interrupts in tape_open and tape_release
  [S390] appldata: unsigned ops->size cannot be negative
  [S390] tape block: complete request with correct locking
  [S390] Fix sysdev class file creation.
  [S390] pgtables: Fix race in enable_sie vs. page table ops
  [S390] qdio: remove incorrect memset
  [S390] qdio: prevent double qdio shutdown in case of I/O errors

44 files changed:
drivers/ata/ahci.c
drivers/ata/ata_generic.c
drivers/ata/ata_piix.c
drivers/ata/libata-core.c
drivers/ata/libata-eh.c
drivers/ata/pata_acpi.c
drivers/ata/pata_ali.c
drivers/ata/pata_amd.c
drivers/ata/pata_artop.c
drivers/ata/pata_atiixp.c
drivers/ata/pata_cmd640.c
drivers/ata/pata_cmd64x.c
drivers/ata/pata_cs5530.c
drivers/ata/pata_cs5535.c
drivers/ata/pata_cypress.c
drivers/ata/pata_efar.c
drivers/ata/pata_isapnp.c
drivers/ata/pata_it821x.c
drivers/ata/pata_jmicron.c
drivers/ata/pata_legacy.c
drivers/ata/pata_marvell.c
drivers/ata/pata_mpiix.c
drivers/ata/pata_netcell.c
drivers/ata/pata_ninja32.c
drivers/ata/pata_ns87410.c
drivers/ata/pata_ns87415.c
drivers/ata/pata_oldpiix.c
drivers/ata/pata_opti.c
drivers/ata/pata_optidma.c
drivers/ata/pata_pcmcia.c
drivers/ata/pata_pdc202xx_old.c
drivers/ata/pata_platform.c
drivers/ata/pata_qdi.c
drivers/ata/pata_radisys.c
drivers/ata/pata_sc1200.c
drivers/ata/pata_scc.c
drivers/ata/pata_serverworks.c
drivers/ata/pata_sil680.c
drivers/ata/pata_sis.c
drivers/ata/pata_sl82c105.c
drivers/ata/pata_triflex.c
drivers/ata/pata_via.c
drivers/ata/pata_winbond.c
drivers/ata/sata_sil24.c

index aeadd00411a187dc164eaa4abe4c3a447af8af59..a67b8e7c712dce78b371a5b5d0d1b39c33cb9e47 100644 (file)
 #define DRV_NAME       "ahci"
 #define DRV_VERSION    "3.0"
 
+/* Enclosure Management Control */
+#define EM_CTRL_MSG_TYPE              0x000f0000
+
+/* Enclosure Management LED Message Type */
+#define EM_MSG_LED_HBA_PORT           0x0000000f
+#define EM_MSG_LED_PMP_SLOT           0x0000ff00
+#define EM_MSG_LED_VALUE              0xffff0000
+#define EM_MSG_LED_VALUE_ACTIVITY     0x00070000
+#define EM_MSG_LED_VALUE_OFF          0xfff80000
+#define EM_MSG_LED_VALUE_ON           0x00010000
+
 static int ahci_skip_host_reset;
 module_param_named(skip_host_reset, ahci_skip_host_reset, int, 0444);
 MODULE_PARM_DESC(skip_host_reset, "skip global host reset (0=don't skip, 1=skip)");
@@ -588,6 +599,9 @@ static const struct pci_device_id ahci_pci_tbl[] = {
        { PCI_VDEVICE(MARVELL, 0x6145), board_ahci_mv },        /* 6145 */
        { PCI_VDEVICE(MARVELL, 0x6121), board_ahci_mv },        /* 6121 */
 
+       /* Promise */
+       { PCI_VDEVICE(PROMISE, 0x3f20), board_ahci },   /* PDC42819 */
+
        /* Generic, PCI class code for AHCI */
        { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
          PCI_CLASS_STORAGE_SATA_AHCI, 0xffffff, board_ahci },
@@ -1220,18 +1234,20 @@ static void ahci_sw_activity_blink(unsigned long arg)
        struct ahci_em_priv *emp = &pp->em_priv[link->pmp];
        unsigned long led_message = emp->led_state;
        u32 activity_led_state;
+       unsigned long flags;
 
-       led_message &= 0xffff0000;
+       led_message &= EM_MSG_LED_VALUE;
        led_message |= ap->port_no | (link->pmp << 8);
 
        /* check to see if we've had activity.  If so,
         * toggle state of LED and reset timer.  If not,
         * turn LED to desired idle state.
         */
+       spin_lock_irqsave(ap->lock, flags);
        if (emp->saved_activity != emp->activity) {
                emp->saved_activity = emp->activity;
                /* get the current LED state */
-               activity_led_state = led_message & 0x00010000;
+               activity_led_state = led_message & EM_MSG_LED_VALUE_ON;
 
                if (activity_led_state)
                        activity_led_state = 0;
@@ -1239,17 +1255,18 @@ static void ahci_sw_activity_blink(unsigned long arg)
                        activity_led_state = 1;
 
                /* clear old state */
-               led_message &= 0xfff8ffff;
+               led_message &= ~EM_MSG_LED_VALUE_ACTIVITY;
 
                /* toggle state */
                led_message |= (activity_led_state << 16);
                mod_timer(&emp->timer, jiffies + msecs_to_jiffies(100));
        } else {
                /* switch to idle */
-               led_message &= 0xfff8ffff;
+               led_message &= ~EM_MSG_LED_VALUE_ACTIVITY;
                if (emp->blink_policy == BLINK_OFF)
                        led_message |= (1 << 16);
        }
+       spin_unlock_irqrestore(ap->lock, flags);
        ahci_transmit_led_message(ap, led_message, 4);
 }
 
@@ -1294,7 +1311,7 @@ static ssize_t ahci_transmit_led_message(struct ata_port *ap, u32 state,
        struct ahci_em_priv *emp;
 
        /* get the slot number from the message */
-       pmp = (state & 0x0000ff00) >> 8;
+       pmp = (state & EM_MSG_LED_PMP_SLOT) >> 8;
        if (pmp < MAX_SLOTS)
                emp = &pp->em_priv[pmp];
        else
@@ -1319,7 +1336,7 @@ static ssize_t ahci_transmit_led_message(struct ata_port *ap, u32 state,
        message[0] |= (4 << 8);
 
        /* ignore 0:4 of byte zero, fill in port info yourself */
-       message[1] = ((state & 0xfffffff0) | ap->port_no);
+       message[1] = ((state & ~EM_MSG_LED_HBA_PORT) | ap->port_no);
 
        /* write message to EM_LOC */
        writel(message[0], mmio + hpriv->em_loc);
@@ -1362,7 +1379,7 @@ static ssize_t ahci_led_store(struct ata_port *ap, const char *buf,
        state = simple_strtoul(buf, NULL, 0);
 
        /* get the slot number from the message */
-       pmp = (state & 0x0000ff00) >> 8;
+       pmp = (state & EM_MSG_LED_PMP_SLOT) >> 8;
        if (pmp < MAX_SLOTS)
                emp = &pp->em_priv[pmp];
        else
@@ -1373,7 +1390,7 @@ static ssize_t ahci_led_store(struct ata_port *ap, const char *buf,
         * activity led through em_message
         */
        if (emp->blink_policy)
-               state &= 0xfff8ffff;
+               state &= ~EM_MSG_LED_VALUE_ACTIVITY;
 
        return ahci_transmit_led_message(ap, state, size);
 }
@@ -1392,16 +1409,16 @@ static ssize_t ahci_activity_store(struct ata_device *dev, enum sw_activity val)
                link->flags &= ~(ATA_LFLAG_SW_ACTIVITY);
 
                /* set the LED to OFF */
-               port_led_state &= 0xfff80000;
+               port_led_state &= EM_MSG_LED_VALUE_OFF;
                port_led_state |= (ap->port_no | (link->pmp << 8));
                ahci_transmit_led_message(ap, port_led_state, 4);
        } else {
                link->flags |= ATA_LFLAG_SW_ACTIVITY;
                if (val == BLINK_OFF) {
                        /* set LED to ON for idle */
-                       port_led_state &= 0xfff80000;
+                       port_led_state &= EM_MSG_LED_VALUE_OFF;
                        port_led_state |= (ap->port_no | (link->pmp << 8));
-                       port_led_state |= 0x00010000; /* check this */
+                       port_led_state |= EM_MSG_LED_VALUE_ON; /* check this */
                        ahci_transmit_led_message(ap, port_led_state, 4);
                }
        }
@@ -2612,7 +2629,7 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
                u32 em_loc = readl(mmio + HOST_EM_LOC);
                u32 em_ctl = readl(mmio + HOST_EM_CTL);
 
-               messages = (em_ctl & 0x000f0000) >> 16;
+               messages = (em_ctl & EM_CTRL_MSG_TYPE) >> 16;
 
                /* we only support LED message type right now */
                if ((messages & 0x01) && (ahci_em_messages == 1)) {
index 75a406f5e6945525d4799bc44de7ccf6e1552feb..5c33767e66de8e25493fe37343c5fe433c2971b7 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  ata_generic.c - Generic PATA/SATA controller driver.
- *  Copyright 2005 Red Hat Inc <alan@redhat.com>, all rights reserved.
+ *  Copyright 2005 Red Hat Inc, all rights reserved.
  *
  *  Elements from ide/pci/generic.c
  *         Copyright (C) 2001-2002     Andre Hedrick <andre@linux-ide.org>
index e9e32ed6b1a34ccbd0e61dd846622234b07ca2f5..52dc2d8b8f2217f8acad714409c005efed8f2d1d 100644 (file)
@@ -14,7 +14,7 @@
  *
  *  Copyright (C) 1998-1999 Andrzej Krzysztofowicz, Author and Maintainer
  *  Copyright (C) 1998-2000 Andre Hedrick <andre@linux-ide.org>
- *  Copyright (C) 2003 Red Hat Inc <alan@redhat.com>
+ *  Copyright (C) 2003 Red Hat Inc
  *
  *
  *  This program is free software; you can redistribute it and/or modify
index 8cb0b360bfd83e7ae88909e3c5884f39c0191b7f..2ff633c119e23b5d9ac604dce9485169825123e3 100644 (file)
@@ -4156,29 +4156,33 @@ static int cable_is_40wire(struct ata_port *ap)
        struct ata_link *link;
        struct ata_device *dev;
 
-       /* If the controller thinks we are 40 wire, we are */
+       /* If the controller thinks we are 40 wire, we are. */
        if (ap->cbl == ATA_CBL_PATA40)
                return 1;
-       /* If the controller thinks we are 80 wire, we are */
+
+       /* If the controller thinks we are 80 wire, we are. */
        if (ap->cbl == ATA_CBL_PATA80 || ap->cbl == ATA_CBL_SATA)
                return 0;
-       /* If the system is known to be 40 wire short cable (eg laptop),
-          then we allow 80 wire modes even if the drive isn't sure */
+
+       /* If the system is known to be 40 wire short cable (eg
+        * laptop), then we allow 80 wire modes even if the drive
+        * isn't sure.
+        */
        if (ap->cbl == ATA_CBL_PATA40_SHORT)
                return 0;
-       /* If the controller doesn't know we scan
-
-          - Note: We look for all 40 wire detects at this point.
-            Any 80 wire detect is taken to be 80 wire cable
-            because
-            - In many setups only the one drive (slave if present)
-               will give a valid detect
-             - If you have a non detect capable drive you don't
-               want it to colour the choice
-        */
+
+       /* If the controller doesn't know, we scan.
+        *
+        * Note: We look for all 40 wire detects at this point.  Any
+        *       80 wire detect is taken to be 80 wire cable because
+        * - in many setups only the one drive (slave if present) will
+        *   give a valid detect
+        * - if you have a non detect capable drive you don't want it
+        *   to colour the choice
+        */
        ata_port_for_each_link(link, ap) {
                ata_link_for_each_dev(dev, link) {
-                       if (!ata_is_40wire(dev))
+                       if (ata_dev_enabled(dev) && !ata_is_40wire(dev))
                                return 0;
                }
        }
@@ -4553,6 +4557,7 @@ void swap_buf_le16(u16 *buf, unsigned int buf_words)
 /**
  *     ata_qc_new_init - Request an available ATA command, and initialize it
  *     @dev: Device from whom we request an available command structure
+ *     @tag: command tag
  *
  *     LOCKING:
  *     None.
index 5d687d7cffaea9a3e50d28eae19e9cffdb08c975..8077bdf5d30d1ea48c39b31386a03eee43d57592 100644 (file)
@@ -603,6 +603,9 @@ void ata_scsi_error(struct Scsi_Host *host)
                        ata_link_for_each_dev(dev, link) {
                                int devno = dev->devno;
 
+                               if (!ata_dev_enabled(dev))
+                                       continue;
+
                                ehc->saved_xfer_mode[devno] = dev->xfer_mode;
                                if (ata_ncq_enabled(dev))
                                        ehc->saved_ncq_enabled |= 1 << devno;
@@ -1161,6 +1164,7 @@ void ata_eh_detach_dev(struct ata_device *dev)
 {
        struct ata_link *link = dev->link;
        struct ata_port *ap = link->ap;
+       struct ata_eh_context *ehc = &link->eh_context;
        unsigned long flags;
 
        ata_dev_disable(dev);
@@ -1174,9 +1178,11 @@ void ata_eh_detach_dev(struct ata_device *dev)
                ap->pflags |= ATA_PFLAG_SCSI_HOTPLUG;
        }
 
-       /* clear per-dev EH actions */
+       /* clear per-dev EH info */
        ata_eh_clear_action(link, dev, &link->eh_info, ATA_EH_PERDEV_MASK);
        ata_eh_clear_action(link, dev, &link->eh_context.i, ATA_EH_PERDEV_MASK);
+       ehc->saved_xfer_mode[dev->devno] = 0;
+       ehc->saved_ncq_enabled &= ~(1 << dev->devno);
 
        spin_unlock_irqrestore(ap->lock, flags);
 }
@@ -2787,6 +2793,9 @@ int ata_set_mode(struct ata_link *link, struct ata_device **r_failed_dev)
 
        /* if data transfer is verified, clear DUBIOUS_XFER on ering top */
        ata_link_for_each_dev(dev, link) {
+               if (!ata_dev_enabled(dev))
+                       continue;
+
                if (!(dev->flags & ATA_DFLAG_DUBIOUS_XFER)) {
                        struct ata_ering_entry *ent;
 
@@ -2808,6 +2817,9 @@ int ata_set_mode(struct ata_link *link, struct ata_device **r_failed_dev)
                u8 saved_xfer_mode = ehc->saved_xfer_mode[dev->devno];
                u8 saved_ncq = !!(ehc->saved_ncq_enabled & (1 << dev->devno));
 
+               if (!ata_dev_enabled(dev))
+                       continue;
+
                if (dev->xfer_mode != saved_xfer_mode ||
                    ata_ncq_enabled(dev) != saved_ncq)
                        dev->flags |= ATA_DFLAG_DUBIOUS_XFER;
index eb919c16a03e67f25042da2756f274821b549ee8..e2e332d8ff952753940b1f7b7e086e3e1945a073 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *     ACPI PATA driver
  *
- *     (c) 2007 Red Hat  <alan@redhat.com>
+ *     (c) 2007 Red Hat
  */
 
 #include <linux/kernel.h>
index 5ca70fa1f587e2d7953655311f5417313185882b..73c466e452ca3a4d2181fcd06e5015c301cfa8b1 100644 (file)
@@ -1,7 +1,6 @@
 /*
  * pata_ali.c  - ALI 15x3 PATA for new ATA layer
  *                       (C) 2005 Red Hat Inc
- *                       Alan Cox <alan@redhat.com>
  *
  * based in part upon
  * linux/drivers/ide/pci/alim15x3.c            Version 0.17    2003/01/02
index 57dd00f463d3367a33f24cf5f1808cc1c1f294ec..0ec9c7d9fe9d607250a07bc47a6ce4d3c087041a 100644 (file)
@@ -1,7 +1,6 @@
 /*
  * pata_amd.c  - AMD PATA for new ATA layer
  *                       (C) 2005-2006 Red Hat Inc
- *                       Alan Cox <alan@redhat.com>
  *
  *  Based on pata-sil680. Errata information is taken from data sheets
  *  and the amd74xx.c driver by Vojtech Pavlik. Nvidia SATA devices are
index 0f513bc111933072cc695e1c1e3965f022440d4d..6b3092c75ffe25c83fa871be5d84d98db34c3bc1 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *    pata_artop.c - ARTOP ATA controller driver
  *
- *     (C) 2006 Red Hat <alan@redhat.com>
+ *     (C) 2006 Red Hat
  *     (C) 2007 Bartlomiej Zolnierkiewicz
  *
  *    Based in part on drivers/ide/pci/aec62xx.c
index e8a0d99d7356baaf0afba8c9c348ff5adb45b828..0e2cde8f9973af6d3088a5f5bef439c7d7dfec57 100644 (file)
@@ -1,7 +1,6 @@
 /*
  * pata_atiixp.c       - ATI PATA for new ATA layer
  *                       (C) 2005 Red Hat Inc
- *                       Alan Cox <alan@redhat.com>
  *
  * Based on
  *
index 2de30b990278b9fb6705dcc440166e2f936ce3ef..34a394264c3d97deeb7b1a8414c9e06ce752d982 100644 (file)
@@ -1,7 +1,6 @@
 /*
  * pata_cmd640.c       - CMD640 PCI PATA for new ATA layer
  *                       (C) 2007 Red Hat Inc
- *                       Alan Cox <alan@redhat.com>
  *
  * Based upon
  *  linux/drivers/ide/pci/cmd640.c             Version 1.02  Sep 01, 1996
index ddd09b7d98c9d950db5f3fda9881a81a6969ffa6..3167d8fed2f24b08b7ada8bf07dd0ef91b93a1ae 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * pata_cmd64x.c       - CMD64x PATA for new ATA layer
  *                       (C) 2005 Red Hat Inc
- *                       Alan Cox <alan@redhat.com>
+ *                       Alan Cox <alan@lxorguk.ukuu.org.uk>
  *
  * Based upon
  * linux/drivers/ide/pci/cmd64x.c              Version 1.30    Sept 10, 2002
index 0c4b271a9d5a372c07a80ded36566b40e831bcb5..bba453381f442134f2c7608c3825b5961603e00d 100644 (file)
@@ -1,7 +1,6 @@
 /*
  * pata-cs5530.c       - CS5530 PATA for new ATA layer
  *                       (C) 2005 Red Hat Inc
- *                       Alan Cox <alan@redhat.com>
  *
  * based upon cs5530.c by Mark Lord.
  *
index f1b6556f0483ac1106b7fd31a53644dd02955da4..1b2d4a0f5f743c14b01dbd0f4b9af20d4abef2fb 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * pata-cs5535.c       - CS5535 PATA for new ATA layer
  *                       (C) 2005-2006 Red Hat Inc
- *                       Alan Cox <alan@redhat.com>
+ *                       Alan Cox <alan@lxorguk.ukuu.org.uk>
  *
  * based upon cs5535.c from AMD <Jens.Altmann@amd.com> as cleaned up and
  * made readable and Linux style by Wolfgang Zuleger <wolfgang.zuleger@gmx.de
index 2ff62608ae37e82069a94dfca757fb0accd09fec..d546425cd380707ca8fb9459ed14b4aff4896d94 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * pata_cypress.c      - Cypress PATA for new ATA layer
  *                       (C) 2006 Red Hat Inc
- *                       Alan Cox <alan@redhat.com>
+ *                       Alan Cox
  *
  * Based heavily on
  * linux/drivers/ide/pci/cy82c693.c            Version 0.40    Sep. 10, 2002
index 9fba82976ba6f7b7dfa6afc9b9b43c5b26bc45f0..ac6392ea35b05369df9455c3e0e0930465a379f0 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *    pata_efar.c - EFAR PIIX clone controller driver
  *
- *     (C) 2005 Red Hat <alan@redhat.com>
+ *     (C) 2005 Red Hat
  *
  *    Some parts based on ata_piix.c by Jeff Garzik and others.
  *
index 6a111baab523921c87943711c7388c386875f23f..15cdb9148aab2500085a664dad6e0c624aa71f4f 100644 (file)
@@ -1,7 +1,7 @@
 
 /*
  *   pata-isapnp.c - ISA PnP PATA controller driver.
- *   Copyright 2005/2006 Red Hat Inc <alan@redhat.com>, all rights reserved.
+ *   Copyright 2005/2006 Red Hat Inc, all rights reserved.
  *
  *   Based in part on ide-pnp.c by Andrey Panin <pazke@donpac.ru>
  */
index 0221c9a46769ad5e826485691d2718f863795eeb..860ede526282d5dc1939c132f0cb44429345443d 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * pata_it821x.c       - IT821x PATA for new ATA layer
  *                       (C) 2005 Red Hat Inc
- *                       Alan Cox <alan@redhat.com>
+ *                       Alan Cox <alan@lxorguk.ukuu.org.uk>
  *                       (C) 2007 Bartlomiej Zolnierkiewicz
  *
  * based upon
@@ -10,7 +10,7 @@
  *
  * linux/drivers/ide/pci/it821x.c              Version 0.09    December 2004
  *
- * Copyright (C) 2004          Red Hat <alan@redhat.com>
+ * Copyright (C) 2004          Red Hat
  *
  *  May be copied or modified under the terms of the GNU General Public License
  *  Based in part on the ITE vendor provided SCSI driver.
@@ -557,9 +557,8 @@ static unsigned int it821x_read_id(struct ata_device *adev,
        if (strstr(model_num, "Integrated Technology Express")) {
                /* Set feature bits the firmware neglects */
                id[49] |= 0x0300;       /* LBA, DMA */
-               id[82] |= 0x0400;       /* LBA48 */
                id[83] &= 0x7FFF;
-               id[83] |= 0x4000;       /* Word 83 is valid */
+               id[83] |= 0x4400;       /* Word 83 is valid and LBA48 */
                id[86] |= 0x0400;       /* LBA48 on */
                id[ATA_ID_MAJOR_VER] |= 0x1F;
        }
index 73b7596816b4f2af4edb7116a3bfabb02967ee4e..38cf1ab2d2893d5d725ac02880ad254743713e03 100644 (file)
@@ -4,7 +4,7 @@
  *                     driven by AHCI in the usual configuration although
  *                     this driver can handle other setups if we need it.
  *
- *     (c) 2006 Red Hat  <alan@redhat.com>
+ *     (c) 2006 Red Hat
  */
 
 #include <linux/kernel.h>
index bc037ffce2006e52a3d122f89ff424f56f40d3b5..930c2208640b950740f53f89cbd25799eebda645 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *   pata-legacy.c - Legacy port PATA/SATA controller driver.
- *   Copyright 2005/2006 Red Hat <alan@redhat.com>, all rights reserved.
+ *   Copyright 2005/2006 Red Hat, all rights reserved.
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
index 0d87eec849665fe3fac8b276ba6b40009cd129e7..76e399bf8c1bc2adfe9587f1ffd17cae192486f2 100644 (file)
@@ -5,7 +5,7 @@
  *     isn't making full use of the device functionality but it is
  *     easy to get working.
  *
- *     (c) 2006 Red Hat  <alan@redhat.com>
+ *     (c) 2006 Red Hat
  */
 
 #include <linux/kernel.h>
index 7d7e3fdab71fae0ce080c791dfd320d8f45218c1..7c8faa48b5f3b054c9017981ed8588bf339f2b37 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * pata_mpiix.c        - Intel MPIIX PATA for new ATA layer
  *                       (C) 2005-2006 Red Hat Inc
- *                       Alan Cox <alan@redhat.com>
+ *                       Alan Cox <alan@lxorguk.ukuu.org.uk>
  *
  * The MPIIX is different enough to the PIIX4 and friends that we give it
  * a separate driver. The old ide/pci code handles this by just not tuning
index d9719c8b9dbe2540028695af0635f59ae1888331..9dc05e1656a8c141c28864ee630683224130c142 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *    pata_netcell.c - Netcell PATA driver
  *
- *     (c) 2006 Red Hat  <alan@redhat.com>
+ *     (c) 2006 Red Hat
  */
 
 #include <linux/kernel.h>
index 565e67cd13fafb457f189fd4a6ace2b6996803ec..4e466eae8b462e31d82f7404d25f43a3b9cfd5cb 100644 (file)
@@ -1,7 +1,6 @@
 /*
  * pata_ninja32.c      - Ninja32 PATA for new ATA layer
  *                       (C) 2007 Red Hat Inc
- *                       Alan Cox <alan@redhat.com>
  *
  * Note: The controller like many controllers has shared timings for
  * PIO and DMA. We thus flip to the DMA timings in dma_start and flip back
@@ -45,7 +44,7 @@
 #include <linux/libata.h>
 
 #define DRV_NAME "pata_ninja32"
-#define DRV_VERSION "0.0.1"
+#define DRV_VERSION "0.1.1"
 
 
 /**
@@ -89,6 +88,17 @@ static struct ata_port_operations ninja32_port_ops = {
        .set_piomode    = ninja32_set_piomode,
 };
 
+static void ninja32_program(void __iomem *base)
+{
+       iowrite8(0x05, base + 0x01);    /* Enable interrupt lines */
+       iowrite8(0xBE, base + 0x02);    /* Burst, ?? setup */
+       iowrite8(0x01, base + 0x03);    /* Unknown */
+       iowrite8(0x20, base + 0x04);    /* WAIT0 */
+       iowrite8(0x8f, base + 0x05);    /* Unknown */
+       iowrite8(0xa4, base + 0x1c);    /* Unknown */
+       iowrite8(0x83, base + 0x1d);    /* BMDMA control: WAIT0 */
+}
+
 static int ninja32_init_one(struct pci_dev *dev, const struct pci_device_id *id)
 {
        struct ata_host *host;
@@ -134,18 +144,28 @@ static int ninja32_init_one(struct pci_dev *dev, const struct pci_device_id *id)
        ap->ioaddr.bmdma_addr = base;
        ata_sff_std_ports(&ap->ioaddr);
 
-       iowrite8(0x05, base + 0x01);    /* Enable interrupt lines */
-       iowrite8(0xBE, base + 0x02);    /* Burst, ?? setup */
-       iowrite8(0x01, base + 0x03);    /* Unknown */
-       iowrite8(0x20, base + 0x04);    /* WAIT0 */
-       iowrite8(0x8f, base + 0x05);    /* Unknown */
-       iowrite8(0xa4, base + 0x1c);    /* Unknown */
-       iowrite8(0x83, base + 0x1d);    /* BMDMA control: WAIT0 */
+       ninja32_program(base);
        /* FIXME: Should we disable them at remove ? */
        return ata_host_activate(host, dev->irq, ata_sff_interrupt,
                                 IRQF_SHARED, &ninja32_sht);
 }
 
+#ifdef CONFIG_PM
+
+static int ninja32_reinit_one(struct pci_dev *pdev)
+{
+       struct ata_host *host = dev_get_drvdata(&pdev->dev);
+       int rc;
+
+       rc = ata_pci_device_do_resume(pdev);
+       if (rc)
+               return rc;
+       ninja32_program(host->iomap[0]);
+       ata_host_resume(host);
+       return 0;                       
+}
+#endif
+
 static const struct pci_device_id ninja32[] = {
        { 0x1145, 0xf021, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
        { 0x1145, 0xf024, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
@@ -156,7 +176,11 @@ static struct pci_driver ninja32_pci_driver = {
        .name           = DRV_NAME,
        .id_table       = ninja32,
        .probe          = ninja32_init_one,
-       .remove         = ata_pci_remove_one
+       .remove         = ata_pci_remove_one,
+#ifdef CONFIG_PM
+       .suspend        = ata_pci_device_suspend,
+       .resume         = ninja32_reinit_one,
+#endif
 };
 
 static int __init ninja32_init(void)
index be756b7ef07e9a27d795e4b55731a1621940cd04..40d411c460de126f0babbe02107924abb1b48067 100644 (file)
@@ -1,7 +1,6 @@
 /*
  * pata_ns87410.c      - National Semiconductor 87410 PATA for new ATA layer
  *                       (C) 2006 Red Hat Inc
- *                       Alan Cox <alan@redhat.com>
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
index e0aa7eaaee0a4bf86b9174c8ee05b16e8bbff9fa..89bf5f865d6a64f03a4ae30ea9fbd174285efdaf 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *    pata_ns87415.c - NS87415 (non PARISC) PATA
  *
- *     (C) 2005 Red Hat <alan@redhat.com>
+ *     (C) 2005 Red Hat <alan@lxorguk.ukuu.org.uk>
  *
  *    This is a fairly generic MWDMA controller. It has some limitations
  *    as it requires timing reloads on PIO/DMA transitions but it is otherwise
index df64f24430018674f527bfe1bb26d49a73b3ea05..c0dbc46a348e4bcad76cbbb6ae607573b6d4ed79 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *    pata_oldpiix.c - Intel PATA/SATA controllers
  *
- *     (C) 2005 Red Hat <alan@redhat.com>
+ *     (C) 2005 Red Hat
  *
  *    Some parts based on ata_piix.c by Jeff Garzik and others.
  *
index fb2cf661b0e83c52545eefc757efd4001ccf1b2a..e4fa4d565e96331dfed1fa0bedfcb44a36248fe3 100644 (file)
@@ -1,7 +1,6 @@
 /*
  * pata_opti.c         - ATI PATA for new ATA layer
  *                       (C) 2005 Red Hat Inc
- *                       Alan Cox <alan@redhat.com>
  *
  * Based on
  *  linux/drivers/ide/pci/opti621.c            Version 0.7     Sept 10, 2002
index 4cd7444563134b88e3ec8da38f9c8502556754a4..93bb6e91973f46807bfa479a7e5ab47365b3bc55 100644 (file)
@@ -1,7 +1,6 @@
 /*
  * pata_optidma.c      - Opti DMA PATA for new ATA layer
  *                       (C) 2006 Red Hat Inc
- *                       Alan Cox <alan@redhat.com>
  *
  *     The Opti DMA controllers are related to the older PIO PCI controllers
  *     and indeed the VLB ones. The main differences are that the timing
index 02b596b9cf6a55fd058381a4d7d09ae928c4ceba..271cb64d429e6bb81ab90bc3c5d9946e70b4ce7c 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *   pata_pcmcia.c - PCMCIA PATA controller driver.
- *   Copyright 2005-2006 Red Hat Inc <alan@redhat.com>, all rights reserved.
+ *   Copyright 2005-2006 Red Hat Inc, all rights reserved.
  *   PCMCIA ident update Copyright 2006 Marcin Juszkiewicz
  *                                             <openembedded@hrw.one.pl>
  *
index d2673060bc8dd7381df444a265878c421d1e57d3..799a6a098712bbd3006acc35c8cca0706eea0302 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * pata_pdc202xx_old.c         - Promise PDC202xx PATA for new ATA layer
  *                       (C) 2005 Red Hat Inc
- *                       Alan Cox <alan@redhat.com>
+ *                       Alan Cox <alan@lxorguk.ukuu.org.uk>
  *                       (C) 2007 Bartlomiej Zolnierkiewicz
  *
  * Based in part on linux/drivers/ide/pci/pdc202xx_old.c
index 8f65ad61b8af372f8e6263fb55ec85c79df5f801..77e4e3b17f5479b7ee4a2306513f4e8aa5d3a18f 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Based on pata_pcmcia:
  *
- *   Copyright 2005-2006 Red Hat Inc <alan@redhat.com>, all rights reserved.
+ *   Copyright 2005-2006 Red Hat Inc, all rights reserved.
  *
  * This file is subject to the terms and conditions of the GNU General Public
  * License.  See the file "COPYING" in the main directory of this archive
index 63b7a1c165a5d8ddbb41c9b66210ebadcba34cc1..3080f371222cd6158df812dfc2e98dc030c09a64 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *    pata_qdi.c - QDI VLB ATA controllers
- *     (C) 2006 Red Hat <alan@redhat.com>
+ *     (C) 2006 Red Hat
  *
  * This driver mostly exists as a proof of concept for non PCI devices under
  * libata. While the QDI6580 was 'neat' in 1993 it is no longer terribly
index 1c0d9fa7ee54687d32d05512a6b09ec4d3c2f1ac..0b0aa452de147b834afbabc1248c082dd84099a9 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *    pata_radisys.c - Intel PATA/SATA controllers
  *
- *     (C) 2006 Red Hat <alan@redhat.com>
+ *     (C) 2006 Red Hat <alan@lxorguk.ukuu.org.uk>
  *
  *    Some parts based on ata_piix.c by Jeff Garzik and others.
  *
index 0278fd2b8fb1cc8c80ba05bc1e638027a22d3a95..9a4bdca546164c97e16fdb023f965b7e234da672 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * New ATA layer SC1200 driver         Alan Cox <alan@redhat.com>
+ * New ATA layer SC1200 driver         Alan Cox <alan@lxorguk.ukuu.org.uk>
  *
  * TODO: Mode selection filtering
  * TODO: Can't enable second channel until ATA core has serialize
index 16673d1685735a316d23a25a853b98ff31b0f9e6..cf3707e516a2e2f4ca67c5f77276b2747c229579 100644 (file)
@@ -8,7 +8,7 @@
  *  Copyright 2003-2005 Jeff Garzik
  *  Copyright (C) 1998-1999 Andrzej Krzysztofowicz, Author and Maintainer
  *  Copyright (C) 1998-2000 Andre Hedrick <andre@linux-ide.org>
- *  Copyright (C) 2003 Red Hat Inc <alan@redhat.com>
+ *  Copyright (C) 2003 Red Hat Inc
  *
  * and drivers/ata/ahci.c:
  *  Copyright 2004-2005 Red Hat, Inc.
index ffd26d0dc50df456c878f45b13293f25246442fe..72e41c9f969b3241c1c64622f3b232fdbf0ea642 100644 (file)
@@ -1,7 +1,6 @@
 /*
  * pata_serverworks.c  - Serverworks PATA for new ATA layer
  *                       (C) 2005 Red Hat Inc
- *                       Alan Cox <alan@redhat.com>
  *
  * based upon
  *
index a598bb36aafc5483d4c2e7cff9edaabec691efcd..83580a59db58bf7e4fdddd62dbd8da7d596fc3dc 100644 (file)
@@ -1,7 +1,6 @@
 /*
  * pata_sil680.c       - SIL680 PATA for new ATA layer
  *                       (C) 2005 Red Hat Inc
- *                       Alan Cox <alan@redhat.com>
  *
  * based upon
  *
index 26345d7b531c76aaffe00231649c7fe9640c14e8..d34236611752d8c8c3cddc2ca868cee655051c26 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *    pata_sis.c - SiS ATA driver
  *
- *     (C) 2005 Red Hat <alan@redhat.com>
+ *     (C) 2005 Red Hat
  *     (C) 2007 Bartlomiej Zolnierkiewicz
  *
  *    Based upon linux/drivers/ide/pci/sis5513.c
index 69877bd81815f4a1a288da7e99447ec7e7afa4a2..1b0e7b6d8ef502d093c8b4190db43878542e4dc8 100644 (file)
@@ -1,7 +1,6 @@
 /*
  * pata_sl82c105.c     - SL82C105 PATA for new ATA layer
  *                       (C) 2005 Red Hat Inc
- *                       Alan Cox <alan@redhat.com>
  *
  * Based in part on linux/drivers/ide/pci/sl82c105.c
  *             SL82C105/Winbond 553 IDE driver
index b181261f27438299ef15159993d1f227440bef8c..ef9597517cdd971408e33d26a954def751af1520 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * pata_triflex.c      - Compaq PATA for new ATA layer
  *                       (C) 2005 Red Hat Inc
- *                       Alan Cox <alan@redhat.com>
+ *                       Alan Cox <alan@lxorguk.ukuu.org.uk>
  *
  * based upon
  *
index 8fdb2ce73210b885393dc6ec066d5f3c69185646..681169c9c6409d4514b1f68195e98c1d96e626e6 100644 (file)
@@ -1,7 +1,6 @@
 /*
  * pata_via.c  - VIA PATA for new ATA layer
  *                       (C) 2005-2006 Red Hat Inc
- *                       Alan Cox <alan@redhat.com>
  *
  *  Documentation
  *     Most chipset documentation available under NDA only
index a7606b044a61961e8a7da92d5a808b990ed6850d..319e164a3d7473b42725a620af8ae860fd6571d6 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *    pata_winbond.c - Winbond VLB ATA controllers
- *     (C) 2006 Red Hat <alan@redhat.com>
+ *     (C) 2006 Red Hat
  *
  *    Support for the Winbond 83759A when operating in advanced mode.
  *    Multichip mode is not currently supported.
index 4621807a1a6a1ffbc143976474141dd529f3fa7f..ccee930f1e1225f8d2918cedd84793ac30b3c007 100644 (file)
@@ -1329,6 +1329,11 @@ static int sil24_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
                }
        }
 
+       /* Set max read request size to 4096.  This slightly increases
+        * write throughput for pci-e variants.
+        */
+       pcie_set_readrq(pdev, 4096);
+
        sil24_init_controller(host);
 
        pci_set_master(pdev);