[PATCH 2.6.13-rc6] MODULE_DEVICE_TABLE for cpqfcTS driver, take 2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <[email protected]>

--- 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));
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]
  Powered by Linux