Commit 92ebc650 authored by Jes Sorensen's avatar Jes Sorensen Committed by Linus Torvalds

[PATCH] cpqfc.o

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.
parent 3e11aea0
...@@ -261,10 +261,22 @@ static void launch_FCworker_thread(struct Scsi_Host *HostAdapter) ...@@ -261,10 +261,22 @@ static void launch_FCworker_thread(struct Scsi_Host *HostAdapter)
/* "Entry" point to discover if any supported PCI /* "Entry" point to discover if any supported PCI
bus adapter can be found bus adapter can be found
*/ */
// We're supporting: /* We're supporting:
// Compaq 64-bit, 66MHz HBA with Tachyon TS * Compaq 64-bit, 66MHz HBA with Tachyon TS
// Agilent XL2 * Agilent XL2
#define HBA_TYPES 2 * 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) int cpqfcTS_detect(Scsi_Host_Template *ScsiHostTemplate)
...@@ -274,35 +286,28 @@ int cpqfcTS_detect(Scsi_Host_Template *ScsiHostTemplate) ...@@ -274,35 +286,28 @@ int cpqfcTS_detect(Scsi_Host_Template *ScsiHostTemplate)
struct Scsi_Host *HostAdapter = NULL; struct Scsi_Host *HostAdapter = NULL;
CPQFCHBA *cpqfcHBAdata = NULL; CPQFCHBA *cpqfcHBAdata = NULL;
struct timer_list *cpqfcTStimer = NULL; struct timer_list *cpqfcTStimer = NULL;
SupportedPCIcards PCIids[HBA_TYPES];
int i; int i;
ENTER("cpqfcTS_detect"); ENTER("cpqfcTS_detect");
#if LINUX_VERSION_CODE < LinuxVersionCode(2,3,27) #if LINUX_VERSION_CODE < LinuxVersionCode(2,3,27)
ScsiHostTemplate->proc_dir = &proc_scsi_cpqfcTS; ScsiHostTemplate->proc_dir = &proc_scsi_cpqfcTS;
#else #else
ScsiHostTemplate->proc_name = "cpqfcTS"; ScsiHostTemplate->proc_name = "cpqfcTS";
#endif #endif
if( pci_present() == 0) // no PCI busses? if( pci_present() == 0) // no PCI busses?
{ {
printk( " no PCI bus?@#!\n"); printk( " no PCI bus?@#!\n");
return NumberOfAdapters; 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++) for( i=0; i < HBA_TYPES; i++)
{ {
// look for all HBAs of each type // look for all HBAs of each type
while( (PciDev = while((PciDev = pci_find_device(cpqfc_boards[i].vendor_id,
pci_find_device( PCIids[i].vendor_id, PCIids[i].device_id, PciDev) )) cpqfc_boards[i].device_id, PciDev)))
{ {
if (pci_set_dma_mask(PciDev, CPQFCTS_DMA_MASK) != 0) { if (pci_set_dma_mask(PciDev, CPQFCTS_DMA_MASK) != 0) {
......
...@@ -95,14 +95,11 @@ ...@@ -95,14 +95,11 @@
#define DEV_NAME "cpqfcTS" #define DEV_NAME "cpqfcTS"
#define CPQ_DEVICE_ID 0xA0FC struct SupportedPCIcards
#define AGILENT_XL2_ID 0x1029
typedef struct
{ {
__u16 vendor_id; __u16 vendor_id;
__u16 device_id; __u16 device_id;
} SupportedPCIcards; };
// nn:nn denotes bit field // nn:nn denotes bit field
// TachyonHeader struct def. // TachyonHeader struct def.
......
...@@ -133,6 +133,7 @@ ...@@ -133,6 +133,7 @@
#define PCI_DEVICE_ID_COMPAQ_1280 0x3033 #define PCI_DEVICE_ID_COMPAQ_1280 0x3033
#define PCI_DEVICE_ID_COMPAQ_TRIFLEX 0x4000 #define PCI_DEVICE_ID_COMPAQ_TRIFLEX 0x4000
#define PCI_DEVICE_ID_COMPAQ_6010 0x6010 #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_SMART2P 0xae10
#define PCI_DEVICE_ID_COMPAQ_NETEL100 0xae32 #define PCI_DEVICE_ID_COMPAQ_NETEL100 0xae32
#define PCI_DEVICE_ID_COMPAQ_NETEL10 0xae34 #define PCI_DEVICE_ID_COMPAQ_NETEL10 0xae34
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment