diff options
author | nate <nate@FreeBSD.org> | 1997-02-18 19:20:52 +0000 |
---|---|---|
committer | nate <nate@FreeBSD.org> | 1997-02-18 19:20:52 +0000 |
commit | ecb2d8d8e0e5884c557711a239d13e1260704244 (patch) | |
tree | 7f2e6fbba79a95561ac6e13df0bb5a833c3e1b85 /sys/pccard/pcic.c | |
parent | 6b056ec071639a53e677c78c255b207604819c1f (diff) | |
download | FreeBSD-src-ecb2d8d8e0e5884c557711a239d13e1260704244.zip FreeBSD-src-ecb2d8d8e0e5884c557711a239d13e1260704244.tar.gz |
Try to make the BROKEN_VLSI chipset detection better, and not break
non-broken chipssets whose ID is 0x84, such as the one found in the NEC
6030H.
> The code relies on the assumption that on a genuine_broken vlsi, you
> don't get 0x84 when probing slot 1 in the normal location. On the versa I
> do get 0x84 when probing slot 1 in the normal location. What you get on
> genuine_broken at the normal slot 1 location is unknown to me;
Submitted by: Chris Timmons <skynyrd@opus.cts.cwu.edu>
Diffstat (limited to 'sys/pccard/pcic.c')
-rw-r--r-- | sys/pccard/pcic.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/pccard/pcic.c b/sys/pccard/pcic.c index 7234f17..28aab93 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; |