cpqfcTSinit has a static array of PCI device and vendor ids supported by the driver. Sounds familiar, doesn't it? Use pci_device_id as type for the entries of this array and declare the array as MODULE_DEVICE_TABLE. Also use pci_get_device() instead of pci_find_device() and remove some superfluos defines for device scanning. Version 2: -use PCI_DEVICE makro (thanks to Jiri Slaby for pointing this out) -fix compile error (diffed wrong files) Signed-off-by: Rolf Eike Beer <eike-kernel@xxxxxxxxx> --- a/drivers/scsi/cpqfcTSstructs.h 2005-08-14 10:56:41.000000000 +0200 +++ b/drivers/scsi/cpqfcTSstructs.h 2005-08-14 10:57:32.000000000 +0200 @@ -95,12 +95,6 @@ #define DEV_NAME "cpqfcTS" -struct SupportedPCIcards -{ - __u16 vendor_id; - __u16 device_id; -}; - // nn:nn denotes bit field // TachyonHeader struct def. // the fields shared with ODB --- a/drivers/scsi/cpqfcTSinit.c 2005-08-14 14:20:40.000000000 +0200 +++ b/drivers/scsi/cpqfcTSinit.c 2005-08-14 14:25:33.000000000 +0200 @@ -264,18 +264,14 @@ static void launch_FCworker_thread(struc * 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}, +static struct pci_device_id cpqfc_boards[] __initdata = { + {PCI_DEVICE(PCI_VENDOR_ID_COMPAQ, PCI_DEVICE_ID_COMPAQ_TACHYON), 0, 0, 0}, + {PCI_DEVICE(PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_TACHLITE), 0, 0, 0}, + {PCI_DEVICE(PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_TACHYON), 0, 0, 0}, + {0, } }; +MODULE_DEVICE_TABLE(pci, cpqfc_boards); int cpqfcTS_detect(Scsi_Host_Template *ScsiHostTemplate) { @@ -294,14 +290,9 @@ int cpqfcTS_detect(Scsi_Host_Template *S ScsiHostTemplate->proc_name = "cpqfcTS"; #endif - for( i=0; i < HBA_TYPES; i++) - { - // look for all HBAs of each type - - while((PciDev = pci_find_device(cpqfc_boards[i].vendor_id, - cpqfc_boards[i].device_id, PciDev))) - { - + for(i = 0; cpqfc_boards[i].vendor; i++) { + while((PciDev = pci_get_device(cpqfc_boards[i].vendor, + cpqfc_boards[i].device, PciDev))) { if (pci_enable_device(PciDev)) { printk(KERN_ERR "cpqfc: can't enable PCI device at %s\n", pci_name(PciDev)); - : send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html