Page MenuHomeFreeBSD

D15996.diff
No OneTemporary

D15996.diff

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

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)

Event Timeline