Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/isp/isp_pci.c
Show First 20 Lines • Show All 298 Lines • ▼ Show 20 Lines | |||||
/* | /* | ||||
* Odd case for some AMI raid cards... We need to *not* attach to this. | * Odd case for some AMI raid cards... We need to *not* attach to this. | ||||
*/ | */ | ||||
#define AMI_RAID_SUBVENDOR_ID 0x101e | #define AMI_RAID_SUBVENDOR_ID 0x101e | ||||
#define PCI_DFLT_LTNCY 0x40 | #define PCI_DFLT_LTNCY 0x40 | ||||
#define PCI_DFLT_LNSZ 0x10 | #define PCI_DFLT_LNSZ 0x10 | ||||
struct pci_device_table isp_devs[] = { | |||||
{PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP1020), | |||||
PCI_DESCR("Qlogic ISP 1020/1040 PCI SCSI Adapter")}, | |||||
{PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP1080), | |||||
PCI_DESCR("Qlogic ISP 1080 PCI SCSI Adapter")}, | |||||
{PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP1240), | |||||
PCI_DESCR("Qlogic ISP 1240 PCI SCSI Adapter")}, | |||||
{PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP1280), | |||||
PCI_DESCR("Qlogic ISP 1280 PCI SCSI Adapter")}, | |||||
{PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP10160), | |||||
PCI_DESCR("Qlogic ISP 10160 PCI SCSI Adapter")}, | |||||
{PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP12160), | |||||
PCI_DESCR("Qlogic ISP 12160 PCI SCSI Adapter")}, | |||||
{PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP1280), | |||||
PCI_DESCR("Qlogic ISP 1280 PCI SCSI Adapter")}, | |||||
{PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2100), | |||||
PCI_DESCR("Qlogic ISP 2100 PCI FC-AL Adapter")}, | |||||
{PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2200), | |||||
PCI_DESCR("Qlogic ISP 2200 PCI FC-AL Adapter")}, | |||||
{PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2300), | |||||
PCI_DESCR("Qlogic ISP 2300 PCI FC-AL Adapter")}, | |||||
{PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2312), | |||||
PCI_DESCR("Qlogic ISP 2312 PCI FC-AL Adapter")}, | |||||
{PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2322), | |||||
PCI_DESCR("Qlogic ISP 2322 PCI FC-AL Adapter")}, | |||||
{PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2422), | |||||
PCI_DESCR("Qlogic ISP 2422 PCI FC-AL Adapter")}, | |||||
{PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2432), | |||||
PCI_DESCR("Qlogic ISP 2432 PCI FC-AL Adapter")}, | |||||
{PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2532), | |||||
PCI_DESCR("Qlogic ISP 2532 PCI FC-AL Adapter")}, | |||||
{PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP5432), | |||||
PCI_DESCR("Qlogic ISP 5432 PCI FC-AL Adapter")}, | |||||
{PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP6312), | |||||
PCI_DESCR("Qlogic ISP 6312 PCI FC-AL Adapter")}, | |||||
{PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP6322), | |||||
PCI_DESCR("Qlogic ISP 6322 PCI FC-AL Adapter")}, | |||||
{PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2031), | |||||
PCI_DESCR("Qlogic ISP 2031 PCI FC-AL Adapter")}, | |||||
{PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP8031), | |||||
PCI_DESCR("Qlogic ISP 8031 PCI FCoE Adapter")}, | |||||
{PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2684), | |||||
PCI_DESCR("Qlogic ISP 2684 PCI FC Adapter")}, | |||||
{PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2692), | |||||
PCI_DESCR("Qlogic ISP 2692 PCI FC Adapter")}, | |||||
{PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2714), | |||||
PCI_DESCR("Qlogic ISP 2714 PCI FC Adapter")}, | |||||
{PCI_DEV(PCI_VENDOR_QLOGIC, PCI_PRODUCT_QLOGIC_ISP2722), | |||||
PCI_DESCR("Qlogic ISP 2722 PCI FC Adapter")} | |||||
}; | |||||
static int isp_pci_probe (device_t); | static int isp_pci_probe (device_t); | ||||
static int isp_pci_attach (device_t); | static int isp_pci_attach (device_t); | ||||
static int isp_pci_detach (device_t); | static int isp_pci_detach (device_t); | ||||
#define ISP_PCD(isp) ((struct isp_pcisoftc *)isp)->pci_dev | #define ISP_PCD(isp) ((struct isp_pcisoftc *)isp)->pci_dev | ||||
struct isp_pcisoftc { | struct isp_pcisoftc { | ||||
ispsoftc_t pci_isp; | ispsoftc_t pci_isp; | ||||
Show All 26 Lines | static device_method_t isp_pci_methods[] = { | ||||
{ 0, 0 } | { 0, 0 } | ||||
}; | }; | ||||
static driver_t isp_pci_driver = { | static driver_t isp_pci_driver = { | ||||
"isp", isp_pci_methods, sizeof (struct isp_pcisoftc) | "isp", isp_pci_methods, sizeof (struct isp_pcisoftc) | ||||
}; | }; | ||||
static devclass_t isp_devclass; | static devclass_t isp_devclass; | ||||
DRIVER_MODULE(isp, pci, isp_pci_driver, isp_devclass, 0, 0); | DRIVER_MODULE(isp, pci, isp_pci_driver, isp_devclass, 0, 0); | ||||
PCI_PNP_INFO(isp_devs); | |||||
MODULE_DEPEND(isp, cam, 1, 1, 1); | MODULE_DEPEND(isp, cam, 1, 1, 1); | ||||
MODULE_DEPEND(isp, firmware, 1, 1, 1); | MODULE_DEPEND(isp, firmware, 1, 1, 1); | ||||
static int isp_nvports = 0; | static int isp_nvports = 0; | ||||
static int | static int | ||||
isp_pci_probe(device_t dev) | isp_pci_probe(device_t dev) | ||||
{ | { | ||||
switch ((pci_get_device(dev) << 16) | (pci_get_vendor(dev))) { | const struct pci_device_table *ispd; | ||||
case PCI_QLOGIC_ISP1020: | |||||
device_set_desc(dev, "Qlogic ISP 1020/1040 PCI SCSI Adapter"); | ispd = PCI_MATCH(dev, isp_devs); | ||||
break; | if (ispd == NULL) | ||||
case PCI_QLOGIC_ISP1080: | |||||
device_set_desc(dev, "Qlogic ISP 1080 PCI SCSI Adapter"); | |||||
break; | |||||
case PCI_QLOGIC_ISP1240: | |||||
device_set_desc(dev, "Qlogic ISP 1240 PCI SCSI Adapter"); | |||||
break; | |||||
case PCI_QLOGIC_ISP1280: | |||||
device_set_desc(dev, "Qlogic ISP 1280 PCI SCSI Adapter"); | |||||
break; | |||||
case PCI_QLOGIC_ISP10160: | |||||
device_set_desc(dev, "Qlogic ISP 10160 PCI SCSI Adapter"); | |||||
break; | |||||
case PCI_QLOGIC_ISP12160: | |||||
if (pci_get_subvendor(dev) == AMI_RAID_SUBVENDOR_ID) { | |||||
return (ENXIO); | return (ENXIO); | ||||
} | else if (ispd->device == PCI_PRODUCT_QLOGIC_ISP12160 && | ||||
device_set_desc(dev, "Qlogic ISP 12160 PCI SCSI Adapter"); | pci_get_subvendor(dev) == AMI_RAID_SUBVENDOR_ID) | ||||
break; | |||||
case PCI_QLOGIC_ISP2100: | |||||
device_set_desc(dev, "Qlogic ISP 2100 PCI FC-AL Adapter"); | |||||
break; | |||||
case PCI_QLOGIC_ISP2200: | |||||
device_set_desc(dev, "Qlogic ISP 2200 PCI FC-AL Adapter"); | |||||
break; | |||||
case PCI_QLOGIC_ISP2300: | |||||
device_set_desc(dev, "Qlogic ISP 2300 PCI FC-AL Adapter"); | |||||
break; | |||||
case PCI_QLOGIC_ISP2312: | |||||
device_set_desc(dev, "Qlogic ISP 2312 PCI FC-AL Adapter"); | |||||
break; | |||||
case PCI_QLOGIC_ISP2322: | |||||
device_set_desc(dev, "Qlogic ISP 2322 PCI FC-AL Adapter"); | |||||
break; | |||||
case PCI_QLOGIC_ISP2422: | |||||
device_set_desc(dev, "Qlogic ISP 2422 PCI FC-AL Adapter"); | |||||
break; | |||||
case PCI_QLOGIC_ISP2432: | |||||
device_set_desc(dev, "Qlogic ISP 2432 PCI FC-AL Adapter"); | |||||
break; | |||||
case PCI_QLOGIC_ISP2532: | |||||
device_set_desc(dev, "Qlogic ISP 2532 PCI FC-AL Adapter"); | |||||
break; | |||||
case PCI_QLOGIC_ISP5432: | |||||
device_set_desc(dev, "Qlogic ISP 5432 PCI FC-AL Adapter"); | |||||
break; | |||||
case PCI_QLOGIC_ISP6312: | |||||
device_set_desc(dev, "Qlogic ISP 6312 PCI FC-AL Adapter"); | |||||
break; | |||||
case PCI_QLOGIC_ISP6322: | |||||
device_set_desc(dev, "Qlogic ISP 6322 PCI FC-AL Adapter"); | |||||
break; | |||||
case PCI_QLOGIC_ISP2031: | |||||
device_set_desc(dev, "Qlogic ISP 2031 PCI FC-AL Adapter"); | |||||
break; | |||||
case PCI_QLOGIC_ISP8031: | |||||
device_set_desc(dev, "Qlogic ISP 8031 PCI FCoE Adapter"); | |||||
break; | |||||
case PCI_QLOGIC_ISP2684: | |||||
device_set_desc(dev, "Qlogic ISP 2684 PCI FC Adapter"); | |||||
break; | |||||
case PCI_QLOGIC_ISP2692: | |||||
device_set_desc(dev, "Qlogic ISP 2692 PCI FC Adapter"); | |||||
break; | |||||
case PCI_QLOGIC_ISP2714: | |||||
device_set_desc(dev, "Qlogic ISP 2714 PCI FC Adapter"); | |||||
break; | |||||
case PCI_QLOGIC_ISP2722: | |||||
device_set_desc(dev, "Qlogic ISP 2722 PCI FC Adapter"); | |||||
break; | |||||
default: | |||||
return (ENXIO); | return (ENXIO); | ||||
} | device_set_desc(dev, ispd->descr); | ||||
if (isp_announced == 0 && bootverbose) { | if (isp_announced == 0 && bootverbose) { | ||||
printf("Qlogic ISP Driver, FreeBSD Version %d.%d, " | printf("Qlogic ISP Driver, FreeBSD Version %d.%d, " | ||||
"Core Version %d.%d\n", | "Core Version %d.%d\n", | ||||
ISP_PLATFORM_VERSION_MAJOR, ISP_PLATFORM_VERSION_MINOR, | ISP_PLATFORM_VERSION_MAJOR, ISP_PLATFORM_VERSION_MINOR, | ||||
ISP_CORE_VERSION_MAJOR, ISP_CORE_VERSION_MINOR); | ISP_CORE_VERSION_MAJOR, ISP_CORE_VERSION_MINOR); | ||||
isp_announced++; | isp_announced++; | ||||
} | } | ||||
/* | /* | ||||
▲ Show 20 Lines • Show All 1,555 Lines • Show Last 20 Lines |