Linux 2.6.17.7
[linux/fpc-iii.git] / drivers / scsi / qla2xxx / ql2400.c
blob77914fcfa2bca1ee82b1c600a9b51df3a1082209
1 /*
2 * QLogic Fibre Channel HBA Driver
3 * Copyright (c) 2003-2005 QLogic Corporation
5 * See LICENSE.qla2xxx for copyright and licensing details.
6 */
7 #include <linux/init.h>
8 #include <linux/module.h>
9 #include <linux/pci.h>
11 #include "qla_def.h"
13 static char qla_driver_name[] = "qla2400";
15 extern uint32_t fw2400_version_str[];
16 extern uint32_t fw2400_addr01;
17 extern uint32_t fw2400_code01[];
18 extern uint32_t fw2400_length01;
19 extern uint32_t fw2400_addr02;
20 extern uint32_t fw2400_code02[];
21 extern uint32_t fw2400_length02;
23 static struct qla_fw_info qla_fw_tbl[] = {
25 .addressing = FW_INFO_ADDR_EXTENDED,
26 .fwcode = (unsigned short *)&fw2400_code01[0],
27 .fwlen = (unsigned short *)&fw2400_length01,
28 .lfwstart = (unsigned long *)&fw2400_addr01,
31 .addressing = FW_INFO_ADDR_EXTENDED,
32 .fwcode = (unsigned short *)&fw2400_code02[0],
33 .fwlen = (unsigned short *)&fw2400_length02,
34 .lfwstart = (unsigned long *)&fw2400_addr02,
36 { FW_INFO_ADDR_NOMORE, },
39 static struct qla_board_info qla_board_tbl[] = {
41 .drv_name = qla_driver_name,
42 .isp_name = "ISP2422",
43 .fw_info = qla_fw_tbl,
44 .fw_fname = "ql2400_fw.bin",
47 .drv_name = qla_driver_name,
48 .isp_name = "ISP2432",
49 .fw_info = qla_fw_tbl,
50 .fw_fname = "ql2400_fw.bin",
53 .drv_name = qla_driver_name,
54 .isp_name = "ISP5422",
55 .fw_info = qla_fw_tbl,
56 .fw_fname = "ql2400_fw.bin",
59 .drv_name = qla_driver_name,
60 .isp_name = "ISP5432",
61 .fw_info = qla_fw_tbl,
62 .fw_fname = "ql2400_fw.bin",
66 static struct pci_device_id qla24xx_pci_tbl[] = {
68 .vendor = PCI_VENDOR_ID_QLOGIC,
69 .device = PCI_DEVICE_ID_QLOGIC_ISP2422,
70 .subvendor = PCI_ANY_ID,
71 .subdevice = PCI_ANY_ID,
72 .driver_data = (unsigned long)&qla_board_tbl[0],
75 .vendor = PCI_VENDOR_ID_QLOGIC,
76 .device = PCI_DEVICE_ID_QLOGIC_ISP2432,
77 .subvendor = PCI_ANY_ID,
78 .subdevice = PCI_ANY_ID,
79 .driver_data = (unsigned long)&qla_board_tbl[1],
82 .vendor = PCI_VENDOR_ID_QLOGIC,
83 .device = PCI_DEVICE_ID_QLOGIC_ISP5422,
84 .subvendor = PCI_ANY_ID,
85 .subdevice = PCI_ANY_ID,
86 .driver_data = (unsigned long)&qla_board_tbl[2],
89 .vendor = PCI_VENDOR_ID_QLOGIC,
90 .device = PCI_DEVICE_ID_QLOGIC_ISP5432,
91 .subvendor = PCI_ANY_ID,
92 .subdevice = PCI_ANY_ID,
93 .driver_data = (unsigned long)&qla_board_tbl[3],
96 {0, 0},
98 MODULE_DEVICE_TABLE(pci, qla24xx_pci_tbl);
100 static int __devinit
101 qla24xx_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
103 return qla2x00_probe_one(pdev,
104 (struct qla_board_info *)id->driver_data);
107 static void __devexit
108 qla24xx_remove_one(struct pci_dev *pdev)
110 qla2x00_remove_one(pdev);
113 static struct pci_driver qla24xx_pci_driver = {
114 .name = "qla2400",
115 .id_table = qla24xx_pci_tbl,
116 .probe = qla24xx_probe_one,
117 .remove = __devexit_p(qla24xx_remove_one),
120 static int __init
121 qla24xx_init(void)
123 return pci_module_init(&qla24xx_pci_driver);
126 static void __exit
127 qla24xx_exit(void)
129 pci_unregister_driver(&qla24xx_pci_driver);
132 module_init(qla24xx_init);
133 module_exit(qla24xx_exit);
135 MODULE_AUTHOR("QLogic Corporation");
136 MODULE_DESCRIPTION("QLogic ISP24xx FC-SCSI Host Bus Adapter driver");
137 MODULE_LICENSE("GPL");
138 MODULE_VERSION(QLA2XXX_VERSION);