pata_serverworks: cleanup cable detection
Bartlomiej Zolnierkiewicz [Thu, 13 Oct 2011 10:32:18 +0000 (12:32 +0200)]
Merge identical cable routines for Dell and Sun systems into
common oem_cable() one.

Acked-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>

drivers/ata/pata_serverworks.c

index e49365f..27d9802 100644 (file)
@@ -58,32 +58,14 @@ static const char *csb_bad_ata100[] = {
 };
 
 /**
- *     dell_cable      -       Dell serverworks cable detection
+ *     oem_cable       -       Dell/Sun serverworks cable detection
  *     @ap: ATA port to do cable detect
  *
- *     Dell hide the 40/80 pin select for their interfaces in the top two
- *     bits of the subsystem ID.
+ *     Dell PowerEdge and Sun Cobalt 'Alpine' hide the 40/80 pin select
+ *     for their interfaces in the top two bits of the subsystem ID.
  */
 
-static int dell_cable(struct ata_port *ap)
-{
-       struct pci_dev *pdev = to_pci_dev(ap->host->dev);
-
-       if (pdev->subsystem_device & (1 << (ap->port_no + 14)))
-               return ATA_CBL_PATA80;
-       return ATA_CBL_PATA40;
-}
-
-/**
- *     sun_cable       -       Sun Cobalt 'Alpine' cable detection
- *     @ap: ATA port to do cable select
- *
- *     Cobalt CSB5 IDE hides the 40/80pin in the top two bits of the
- *     subsystem ID the same as dell. We could use one function but we may
- *     need to extend the Dell one in future
- */
-
-static int sun_cable(struct ata_port *ap)
+static int oem_cable(struct ata_port *ap)
 {
        struct pci_dev *pdev = to_pci_dev(ap->host->dev);
 
@@ -98,15 +80,10 @@ struct sv_cable_table {
        int (*cable_detect)(struct ata_port *ap);
 };
 
-/*
- *     Note that we don't copy the old serverworks code because the old
- *     code contains obvious mistakes
- */
-
 static struct sv_cable_table cable_detect[] = {
-       { PCI_DEVICE_ID_SERVERWORKS_CSB5IDE,   PCI_VENDOR_ID_DELL, dell_cable },
-       { PCI_DEVICE_ID_SERVERWORKS_CSB6IDE,   PCI_VENDOR_ID_DELL, dell_cable },
-       { PCI_DEVICE_ID_SERVERWORKS_CSB5IDE,   PCI_VENDOR_ID_SUN,  sun_cable  },
+       { PCI_DEVICE_ID_SERVERWORKS_CSB5IDE,   PCI_VENDOR_ID_DELL, oem_cable },
+       { PCI_DEVICE_ID_SERVERWORKS_CSB6IDE,   PCI_VENDOR_ID_DELL, oem_cable },
+       { PCI_DEVICE_ID_SERVERWORKS_CSB5IDE,   PCI_VENDOR_ID_SUN,  oem_cable },
        { PCI_DEVICE_ID_SERVERWORKS_OSB4IDE,   PCI_ANY_ID, ata_cable_40wire  },
        { PCI_DEVICE_ID_SERVERWORKS_CSB5IDE,   PCI_ANY_ID, ata_cable_unknown },
        { PCI_DEVICE_ID_SERVERWORKS_CSB6IDE,   PCI_ANY_ID, ata_cable_unknown },