Add quirk entry support for the 21041 and 21140 chips. Initial quirks

for these: extract the spiffy DEC board names (e.g. DE500-AA).
This commit is contained in:
thorpej 1999-09-26 04:37:29 +00:00
parent 4fa51ba8bd
commit b76293b895
1 changed files with 42 additions and 3 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: if_tlp_pci.c,v 1.14 1999/09/26 03:39:02 thorpej Exp $ */
/* $NetBSD: if_tlp_pci.c,v 1.15 1999/09/26 04:37:29 thorpej Exp $ */
/*-
* Copyright (c) 1998, 1999 The NetBSD Foundation, Inc.
@ -194,6 +194,9 @@ struct tlp_pci_quirks {
u_int8_t tpq_oui[3];
};
void tlp_pci_dec_quirks __P((struct tulip_pci_softc *,
const u_int8_t *));
void tlp_pci_znyx_21040_quirks __P((struct tulip_pci_softc *,
const u_int8_t *));
void tlp_pci_smc_21040_quirks __P((struct tulip_pci_softc *,
@ -211,6 +214,18 @@ const struct tlp_pci_quirks tlp_pci_21040_quirks[] = {
{ NULL, { 0, 0, 0 } }
};
const struct tlp_pci_quirks tlp_pci_21041_quirks[] = {
{ tlp_pci_dec_quirks, { 0x08, 0x00, 0x2b } },
{ tlp_pci_dec_quirks, { 0x00, 0x00, 0xf8 } },
{ NULL, { 0, 0, 0 } }
};
const struct tlp_pci_quirks tlp_pci_21140_quirks[] = {
{ tlp_pci_dec_quirks, { 0x08, 0x00, 0x2b } },
{ tlp_pci_dec_quirks, { 0x00, 0x00, 0xf8 } },
{ NULL, { 0, 0, 0 } }
};
const char *tlp_pci_chip_names[] = TULIP_CHIP_NAMES;
int tlp_pci_shared_intr __P((void *));
@ -574,7 +589,7 @@ tlp_pci_attach(parent, self, aux)
/*
* Deal with any quirks this board might have.
*/
/* XXX */
tlp_pci_get_quirks(psc, enaddr, tlp_pci_21041_quirks);
break;
case TULIP_CHIP_21140:
@ -600,7 +615,13 @@ tlp_pci_attach(parent, self, aux)
/*
* Deal with any quirks this board might have.
*/
/* XXX */
tlp_pci_get_quirks(psc, enaddr, tlp_pci_21140_quirks);
/*
* Bail out now if we can't deal with this board.
*/
if (sc->sc_mediasw == NULL)
goto cant_cope;
break;
case TULIP_CHIP_82C168:
@ -705,6 +726,24 @@ tlp_pci_shared_intr(arg)
return (rv);
}
void
tlp_pci_dec_quirks(psc, enaddr)
struct tulip_pci_softc *psc;
const u_int8_t *enaddr;
{
struct tulip_softc *sc = &psc->sc_tulip;
/*
* This isn't really a quirk-gathering device, really. We
* just want to get the spiffy DEC board name from the SROM.
*/
strcpy(sc->sc_name, "DEC ");
if (memcmp(&sc->sc_srom[29], "DE500", 5) == 0 ||
memcmp(&sc->sc_srom[29], "DE450", 5) == 0)
memcpy(&sc->sc_name[4], &sc->sc_srom[29], 8);
}
void
tlp_pci_znyx_21040_quirks(psc, enaddr)
struct tulip_pci_softc *psc;