Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F111874152
D15996.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
33 KB
Referenced Files
None
Subscribers
None
D15996.diff
View Options
Index: sys/dev/arcmsr/arcmsr.c
===================================================================
--- sys/dev/arcmsr/arcmsr.c
+++ sys/dev/arcmsr/arcmsr.c
@@ -213,6 +213,96 @@
static d_close_t arcmsr_close;
static d_ioctl_t arcmsr_ioctl;
+static struct arcmsr_dev {
+ uint16_t vendorid;
+ uint32_t deviceid;
+ uint16_t subdeviceid;
+ char *description;
+} arcmsr_devs[] = {
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1110, 0,
+ "Areca SATA 3G Host Adapter RAID Controller"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1200, 0,
+ "Areca SATA 3G Host Adapter RAID Controller"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1201, 0,
+ "Areca SATA 3G Host Adapter RAID Controller"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1210, 0,
+ "Areca SATA 3G Host Adapter RAID Controller"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1120, 0,
+ "Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1130, 0,
+ "Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1160, 0,
+ "Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1170, 0,
+ "Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1220, 0,
+ "Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1230, 0,
+ "Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1231, 0,
+ "Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1260, 0,
+ "Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1261, 0,
+ "Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1270, 0,
+ "Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1280, 0,
+ "Areca SATA 3G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1212, 0,
+ "Areca SAS 3G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1222, 0,
+ "Areca SAS 3G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1380, 0,
+ "Areca SAS 3G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1381, 0,
+ "Areca SAS 3G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1680, 0,
+ "Areca SAS 3G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1681, 0,
+ "Areca SAS 3G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1880, 0,
+ "Areca SAS 6G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1882, 0,
+ "Areca SAS 6G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1213, 0,
+ "Areca SAS 6G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1223, 0,
+ "Areca SAS 6G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1880, ARECA_SUB_DEV_ID_1883,
+ "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1882, ARECA_SUB_DEV_ID_1883,
+ "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1213, ARECA_SUB_DEV_ID_1883,
+ "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1223, ARECA_SUB_DEV_ID_1883,
+ "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1880, ARECA_SUB_DEV_ID_1216,
+ "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1882, ARECA_SUB_DEV_ID_1216,
+ "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1213, ARECA_SUB_DEV_ID_1216,
+ "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1223, ARECA_SUB_DEV_ID_1216,
+ "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1880, ARECA_SUB_DEV_ID_1226,
+ "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1882, ARECA_SUB_DEV_ID_1226,
+ "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1213, ARECA_SUB_DEV_ID_1226,
+ "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1223, ARECA_SUB_DEV_ID_1226,
+ "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1884, 0,
+ "Areca SAS 12G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1214, 0,
+ "Areca SATA 6G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {PCI_VENDOR_ID_ARECA, PCIDevVenIDARC1203, 0,
+ "Areca SATA 6G Host Adapter RAID Controller\n(RAID6 capable)"},
+ {0, 0, 0, 0},
+};
+
+
static device_method_t arcmsr_methods[]={
DEVMETHOD(device_probe, arcmsr_probe),
DEVMETHOD(device_attach, arcmsr_attach),
@@ -234,6 +324,8 @@
static devclass_t arcmsr_devclass;
DRIVER_MODULE(arcmsr, pci, arcmsr_driver, arcmsr_devclass, 0, 0);
+MODULE_PNP_INFO("U16:vendor;W32:vendor/device;U16:subdevice;D:#", pci, arcmsr,
+ arcmsr_devs, sizeof(arcmsr_devs[0]), nitems(arcmsr_devs) - 1);
MODULE_DEPEND(arcmsr, pci, 1, 1, 1);
MODULE_DEPEND(arcmsr, cam, 1, 1, 1);
#ifndef BUS_DMA_COHERENT
@@ -4908,74 +5000,28 @@
*/
static int arcmsr_probe(device_t dev)
{
- u_int32_t id;
+ const struct arcmsr_dev *arcd;
+ u_int32_t did;
+ size_t i;
u_int16_t sub_device_id;
- static char buf[256];
- char x_type[]={"unknown"};
- char *type;
- int raid6 = 1;
+ char buf[256];
if (pci_get_vendor(dev) != PCI_VENDOR_ID_ARECA) {
return (ENXIO);
}
+ did = pci_get_devid(dev);
sub_device_id = pci_read_config(dev, PCIR_SUBDEV_0, 2);
- switch(id = pci_get_devid(dev)) {
- case PCIDevVenIDARC1110:
- case PCIDevVenIDARC1200:
- case PCIDevVenIDARC1201:
- case PCIDevVenIDARC1210:
- raid6 = 0;
- /*FALLTHRU*/
- case PCIDevVenIDARC1120:
- case PCIDevVenIDARC1130:
- case PCIDevVenIDARC1160:
- case PCIDevVenIDARC1170:
- case PCIDevVenIDARC1220:
- case PCIDevVenIDARC1230:
- case PCIDevVenIDARC1231:
- case PCIDevVenIDARC1260:
- case PCIDevVenIDARC1261:
- case PCIDevVenIDARC1270:
- case PCIDevVenIDARC1280:
- type = "SATA 3G";
- break;
- case PCIDevVenIDARC1212:
- case PCIDevVenIDARC1222:
- case PCIDevVenIDARC1380:
- case PCIDevVenIDARC1381:
- case PCIDevVenIDARC1680:
- case PCIDevVenIDARC1681:
- type = "SAS 3G";
- break;
- case PCIDevVenIDARC1880:
- case PCIDevVenIDARC1882:
- case PCIDevVenIDARC1213:
- case PCIDevVenIDARC1223:
- if ((sub_device_id == ARECA_SUB_DEV_ID_1883) ||
- (sub_device_id == ARECA_SUB_DEV_ID_1216) ||
- (sub_device_id == ARECA_SUB_DEV_ID_1226))
- type = "SAS 12G";
- else
- type = "SAS 6G";
- break;
- case PCIDevVenIDARC1884:
- type = "SAS 12G";
- break;
- case PCIDevVenIDARC1214:
- case PCIDevVenIDARC1203:
- type = "SATA 6G";
- break;
- default:
- type = x_type;
- raid6 = 0;
- break;
+ for (i = 0; i < nitems(arcmsr_devs); i++) {
+ arcd = &arcmsr_devs[i];
+ if ((arcd->deviceid == did) &&
+ ((arcd->subdeviceid == sub_device_id)
+ || (arcd->subdeviceid == 0))) {
+ sprintf(buf, "%s\n%s\n", arcd->description, ARCMSR_DRIVER_VERSION);
+ device_set_desc_copy(dev, buf);
+ return (BUS_PROBE_DEFAULT);
+ }
}
- if(type == x_type)
- return(ENXIO);
- sprintf(buf, "Areca %s Host Adapter RAID Controller %s\n%s\n",
- type, raid6 ? "(RAID6 capable)" : "", ARCMSR_DRIVER_VERSION);
- device_set_desc_copy(dev, buf);
- return (BUS_PROBE_DEFAULT);
+ return(ENXIO);
}
/*
************************************************************************
Index: sys/dev/buslogic/bt_pci.c
===================================================================
--- sys/dev/buslogic/bt_pci.c
+++ sys/dev/buslogic/bt_pci.c
@@ -56,6 +56,18 @@
#define PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER_NC 0x0140104Bul
#define PCI_DEVICE_ID_BUSLOGIC_FLASHPOINT 0x8130104Bul
+static struct bt_dev {
+ uint16_t vendorid;
+ uint32_t deviceid;
+ const char *description;
+} bt_devs[] = {
+ {0x104B, PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER,
+ "Buslogic Multi-Master SCSI Host Adapter"},
+ {0x104B, PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER_NC,
+ "Buslogic Multi-Master SCSI Host Adapter"},
+ {0, 0, 0},
+};
+
static int
bt_pci_alloc_resources(device_t dev)
{
@@ -106,10 +118,14 @@
static int
bt_pci_probe(device_t dev)
{
- switch (pci_get_devid(dev)) {
- case PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER:
- case PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER_NC:
- {
+ const struct bt_dev *btd;
+ uint32_t did;
+ size_t i;
+
+ did = pci_get_devid(dev);
+ for (i = 0; i < nitems(bt_devs) - 1; i++) {
+ btd = &bt_devs[i];
+ if (btd->deviceid == did) {
struct bt_softc *bt = device_get_softc(dev);
pci_info_data_t pci_info;
int error;
@@ -128,29 +144,26 @@
/*param*/NULL, /*paramlen*/0,
(u_int8_t*)&pci_info, sizeof(pci_info),
DEFAULT_CMD_TIMEOUT);
- if (error == 0
- && pci_info.io_port < BIO_DISABLED) {
- bt_mark_probed_bio(pci_info.io_port);
- if (rman_get_start(bt->port) !=
- bt_iop_from_bio(pci_info.io_port)) {
- u_int8_t new_addr;
-
- new_addr = BIO_DISABLED;
- bt_cmd(bt, BOP_MODIFY_IO_ADDR,
- /*param*/&new_addr,
- /*paramlen*/1, /*reply_buf*/NULL,
- /*reply_len*/0,
- DEFAULT_CMD_TIMEOUT);
+ if (error == 0
+ && pci_info.io_port < BIO_DISABLED) {
+ bt_mark_probed_bio(pci_info.io_port);
+ if (rman_get_start(bt->port) !=
+ bt_iop_from_bio(pci_info.io_port)) {
+ u_int8_t new_addr;
+
+ new_addr = BIO_DISABLED;
+ bt_cmd(bt, BOP_MODIFY_IO_ADDR,
+ /*param*/&new_addr,
+ /*paramlen*/1, /*reply_buf*/NULL,
+ /*reply_len*/0,
+ DEFAULT_CMD_TIMEOUT);
}
- }
- bt_pci_release_resources(dev);
- device_set_desc(dev, "Buslogic Multi-Master SCSI Host Adapter");
- return (BUS_PROBE_DEFAULT);
+ }
+ bt_pci_release_resources(dev);
+ device_set_desc(dev, btd->description);
+ return (BUS_PROBE_DEFAULT);
}
- default:
- break;
}
-
return (ENXIO);
}
@@ -218,4 +231,6 @@
static devclass_t bt_devclass;
DRIVER_MODULE(bt, pci, bt_pci_driver, bt_devclass, 0, 0);
+MODULE_PNP_INFO("U16:vendor;W32:vendor/device;D:#", pci, bt, bt_devs,
+ sizeof(bt_devs[0]), nitems(bt_devs) - 1);
MODULE_DEPEND(bt, pci, 1, 1, 1);
Index: sys/dev/de/if_de.c
===================================================================
--- sys/dev/de/if_de.c
+++ sys/dev/de/if_de.c
@@ -161,6 +161,21 @@
static void tulip_dma_map_rxbuf(void *, bus_dma_segment_t *, int,
bus_size_t, int);
+static struct de_dev {
+ uint16_t vendorid;
+ uint16_t deviceid;
+ uint8_t revid;
+ const char *description;
+} de_devs[] = {
+ {DEC_VENDORID, CHIPID_21040, 0, "Digital 21040 Ethernet"},
+ {DEC_VENDORID, CHIPID_21041, 0, "Digital 21041 Ethernet"},
+ {DEC_VENDORID, CHIPID_21140, 0, "Digital 21140 Fast Ethernet"},
+ {DEC_VENDORID, CHIPID_21140, 0x20, "Digital 21140A Fast Ethernet"},
+ {DEC_VENDORID, CHIPID_21142, 0, "Digital 21142 Fast Ethernet"},
+ {DEC_VENDORID, CHIPID_21142, 0x20, "Digital 21143 Fast Ethernet"},
+ {0, 0, 0, 0},
+};
+
static void
tulip_dma_map_addr(void *arg, bus_dma_segment_t *segs, int nseg, int error)
{
@@ -4670,43 +4685,39 @@
static int
tulip_pci_probe(device_t dev)
{
- const char *name = NULL;
+ const char *name = NULL;
+ const struct de_dev *ded;
+ uint16_t vid;
+ uint16_t did;
+ uint8_t revid;
+ size_t i;
+
+ vid = pci_get_vendor(dev);
+ did = pci_get_device(dev);
+ revid = pci_get_revid(dev);
+
+ if (vid != DEC_VENDORID)
+ return ENXIO;
- if (pci_get_vendor(dev) != DEC_VENDORID)
- return ENXIO;
+ /*
+ * Some LanMedia WAN cards use the Tulip chip, but they have
+ * their own driver, and we should not recognize them
+ */
+ if (pci_get_subvendor(dev) == 0x1376)
+ return ENXIO;
- /*
- * Some LanMedia WAN cards use the Tulip chip, but they have
- * their own driver, and we should not recognize them
- */
- if (pci_get_subvendor(dev) == 0x1376)
+ for (i = 0; i < nitems(de_devs); i++) {
+ ded = &de_devs[i];
+ if ((ded->deviceid == did) &&
+ ((revid >= ded->revid) || (ded->revid == 0))) {
+ name = ded->description;
+ }
+ }
+ if (name) {
+ device_set_desc(dev, name);
+ return BUS_PROBE_LOW_PRIORITY;
+ }
return ENXIO;
-
- switch (pci_get_device(dev)) {
- case CHIPID_21040:
- name = "Digital 21040 Ethernet";
- break;
- case CHIPID_21041:
- name = "Digital 21041 Ethernet";
- break;
- case CHIPID_21140:
- if (pci_get_revid(dev) >= 0x20)
- name = "Digital 21140A Fast Ethernet";
- else
- name = "Digital 21140 Fast Ethernet";
- break;
- case CHIPID_21142:
- if (pci_get_revid(dev) >= 0x20)
- name = "Digital 21143 Fast Ethernet";
- else
- name = "Digital 21142 Fast Ethernet";
- break;
- }
- if (name) {
- device_set_desc(dev, name);
- return BUS_PROBE_LOW_PRIORITY;
- }
- return ENXIO;
}
static int
@@ -4908,6 +4919,8 @@
static devclass_t tulip_devclass;
DRIVER_MODULE(de, pci, tulip_pci_driver, tulip_devclass, 0, 0);
+MODULE_PNP_INFO("U16:vendor;U16:device", pci, de, de_devs,
+ sizeof(de_devs[0]), nitems(de_devs) - 1);
#ifdef DDB
void tulip_dumpring(int unit, int ring);
Index: sys/dev/hifn/hifn7751.c
===================================================================
--- sys/dev/hifn/hifn7751.c
+++ sys/dev/hifn/hifn7751.c
@@ -106,6 +106,21 @@
static int hifn_freesession(device_t, u_int64_t);
static int hifn_process(device_t, struct cryptop *, int);
+static struct hifn_dev {
+ uint16_t vendorid;
+ uint16_t deviceid;
+} hifn_devs[] = {
+ {PCI_VENDOR_INVERTEX, PCI_PRODUCT_INVERTEX_AEON},
+ {PCI_VENDOR_HIFN, PCI_PRODUCT_HIFN_7751},
+ {PCI_VENDOR_HIFN, PCI_PRODUCT_HIFN_7951},
+ {PCI_VENDOR_HIFN, PCI_PRODUCT_HIFN_7955},
+ {PCI_VENDOR_HIFN, PCI_PRODUCT_HIFN_7956},
+ {PCI_VENDOR_HIFN, PCI_PRODUCT_HIFN_7811},
+ {PCI_VENDOR_NETSEC, PCI_PRODUCT_NETSEC_7751},
+ {0, 0},
+};
+
+
static device_method_t hifn_methods[] = {
/* Device interface */
DEVMETHOD(device_probe, hifn_probe),
@@ -130,6 +145,8 @@
static devclass_t hifn_devclass;
DRIVER_MODULE(hifn, pci, hifn_driver, hifn_devclass, 0, 0);
+MODULE_PNP_INFO("U16:vendor;U16:device", pci, hifn, hifn_devs,
+ sizeof(hifn_devs[0]), nitems(hifn_devs) - 1);
MODULE_DEPEND(hifn, crypto, 1, 1, 1);
#ifdef HIFN_RNDTEST
MODULE_DEPEND(hifn, rndtest, 1, 1, 1);
@@ -205,19 +222,20 @@
static int
hifn_probe(device_t dev)
{
- if (pci_get_vendor(dev) == PCI_VENDOR_INVERTEX &&
- pci_get_device(dev) == PCI_PRODUCT_INVERTEX_AEON)
- return (BUS_PROBE_DEFAULT);
- if (pci_get_vendor(dev) == PCI_VENDOR_HIFN &&
- (pci_get_device(dev) == PCI_PRODUCT_HIFN_7751 ||
- pci_get_device(dev) == PCI_PRODUCT_HIFN_7951 ||
- pci_get_device(dev) == PCI_PRODUCT_HIFN_7955 ||
- pci_get_device(dev) == PCI_PRODUCT_HIFN_7956 ||
- pci_get_device(dev) == PCI_PRODUCT_HIFN_7811))
- return (BUS_PROBE_DEFAULT);
- if (pci_get_vendor(dev) == PCI_VENDOR_NETSEC &&
- pci_get_device(dev) == PCI_PRODUCT_NETSEC_7751)
- return (BUS_PROBE_DEFAULT);
+ const struct hifn_dev *hifd;
+ size_t i;
+ u_int16_t vid;
+ u_int16_t did;
+
+ vid = pci_get_vendor(dev);
+ did = pci_get_device(dev);
+ for (i = 0; i < nitems(hifn_devs); i++) {
+ hifd = &hifn_devs[i];
+ if ((hifd->vendorid == vid) &&
+ (hifd->deviceid == did)) {
+ return (BUS_PROBE_DEFAULT);
+ }
+ }
return (ENXIO);
}
Index: sys/dev/hptiop/hptiop.c
===================================================================
--- sys/dev/hptiop/hptiop.c
+++ sys/dev/hptiop/hptiop.c
@@ -1805,13 +1805,60 @@
sizeof(struct hpt_iop_hba)
};
+static struct hptiop_dev {
+ uint16_t vendorid;
+ uint16_t deviceid;
+ const char *description;
+ struct hptiop_adapter_ops *ops;
+ int sas;
+} hptiop_devs[] = {
+ {0x1103, 0x4520, "RocketRAID 4520 SAS Controller",
+ &hptiop_mvfrey_ops, 1},
+ {0x1103, 0x4521, "RocketRAID 4521 SAS Controller",
+ &hptiop_mvfrey_ops, 1},
+ {0x1103, 0x4522, "RocketRAID 4522 SAS Controller",
+ &hptiop_mvfrey_ops, 1},
+ {0x1103, 0x3620, "RocketRAID 3620 SATA Controller",
+ &hptiop_mvfrey_ops, 0},
+ {0x1103, 0x3622, "RocketRAID 3622 SATA Controller",
+ &hptiop_mvfrey_ops, 0},
+ {0x1103, 0x3640, "RocketRAID 3640 SATA Controller",
+ &hptiop_mvfrey_ops, 0},
+ {0x1103, 0x4210, "RocketRAID 4210 SAS Controller", &hptiop_itl_ops, 1},
+ {0x1103, 0x4211, "RocketRAID 4211 SAS Controller", &hptiop_itl_ops, 1},
+ {0x1103, 0x4310, "RocketRAID 4310 SAS Controller", &hptiop_itl_ops, 1},
+ {0x1103, 0x4311, "RocketRAID 4311 SAS Controller", &hptiop_itl_ops, 1},
+ {0x1103, 0x4320, "RocketRAID 4320 SAS Controller", &hptiop_itl_ops, 1},
+ {0x1103, 0x4321, "RocketRAID 4321 SAS Controller", &hptiop_itl_ops, 1},
+ {0x1103, 0x4322, "RocketRAID 4322 SAS Controller", &hptiop_itl_ops, 1},
+ {0x1103, 0x3220, "RocketRAID 3220 SATA Controller", &hptiop_itl_ops, 0},
+ {0x1103, 0x3320, "RocketRAID 3320 SATA Controller", &hptiop_itl_ops, 0},
+ {0x1103, 0x3410, "RocketRAID 3410 SATA Controller", &hptiop_itl_ops, 0},
+ {0x1103, 0x3520, "RocketRAID 3520 SATA Controller", &hptiop_itl_ops, 0},
+ {0x1103, 0x3510, "RocketRAID 3510 SATA Controller", &hptiop_itl_ops, 0},
+ {0x1103, 0x3511, "RocketRAID 3511 SATA Controller", &hptiop_itl_ops, 0},
+ {0x1103, 0x3521, "RocketRAID 3521 SATA Controller", &hptiop_itl_ops, 0},
+ {0x1103, 0x3522, "RocketRAID 3522 SATA Controller", &hptiop_itl_ops, 0},
+ {0x1103, 0x3530, "RocketRAID 3530 SATA Controller", &hptiop_itl_ops, 0},
+ {0x1103, 0x3540, "RocketRAID 3540 SATA Controller", &hptiop_itl_ops, 0},
+ {0x1103, 0x3560, "RocketRAID 3560 SATA Controller", &hptiop_itl_ops, 0},
+ {0x1103, 0x3020, "RocketRAID 3020 SATA Controller", &hptiop_mv_ops, 0},
+ {0x1103, 0x3120, "RocketRAID 3120 SATA Controller", &hptiop_mv_ops, 0},
+ {0x1103, 0x3122, "RocketRAID 3122 SATA Controller", &hptiop_mv_ops, 0},
+ {0, 0, 0, 0, 0},
+};
+
DRIVER_MODULE(hptiop, pci, hptiop_pci_driver, hptiop_devclass, 0, 0);
+MODULE_PNP_INFO("U16:vendor;U16:device;D:#", pci, hptiop, hptiop_devs,
+ sizeof(hptiop_devs), nitems(hptiop_devs) - 1);
MODULE_DEPEND(hptiop, cam, 1, 1, 1);
static int hptiop_probe(device_t dev)
{
struct hpt_iop_hba *hba;
- u_int32_t id;
+ const struct hptiop_dev *hptd;
+ size_t i;
+ u_int32_t did;
static char buf[256];
int sas = 0;
struct hptiop_adapter_ops *ops;
@@ -1819,45 +1866,15 @@
if (pci_get_vendor(dev) != 0x1103)
return (ENXIO);
- id = pci_get_device(dev);
-
- switch (id) {
- case 0x4520:
- case 0x4521:
- case 0x4522:
- sas = 1;
- case 0x3620:
- case 0x3622:
- case 0x3640:
- ops = &hptiop_mvfrey_ops;
- break;
- case 0x4210:
- case 0x4211:
- case 0x4310:
- case 0x4311:
- case 0x4320:
- case 0x4321:
- case 0x4322:
- sas = 1;
- case 0x3220:
- case 0x3320:
- case 0x3410:
- case 0x3520:
- case 0x3510:
- case 0x3511:
- case 0x3521:
- case 0x3522:
- case 0x3530:
- case 0x3540:
- case 0x3560:
- ops = &hptiop_itl_ops;
- break;
- case 0x3020:
- case 0x3120:
- case 0x3122:
- ops = &hptiop_mv_ops;
- break;
- default:
+ did = pci_get_device(dev);
+
+ for (i = 0; i < nitems(hptiop_devs); i++) {
+ hptd = &hptiop_devs[i];
+ if (hptd->deviceid == did) {
+ sas = hptd->sas;
+ ops = hptd->ops;
+ }
+ else
return (ENXIO);
}
@@ -1866,7 +1883,7 @@
pci_get_function(dev), pci_get_irq(dev));
sprintf(buf, "RocketRAID %x %s Controller\n",
- id, sas ? "SAS" : "SATA");
+ did, sas ? "SAS" : "SATA");
device_set_desc_copy(dev, buf);
hba = (struct hpt_iop_hba *)device_get_softc(dev);
Index: sys/dev/imcsmb/imcsmb_pci.c
===================================================================
--- sys/dev/imcsmb/imcsmb_pci.c
+++ sys/dev/imcsmb/imcsmb_pci.c
@@ -129,22 +129,23 @@
};
static struct imcsmb_pci_device {
- uint16_t id;
+ uint16_t vendorid;
+ uint16_t deviceid;
char *name;
} imcsmb_pci_devices[] = {
- {IMCSMB_PCI_DEV_ID_IMC0_SBX,
+ {PCI_VENDOR_INTEL, IMCSMB_PCI_DEV_ID_IMC0_SBX,
"Intel Sandybridge Xeon iMC 0 SMBus controllers" },
- {IMCSMB_PCI_DEV_ID_IMC0_IBX,
+ {PCI_VENDOR_INTEL, IMCSMB_PCI_DEV_ID_IMC0_IBX,
"Intel Ivybridge Xeon iMC 0 SMBus controllers" },
- {IMCSMB_PCI_DEV_ID_IMC0_HSX,
+ {PCI_VENDOR_INTEL, IMCSMB_PCI_DEV_ID_IMC0_HSX,
"Intel Haswell Xeon iMC 0 SMBus controllers" },
- {IMCSMB_PCI_DEV_ID_IMC1_HSX,
+ {PCI_VENDOR_INTEL, IMCSMB_PCI_DEV_ID_IMC1_HSX,
"Intel Haswell Xeon iMC 1 SMBus controllers" },
- {IMCSMB_PCI_DEV_ID_IMC0_BDX,
+ {PCI_VENDOR_INTEL, IMCSMB_PCI_DEV_ID_IMC0_BDX,
"Intel Broadwell Xeon iMC 0 SMBus controllers" },
- {IMCSMB_PCI_DEV_ID_IMC1_BDX,
+ {PCI_VENDOR_INTEL, IMCSMB_PCI_DEV_ID_IMC1_BDX,
"Intel Broadwell Xeon iMC 1 SMBus controllers" },
- {0, NULL},
+ {0, 0, NULL},
};
/* Device methods. */
@@ -247,9 +248,9 @@
pci_dev_id = pci_get_device(dev);
for (pci_device = imcsmb_pci_devices;
- pci_device->name != NULL;
- pci_device++) {
- if (pci_dev_id == pci_device->id) {
+ pci_device->name != NULL;
+ pci_device++) {
+ if (pci_dev_id == pci_device->deviceid) {
device_set_desc(dev, pci_device->name);
rc = BUS_PROBE_DEFAULT;
goto out;
@@ -339,6 +340,8 @@
};
DRIVER_MODULE(imcsmb_pci, pci, imcsmb_pci_driver, imcsmb_pci_devclass, 0, 0);
+MODULE_PNP_INFO("U16:vendor;U16:device;D:#", pci, imcsmb_pci, imcsmb_pci_devices,
+ sizeof(imcsmb_pci_devices[0]), nitems(imcsmb_pci_devices) - 1);
MODULE_DEPEND(imcsmb_pci, pci, 1, 1, 1);
MODULE_VERSION(imcsmb_pci, 1);
Index: sys/dev/pccbb/pccbb_pci.c
===================================================================
--- sys/dev/pccbb/pccbb_pci.c
+++ sys/dev/pccbb/pccbb_pci.c
@@ -983,4 +983,6 @@
};
DRIVER_MODULE(cbb, pci, cbb_driver, cbb_devclass, 0, 0);
+MODULE_PNP_INFO("W32:vendor/device;D:#", pci, cbb, yc_chipsets,
+ sizeof(yc_chipsets[0]), nitems(yc_chipsets) - 1);
MODULE_DEPEND(cbb, exca, 1, 1, 1);
Index: sys/dev/pci/fixup_pci.c
===================================================================
--- sys/dev/pci/fixup_pci.c
+++ sys/dev/pci/fixup_pci.c
@@ -55,6 +55,15 @@
static void fixwsc_natoma(device_t dev);
static void fixc1_nforce2(device_t dev);
+static struct fixup_pci_dev {
+ uint32_t devid;
+ const char *description;
+} fixup_pci_devs[] = {
+ {0x12378086, "Intel 82440FX (Natoma)"},
+ {0x01e010de, "nVidia nForce2"},
+ {0, 0},
+};
+
static device_method_t fixup_pci_methods[] = {
/* Device interface */
DEVMETHOD(device_probe, fixup_pci_probe),
@@ -71,19 +80,24 @@
static devclass_t fixup_pci_devclass;
DRIVER_MODULE(fixup_pci, pci, fixup_pci_driver, fixup_pci_devclass, 0, 0);
+MODULE_PNP_INFO("W32:vendor/device;D:#", pci, fixup_pci, fixup_pci_devs,
+ sizeof(fixup_pci_devs[0]), nitems(fixup_pci_devs) - 1);
static int
fixup_pci_probe(device_t dev)
{
- switch (pci_get_devid(dev)) {
- case 0x12378086: /* Intel 82440FX (Natoma) */
- fixwsc_natoma(dev);
- break;
- case 0x01e010de: /* nVidia nForce2 */
- fixc1_nforce2(dev);
- break;
- }
- return(ENXIO);
+ const struct fixup_pci_dev *fixd;
+ uint32_t devid;
+ size_t i;
+
+ devid = pci_get_devid(dev);
+ for (i = 0; i < nitems(fixup_pci_devs); i++) {
+ fixd = &fixup_pci_devs[i];
+ if(fixd->devid == devid) {
+ fixwsc_natoma(dev);
+ }
+ }
+ return(ENXIO);
}
static void
Index: sys/dev/sound/pci/emu10k1.c
===================================================================
--- sys/dev/sound/pci/emu10k1.c
+++ sys/dev/sound/pci/emu10k1.c
@@ -157,6 +157,27 @@
#define A_EXTOUT_ADC_CAP_L 0x16
#define A_EXTOUT_ADC_CAP_R 0x17
+static struct emu_pci_dev {
+ uint32_t devid;
+ const char *description;
+ uint8_t rev;
+} emu_pci_devs[] = {
+ {EMU10K1_PCI_ID, "Creative EMU10K1", 0},
+ {EMU10K2_PCI_ID, "Creative Audigy (EMU10K2)", 0},
+ {EMU10K2_PCI_ID, "Creative Audigy 2 (EMU10K2)", 0x04},
+ {EMU10K3_PCI_ID, "Creative Audigy 2 (EMU10K3)", 0},
+ {0, 0, 0},
+};
+
+static struct emujoy_pci_dev {
+ uint32_t devid;
+ const char *description;
+} emujoy_pci_devs[] = {
+ {0x70021102, "Creative EMU10K1 Joystick"},
+ {0x70031102, "Creative EMU10K2 Joystick"},
+ {0, 0},
+};
+
struct emu_memblk {
SLIST_ENTRY(emu_memblk) link;
void *buf;
@@ -2044,32 +2065,25 @@
static int
emu_pci_probe(device_t dev)
{
- char *s = NULL;
-
- switch (pci_get_devid(dev)) {
- case EMU10K1_PCI_ID:
- s = "Creative EMU10K1";
- break;
-
- case EMU10K2_PCI_ID:
- if (pci_get_revid(dev) == 0x04)
- s = "Creative Audigy 2 (EMU10K2)";
- else
- s = "Creative Audigy (EMU10K2)";
- break;
-
- case EMU10K3_PCI_ID:
- s = "Creative Audigy 2 (EMU10K3)";
- break;
-
- default:
- return ENXIO;
+ const struct emu_pci_dev *emud;
+ uint32_t devid;
+ size_t i;
+ uint8_t rev;
+
+ devid = pci_get_devid(dev);
+ rev = pci_get_revid(dev);
+ for (i = 0; i < nitems(emu_pci_devs); i++) {
+ emud = &emu_pci_devs[i];
+ if ((emud->devid == devid) &&
+ ((emud->rev == rev) || emud->rev == 0)) {
+ device_set_desc(dev, emud->description);
+ return BUS_PROBE_LOW_PRIORITY;
+ }
}
-
- device_set_desc(dev, s);
- return BUS_PROBE_LOW_PRIORITY;
+ return ENXIO;
}
+
static int
emu_pci_attach(device_t dev)
{
@@ -2200,6 +2214,8 @@
};
DRIVER_MODULE(snd_emu10k1, pci, emu_driver, pcm_devclass, NULL, NULL);
+MODULE_PNP_INFO("W32:vendor/device;D:#", pci, snd_emu101k1,
+ emu_pci_devs, sizeof(emu_pci_devs[0]), nitems(emu_pci_devs) - 1);
MODULE_DEPEND(snd_emu10k1, sound, SOUND_MINVER, SOUND_PREFVER, SOUND_MAXVER);
MODULE_VERSION(snd_emu10k1, 1);
MODULE_DEPEND(snd_emu10k1, midi, 1, 1, 1);
@@ -2208,21 +2224,20 @@
static int
emujoy_pci_probe(device_t dev)
{
- char *s = NULL;
-
- switch (pci_get_devid(dev)) {
- case 0x70021102:
- s = "Creative EMU10K1 Joystick";
- device_quiet(dev);
- break;
- case 0x70031102:
- s = "Creative EMU10K2 Joystick";
- device_quiet(dev);
- break;
+ const struct emujoy_pci_dev *emujd;
+ size_t i;
+ uint32_t devid;
+
+ devid = pci_get_devid(dev);
+ for (i = 0; i < nitems(emujoy_pci_devs); i++) {
+ emujd = &emujoy_pci_devs[i];
+ if(emujd->devid == devid) {
+ device_set_desc(dev, emujd->description);
+ device_quiet(dev);
+ return -1000;
+ }
}
-
- if (s) device_set_desc(dev, s);
- return s ? -1000 : ENXIO;
+ return ENXIO;
}
static int
@@ -2256,3 +2271,5 @@
static devclass_t emujoy_devclass;
DRIVER_MODULE(emujoy, pci, emujoy_driver, emujoy_devclass, NULL, NULL);
+MODULE_PNP_INFO("W32:vendor/device;D:#", pci, emujoy, emujoy_pci_devs,
+ sizeof(emujoy_pci_devs[0]), nitems(emujoy_pci_devs) - 1);
Index: sys/sparc64/ebus/ebus.c
===================================================================
--- sys/sparc64/ebus/ebus.c
+++ sys/sparc64/ebus/ebus.c
@@ -200,6 +200,16 @@
BUS_PASS_BUS + 1);
MODULE_DEPEND(ebus, nexus, 1, 1, 1);
+static struct ebus_pci_dev {
+ uint16_t vendorid;
+ uint16_t deviceid;
+ const char *description;
+} ebus_pci_devs[] = {
+ {0x108e, 0x1000, "PCI-EBus2 bridge"},
+ {0x108e, 0x1100, "PCI-EBus3 bridge"},
+ {0, 0, 0},
+}
+
static device_method_t ebus_pci_methods[] = {
/* Device interface */
DEVMETHOD(device_probe, ebus_pci_probe),
@@ -240,6 +250,8 @@
EARLY_DRIVER_MODULE(ebus, pci, ebus_pci_driver, ebus_devclass, 0, 0,
BUS_PASS_BUS);
+MODULE_PNP_INFO("U16:vendor;U16:device;D:#", pci, ebus, ebus_pci_devs,
+ sizeof(ebus_pci_devs[0]), nitems(ebus_pci_devs) - 1);
MODULE_DEPEND(ebus, pci, 1, 1, 1);
MODULE_VERSION(ebus, 1);
@@ -260,19 +272,23 @@
static int
ebus_pci_probe(device_t dev)
{
+ const struct ebus_pci_dev *ebd;
+ uint16_t did;
+ size_t i;
+ did = pci_get_device(dev);
if (pci_get_class(dev) != PCIC_BRIDGE ||
pci_get_vendor(dev) != 0x108e ||
strcmp(ofw_bus_get_name(dev), "ebus") != 0)
return (ENXIO);
-
- if (pci_get_device(dev) == 0x1000)
- device_set_desc(dev, "PCI-EBus2 bridge");
- else if (pci_get_device(dev) == 0x1100)
- device_set_desc(dev, "PCI-EBus3 bridge");
- else
- return (ENXIO);
- return (BUS_PROBE_GENERIC);
+ for (i = 0; i < nitems(ebus_pci_devs) - 1; i++) {
+ ebd = &ebus_pci_devs[i];
+ if (did == ebd->deviceid) {
+ device_set_desc(dev, ebd->description);
+ return (BUS_PROBE_GENERIC);
+ }
+ }
+ return (ENXIO);
}
static int
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Mar 10, 3:59 PM (16 h, 16 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17086259
Default Alt Text
D15996.diff (33 KB)
Attached To
Mode
D15996: Add PNP info to PCI attachment of arcmsr, bt, cbb, de, ebus, emujoy, fixup_pci, hifn, hptiop, imcsmb, snd_emu10k1 (emu_pci) drivers
Attached
Detach File
Event Timeline
Log In to Comment