summaryrefslogtreecommitdiffstats
path: root/sys/dev/ida
diff options
context:
space:
mode:
authorjlemon <jlemon@FreeBSD.org>2000-05-04 20:23:56 +0000
committerjlemon <jlemon@FreeBSD.org>2000-05-04 20:23:56 +0000
commita704c1a8cd6e6a25729f12b66265aa4f9157ac28 (patch)
treefeb2f638cdb3f7ef05b1607fdcc515e81fd2e017 /sys/dev/ida
parent4dae89bb377f7768b3027b0c16dfa022ff03ed80 (diff)
downloadFreeBSD-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.
Diffstat (limited to 'sys/dev/ida')
-rw-r--r--sys/dev/ida/ida_pci.c20
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;
OpenPOWER on IntegriCloud