diff options
author | Jes Sorensen <jes@wildopensource.com> | 2002-04-13 21:24:40 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@penguin.transmeta.com> | 2002-04-13 21:24:40 -0700 |
commit | 92ebc650938f5853ec7960a45610567c8fbf7f5a (patch) | |
tree | 6e8984f37aff406bfa06388ee9ed4f2f03de329c | |
parent | 3e11aea03aa1bde41aa841f1dbdb35f9a266311a (diff) | |
download | history-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.c | 37 | ||||
-rw-r--r-- | drivers/scsi/cpqfcTSstructs.h | 7 | ||||
-rw-r--r-- | include/linux/pci_ids.h | 1 |
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 |