Skip to contentSkip to conversation

pata_serverworks: cleanup cable detection

PATCH In review Bartlomiej Zolnierkiewicz 2 participants 6 messages Oct 11, 2011 – Oct 13, 2011 libata

lore
Share & tools
lore
#0 lore raw

PATCH 2/3 pata_serverworks: cleanup cable detection

From: Bartlomiej Zolnierkiewicz <[email protected]>
Subject: [PATCH] pata_serverworks: cleanup cable detection

---
earlier references:
https://lkml.org/lkml/2010/1/18/324

 drivers/ata/pata_serverworks.c |   37 +++++++------------------------------
 1 file changed, 7 insertions(+), 30 deletions(-)
drivers/ata/pata_serverworks.c +7 -30
Index: b/drivers/ata/pata_serverworks.c
===================================================================
@@ -57,32 +57,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);
 
@@ -97,15 +79,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 },
#2 lore raw
Quoted 9 lines · Alan Cox
Quoted 4 lines · On Tue, 11 Oct 2011 20:11:44 +0200 Bartlomiej Zolnierkiewicz…

From: Bartlomiej Zolnierkiewicz <[email protected]>
Subject: [PATCH] pata_serverworks: cleanup cable detection

Again no documentation although its at least a bit more obvious why

The patch only merges identical cable routines for Dell and Sun systems into common oem_cable() one. No behavior changes here.

#3 lore raw
Quoted 8 lines · On Wed, 12 Oct 2011 17:05:38 +0200 Bartlomiej Zolnierkiewicz…
Quoted 6 lines · Alan Cox
Quoted 3 lines · On Tue, 11 Oct 2011 20:11:44 +0200 Bartlomiej Zolnierkiewicz…

From: Bartlomiej Zolnierkiewicz <[email protected]>
Subject: [PATCH] pata_serverworks: cleanup cable detection

Quoted 6 lines
Quoted 3 lines
Quoted 1 line

Again no documentation although its at least a bit more obvious why

The patch only merges identical cable routines for Dell and Sun systems into common oem_cable() one. No behavior changes here.

So put that that in the patch info. It seems fine to me but it ought to be there

#4 lore raw
Quoted 13 lines · Alan Cox
Quoted 10 lines · On Wed, 12 Oct 2011 17:05:38 +0200 Bartlomiej Zolnierkiewicz…
Quoted 8 lines · Alan Cox
Quoted 4 lines · On Tue, 11 Oct 2011 20:11:44 +0200 Bartlomiej Zolnierkiewicz…

From: Bartlomiej Zolnierkiewicz <[email protected]>
Subject: [PATCH] pata_serverworks: cleanup cable detection

Quoted 7 lines
Quoted 4 lines
Quoted 1 line

Again no documentation although its at least a bit more obvious why

The patch only merges identical cable routines for Dell and Sun systems into common oem_cable() one. No behavior changes here.

So put that that in the patch info. It seems fine to me but it ought to be there

Ok.

From: Bartlomiej Zolnierkiewicz <[email protected]>
Subject: [PATCH v2] pata_serverworks: cleanup cable detection

Merge identical cable routines for Dell and Sun systems into common oem_cable() one.

---
v2: updated patch description

earlier references:
https://lkml.org/lkml/2010/1/18/324

 drivers/ata/pata_serverworks.c |   37 +++++++------------------------------
 1 file changed, 7 insertions(+), 30 deletions(-)
drivers/ata/pata_serverworks.c +7 -30
Index: b/drivers/ata/pata_serverworks.c
===================================================================
@@ -57,32 +57,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);
 
@@ -97,15 +79,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 },