mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-11-20 16:46:23 +08:00
pata_serverworks: cleanup cable detection
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>
This commit is contained in:
parent
5860a5545a
commit
e69a70d951
@ -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 },
|
||||
|
Loading…
Reference in New Issue
Block a user