diff options
author | jlemon <jlemon@FreeBSD.org> | 2000-05-04 20:23:56 +0000 |
---|---|---|
committer | jlemon <jlemon@FreeBSD.org> | 2000-05-04 20:23:56 +0000 |
commit | a704c1a8cd6e6a25729f12b66265aa4f9157ac28 (patch) | |
tree | feb2f638cdb3f7ef05b1607fdcc515e81fd2e017 | |
parent | 4dae89bb377f7768b3027b0c16dfa022ff03ed80 (diff) | |
download | FreeBSD-src-a704c1a8cd6e6a25729f12b66265aa4f9157ac28.zip FreeBSD-src-a704c1a8cd6e6a25729f12b66265aa4f9157ac28.tar.gz |
Add PCI identification for another SmartArray 4200, which identifies
itself as a DEC card instead of Compaq.
-rw-r--r-- | sys/dev/ida/ida_pci.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/sys/dev/ida/ida_pci.c b/sys/dev/ida/ida_pci.c index 74229cf..0bb7e9f 100644 --- a/sys/dev/ida/ida_pci.c +++ b/sys/dev/ida/ida_pci.c @@ -53,6 +53,7 @@ #define IDA_PCI_MEMADDR (PCIR_MAPS + 4) /* Mem I/O Address */ #define IDA_DEVICEID_SMART 0xAE100E11 +#define IDA_DEVICEID_DEC_SMART 0x00461011 static int ida_v3_fifo_full(struct ida_softc *ida) @@ -148,6 +149,9 @@ static struct ida_board board_id[] = { { 0x4050, "Compaq Smart Array 4200 controller", &ida_v4_access }, { 0x4051, "Compaq Smart Array 4250ES controller", &ida_v4_access }, + { IDA_DEVICEID_DEC_SMART, + "DEC/Compaq Smart Array 4200 controller", &ida_v4_access }, + { 0, "", 0 }, }; @@ -186,14 +190,16 @@ ida_pci_match(u_int32_t id) static int ida_pci_probe(device_t dev) { - struct ida_board *board; + struct ida_board *board = NULL; + u_int32_t id = pci_get_devid(dev); - if (pci_get_devid(dev) == IDA_DEVICEID_SMART) { + if (id == IDA_DEVICEID_SMART) board = ida_pci_match(pci_get_subdevice(dev)); - if (board != NULL) { - device_set_desc(dev, board->desc); - return (0); - } + if (id == IDA_DEVICEID_DEC_SMART) + board = ida_pci_match(id); + if (board != NULL) { + device_set_desc(dev, board->desc); + return (0); } return (ENXIO); } @@ -220,6 +226,8 @@ ida_pci_attach(device_t dev) ida->dev = dev; board = ida_pci_match(pci_get_subdevice(dev)); + if (board == NULL) + board = ida_pci_match(pci_get_devid(dev)); ida->cmd = *board->accessor; ida->regs_res_type = SYS_RES_MEMORY; |