aboutsummaryrefslogtreecommitdiff
path: root/sys/pccard
diff options
context:
space:
mode:
authorNate Williams <nate@FreeBSD.org>1997-02-18 19:20:52 +0000
committerNate Williams <nate@FreeBSD.org>1997-02-18 19:20:52 +0000
commit9b4e82f125ef1a0c9664db21bd85a37878fb0c6a (patch)
tree7f2e6fbba79a95561ac6e13df0bb5a833c3e1b85 /sys/pccard
parent1899f6a2fff4fec78e24dcb543fbb809d476f996 (diff)
Notes
Diffstat (limited to 'sys/pccard')
-rw-r--r--sys/pccard/pcic.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/pccard/pcic.c b/sys/pccard/pcic.c
index 7234f171b342..28aab93d7e98 100644
--- a/sys/pccard/pcic.c
+++ b/sys/pccard/pcic.c
@@ -568,8 +568,14 @@ pcic_probe(void)
sp->data = PCIC_DATA_1;
sp->offset = (slot - 4) * PCIC_SLOT_SIZE;
}
- /* XXX - Screwed up slot 1 on the VLSI chips */
- if (slot == 1 && is_vlsi) {
+ /*
+ * XXX - Screwed up slot 1 on the VLSI chips. According to
+ * the Linux PCMCIA code from David Hinds, working chipsets
+ * return 0x84 from their (correct) ID ports, while the broken
+ * ones would need to be probed at the new offset we set after
+ * we assume it's broken.
+ */
+ if ((slot == 1) && is_vlsi && (getb(sp, PCIC_ID_REV != 0x84)) {
sp->index += 4;
sp->data += 4;
sp->offset = PCIC_SLOT_SIZE << 1;