aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJes Sorensen <jes@wildopensource.com>2002-04-13 21:24:40 -0700
committerLinus Torvalds <torvalds@penguin.transmeta.com>2002-04-13 21:24:40 -0700
commit92ebc650938f5853ec7960a45610567c8fbf7f5a (patch)
tree6e8984f37aff406bfa06388ee9ed4f2f03de329c
parent3e11aea03aa1bde41aa841f1dbdb35f9a266311a (diff)
downloadhistory-92ebc650938f5853ec7960a45610567c8fbf7f5a.tar.gz
[PATCH] cpqfc.ov2.5.8
This makes the cpqfc driver recognize the HP Tachyon. I moved the device list to an __initdata structure so the driver doesn't build it at runtime and changed it to use the proper PCI_DEVICE_ID_* names. With this patch applied, the driver happily detects the disks attached to my HP Tachyon.
-rw-r--r--drivers/scsi/cpqfcTSinit.c37
-rw-r--r--drivers/scsi/cpqfcTSstructs.h7
-rw-r--r--include/linux/pci_ids.h1
3 files changed, 24 insertions, 21 deletions
diff --git a/drivers/scsi/cpqfcTSinit.c b/drivers/scsi/cpqfcTSinit.c
index 8dc265c072432..76a4db60a6df2 100644
--- a/drivers/scsi/cpqfcTSinit.c
+++ b/drivers/scsi/cpqfcTSinit.c
@@ -261,10 +261,22 @@ static void launch_FCworker_thread(struct Scsi_Host *HostAdapter)
/* "Entry" point to discover if any supported PCI
bus adapter can be found
*/
-// We're supporting:
-// Compaq 64-bit, 66MHz HBA with Tachyon TS
-// Agilent XL2
-#define HBA_TYPES 2
+/* We're supporting:
+ * Compaq 64-bit, 66MHz HBA with Tachyon TS
+ * Agilent XL2
+ * HP Tachyon
+ */
+#define HBA_TYPES 3
+
+#ifndef PCI_DEVICE_ID_COMPAQ_
+#define PCI_DEVICE_ID_COMPAQ_TACHYON 0xa0fc
+#endif
+
+static struct SupportedPCIcards cpqfc_boards[] __initdata = {
+ {PCI_VENDOR_ID_COMPAQ, PCI_DEVICE_ID_COMPAQ_TACHYON},
+ {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_TACHLITE},
+ {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_TACHYON},
+};
int cpqfcTS_detect(Scsi_Host_Template *ScsiHostTemplate)
@@ -274,35 +286,28 @@ int cpqfcTS_detect(Scsi_Host_Template *ScsiHostTemplate)
struct Scsi_Host *HostAdapter = NULL;
CPQFCHBA *cpqfcHBAdata = NULL;
struct timer_list *cpqfcTStimer = NULL;
- SupportedPCIcards PCIids[HBA_TYPES];
int i;
-
+
ENTER("cpqfcTS_detect");
-
+
#if LINUX_VERSION_CODE < LinuxVersionCode(2,3,27)
ScsiHostTemplate->proc_dir = &proc_scsi_cpqfcTS;
#else
ScsiHostTemplate->proc_name = "cpqfcTS";
#endif
-
+
if( pci_present() == 0) // no PCI busses?
{
printk( " no PCI bus?@#!\n");
return NumberOfAdapters;
}
- // what HBA adapters are we supporting?
- PCIids[0].vendor_id = PCI_VENDOR_ID_COMPAQ;
- PCIids[0].device_id = CPQ_DEVICE_ID;
- PCIids[1].vendor_id = PCI_VENDOR_ID_HP; // i.e. 103Ch (Agilent == HP for now)
- PCIids[1].device_id = AGILENT_XL2_ID; // i.e. 1029h
-
for( i=0; i < HBA_TYPES; i++)
{
// look for all HBAs of each type
- while( (PciDev =
- pci_find_device( PCIids[i].vendor_id, PCIids[i].device_id, PciDev) ))
+ while((PciDev = pci_find_device(cpqfc_boards[i].vendor_id,
+ cpqfc_boards[i].device_id, PciDev)))
{
if (pci_set_dma_mask(PciDev, CPQFCTS_DMA_MASK) != 0) {
diff --git a/drivers/scsi/cpqfcTSstructs.h b/drivers/scsi/cpqfcTSstructs.h
index 29a0fe819a1c2..a60603a4e978e 100644
--- a/drivers/scsi/cpqfcTSstructs.h
+++ b/drivers/scsi/cpqfcTSstructs.h
@@ -95,14 +95,11 @@
#define DEV_NAME "cpqfcTS"
-#define CPQ_DEVICE_ID 0xA0FC
-#define AGILENT_XL2_ID 0x1029
-
-typedef struct
+struct SupportedPCIcards
{
__u16 vendor_id;
__u16 device_id;
-} SupportedPCIcards;
+};
// nn:nn denotes bit field
// TachyonHeader struct def.
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index 13ab68e4c0d55..1872896adcafd 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -133,6 +133,7 @@
#define PCI_DEVICE_ID_COMPAQ_1280 0x3033
#define PCI_DEVICE_ID_COMPAQ_TRIFLEX 0x4000
#define PCI_DEVICE_ID_COMPAQ_6010 0x6010
+#define PCI_DEVICE_ID_COMPAQ_TACHYON 0xa0fc
#define PCI_DEVICE_ID_COMPAQ_SMART2P 0xae10
#define PCI_DEVICE_ID_COMPAQ_NETEL100 0xae32
#define PCI_DEVICE_ID_COMPAQ_NETEL10 0xae34