]> git.pld-linux.org Git - packages/kernel.git/commitdiff
- merged in 2.6.27.
authorPaweł Sikora <pluto@pld-linux.org>
Fri, 17 Oct 2008 09:27:35 +0000 (09:27 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    kernel-ahci_pata_marvell.patch -> 1.3

kernel-ahci_pata_marvell.patch [deleted file]

diff --git a/kernel-ahci_pata_marvell.patch b/kernel-ahci_pata_marvell.patch
deleted file mode 100644 (file)
index b89c692..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-commit 5b66c829bf5c65663b2f68ee6b42f6e834cd39cd
-Author: Alan Cox <alan@lxorguk.ukuu.org.uk>
-Date:   Wed Sep 3 14:48:34 2008 +0100
-
-    ahci, pata_marvell: play nicely together
-    
-    I've been chasing Jeff about this for months.  Jeff added the Marvell
-    device identifiers to the ahci driver without making the AHCI driver
-    handle the PATA port. This means a lot of users can't use current
-    kernels and in most distro cases can't even install.
-    
-    This has been going on since March 2008 for the 6121 Marvell, and late 2007
-    for the 6145!!!
-    
-    This was all pointed out at the time and repeatedly ignored. Bugs assigned
-    to Jeff about this are ignored also.
-    
-    To quote Jeff in email
-    
-    > "Just switch the order of 'ahci' and 'pata_marvell' in
-    > /etc/modprobe.conf, then use Fedora's tools regenerate the initrd.
-    
-    > See?  It's not rocket science, and the current configuration can be
-    > easily made to work for Fedora users."
-    
-    (Which isn't trivial, isn't end user, shouldn't be needed, and as it usually
-    breaks at install time is in fact impossible)
-    
-    To quote Jeff in August 2007
-    
-    > "   mv-ahci-pata
-    > Marvell 6121/6141 PATA support.  Needs fixing in the 'PATA controller
-    > command' area before it is usable, and can go upstream."
-    
-    Only he add the ids anyway later and caused regressions, adding a further
-    id in March causing more regresions.
-    
-    The actual fix for the moment is very simple. If the user has included
-    the pata_marvell driver let it drive the ports. If they've only selected
-    for SATA support give them the AHCI driver which will run the port a fraction
-    faster. Allow the user to control this decision via ahci.marvell_enable as
-    a module parameter so that distributions can ship 'it works' defaults and
-    smarter users (or config tools) can then flip it over it desired.
-    
-    Signed-off-by: Alan Cox <alan@redhat.com>
-    Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
-
-diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
-index ae84949..11c8c19 100644
---- a/drivers/ata/Kconfig
-+++ b/drivers/ata/Kconfig
-@@ -448,8 +448,10 @@ config PATA_MARVELL
-       tristate "Marvell PATA support via legacy mode"
-       depends on PCI
-       help
--        This option enables limited support for the Marvell 88SE6145 ATA
--        controller.
-+        This option enables limited support for the Marvell 88SE61xx ATA
-+        controllers. If you wish to use only the SATA ports then select
-+        the AHCI driver alone. If you wish to the use the PATA port or
-+        both SATA and PATA include this driver.
-         If unsure, say N.
-diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
-index c729e69..bce26ee 100644
---- a/drivers/ata/ahci.c
-+++ b/drivers/ata/ahci.c
-@@ -610,6 +610,15 @@ module_param(ahci_em_messages, int, 0444);
- MODULE_PARM_DESC(ahci_em_messages,
-       "Set AHCI Enclosure Management Message type (0 = disabled, 1 = LED");
-+#if defined(CONFIG_PATA_MARVELL) || defined(CONFIG_PATA_MARVELL_MODULE)
-+static int marvell_enable;
-+#else
-+static int marvell_enable = 1;
-+#endif
-+module_param(marvell_enable, int, 0644);
-+MODULE_PARM_DESC(marvell_enable, "Marvell SATA via AHCI (1 = enabled)");
-+
-+
- static inline int ahci_nr_ports(u32 cap)
- {
-       return (cap & 0x1f) + 1;
-@@ -732,6 +741,8 @@ static void ahci_save_initial_config(struct pci_dev *pdev,
-                          "MV_AHCI HACK: port_map %x -> %x\n",
-                          port_map,
-                          port_map & mv);
-+              dev_printk(KERN_ERR, &pdev->dev,
-+                        "Disabling your PATA port. Use the boot option 'ahci.marvell_enable=0' to avoid this.\n");
-               port_map &= mv;
-       }
-@@ -2533,6 +2544,12 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
-       if (!printed_version++)
-               dev_printk(KERN_DEBUG, &pdev->dev, "version " DRV_VERSION "\n");
-+      /* The AHCI driver can only drive the SATA ports, the PATA driver
-+         can drive them all so if both drivers are selected make sure
-+         AHCI stays out of the way */
-+      if (pdev->vendor == PCI_VENDOR_ID_MARVELL && !marvell_enable)
-+              return -ENODEV;
-+
-       /* acquire resources */
-       rc = pcim_enable_device(pdev);
-       if (rc)
-diff --git a/drivers/ata/pata_marvell.c b/drivers/ata/pata_marvell.c
-index 24a011b..0d87eec 100644
---- a/drivers/ata/pata_marvell.c
-+++ b/drivers/ata/pata_marvell.c
-@@ -20,29 +20,30 @@
- #include <linux/ata.h>
- #define DRV_NAME      "pata_marvell"
--#define DRV_VERSION   "0.1.4"
-+#define DRV_VERSION   "0.1.6"
- /**
-- *    marvell_pre_reset       -       check for 40/80 pin
-- *    @link: link
-- *    @deadline: deadline jiffies for the operation
-+ *    marvell_pata_active     -       check if PATA is active
-+ *    @pdev: PCI device
-  *
-- *    Perform the PATA port setup we need.
-+ *    Returns 1 if the PATA port may be active. We know how to check this
-+ *    for the 6145 but not the other devices
-  */
--static int marvell_pre_reset(struct ata_link *link, unsigned long deadline)
-+static int marvell_pata_active(struct pci_dev *pdev)
- {
--      struct ata_port *ap = link->ap;
--      struct pci_dev *pdev = to_pci_dev(ap->host->dev);
-+      int i;
-       u32 devices;
-       void __iomem *barp;
--      int i;
--      /* Check if our port is enabled */
-+      /* We don't yet know how to do this for other devices */
-+      if (pdev->device != 0x6145)
-+              return 1;       
-       barp = pci_iomap(pdev, 5, 0x10);
-       if (barp == NULL)
-               return -ENOMEM;
-+
-       printk("BAR5:");
-       for(i = 0; i <= 0x0F; i++)
-               printk("%02X:%02X ", i, ioread8(barp + i));
-@@ -51,9 +52,27 @@ static int marvell_pre_reset(struct ata_link *link, unsigned long deadline)
-       devices = ioread32(barp + 0x0C);
-       pci_iounmap(pdev, barp);
--      if ((pdev->device == 0x6145) && (ap->port_no == 0) &&
--          (!(devices & 0x10)))        /* PATA enable ? */
--              return -ENOENT;
-+      if (devices & 0x10)
-+              return 1;
-+      return 0;
-+}
-+
-+/**
-+ *    marvell_pre_reset       -       check for 40/80 pin
-+ *    @link: link
-+ *    @deadline: deadline jiffies for the operation
-+ *
-+ *    Perform the PATA port setup we need.
-+ */
-+
-+static int marvell_pre_reset(struct ata_link *link, unsigned long deadline)
-+{
-+      struct ata_port *ap = link->ap;
-+      struct pci_dev *pdev = to_pci_dev(ap->host->dev);
-+
-+      if (pdev->device == 0x6145 && ap->port_no == 0 &&
-+              !marvell_pata_active(pdev))     /* PATA enable ? */
-+                      return -ENOENT;
-       return ata_sff_prereset(link, deadline);
- }
-@@ -128,6 +147,12 @@ static int marvell_init_one (struct pci_dev *pdev, const struct pci_device_id *i
-       if (pdev->device == 0x6101)
-               ppi[1] = &ata_dummy_port_info;
-+#if defined(CONFIG_AHCI) || defined(CONFIG_AHCI_MODULE)
-+      if (!marvell_pata_active(pdev)) {
-+              printk(KERN_INFO DRV_NAME ": PATA port not active, deferring to AHCI driver.\n");
-+              return -ENODEV;
-+      }
-+#endif
-       return ata_pci_sff_init_one(pdev, ppi, &marvell_sht, NULL);
- }
This page took 0.076103 seconds and 4 git commands to generate.