From a5f3fd7958c99da7a2ebe99fb813842f3677b0aa Mon Sep 17 00:00:00 2001 From: wpaul Date: Sat, 28 Oct 2000 09:00:20 +0000 Subject: Add PCI IDs for some additional cardbus cards. Yes, there really is a RealTek 8139 cardbus device. Unfortunately it doesn't quite work yet because the CIS parser barfs on it. Submitted by msmith, with some small tweaks by me. --- sys/dev/dc/if_dc.c | 10 ++++++++-- sys/dev/dc/if_dcreg.h | 9 +++++++++ sys/pci/if_dc.c | 10 ++++++++-- sys/pci/if_dcreg.h | 9 +++++++++ sys/pci/if_rl.c | 5 ++++- sys/pci/if_rlreg.h | 1 + 6 files changed, 39 insertions(+), 5 deletions(-) (limited to 'sys') diff --git a/sys/dev/dc/if_dc.c b/sys/dev/dc/if_dc.c index ee83951..3cff108 100644 --- a/sys/dev/dc/if_dc.c +++ b/sys/dev/dc/if_dc.c @@ -46,6 +46,7 @@ * Davicom DM9100, DM9102, DM9102A (www.davicom8.com) * Accton EN1217 (www.accton.com) * Xircom X3201 (www.xircom.com) + * Abocom FE2500 * * Datasheets for the 21143 are available at developer.intel.com. * Datasheets for the clone parts can be found at their respective sites. @@ -181,6 +182,8 @@ static struct dc_type dc_devs[] = { "Accton EN1217 10/100BaseTX" }, { DC_VENDORID_XIRCOM, DC_DEVICEID_X3201, "Xircom X3201 10/100BaseTX" }, + { DC_VENDORID_ABOCOM, DC_DEVICEID_FE2500, + "Abocom FE2500 10/100BaseTX" }, { 0, 0, NULL } }; @@ -1238,7 +1241,8 @@ void dc_setfilt_xircom(sc) ifma = ifma->ifma_link.le_next) { if (ifma->ifma_addr->sa_family != AF_LINK) continue; - h = dc_crc_le(sc, LLADDR((struct sockaddr_dl *)ifma->ifma_addr)); + h = dc_crc_le(sc, + LLADDR((struct sockaddr_dl *)ifma->ifma_addr)); sp[h >> 4] |= 1 << (h & 0xF); } @@ -1451,7 +1455,8 @@ static void dc_reset(sc) break; } - if (DC_IS_ASIX(sc) || DC_IS_ADMTEK(sc) || DC_IS_XIRCOM(sc) || DC_IS_INTEL(sc)) { + if (DC_IS_ASIX(sc) || DC_IS_ADMTEK(sc) || + DC_IS_XIRCOM(sc) || DC_IS_INTEL(sc)) { DELAY(10000); DC_CLRBIT(sc, DC_BUSCTL, DC_BUSCTL_RESET); i = 0; @@ -1849,6 +1854,7 @@ static int dc_attach(dev) sc->dc_pmode = DC_PMODE_MII; break; case DC_DEVICEID_AN985: + case DE_DEVICEID_FE2500: sc->dc_type = DC_TYPE_AN985; sc->dc_flags |= DC_TX_USE_TX_INTR; sc->dc_flags |= DC_TX_ADMTEK_WAR; diff --git a/sys/dev/dc/if_dcreg.h b/sys/dev/dc/if_dcreg.h index f36d6b3..9d44fa4 100644 --- a/sys/dev/dc/if_dcreg.h +++ b/sys/dev/dc/if_dcreg.h @@ -865,6 +865,15 @@ struct dc_softc { */ #define DC_DEVICEID_X3201 0x0003 +/* + * Abocom vendor ID + */ +#define DC_VENDORID_ABOCOM 0x13d1 + +/* + * Abocom device IDs. + */ +#define DC_DEVICEID_FE2500 0xAB02 /* * PCI low memory base and low I/O base register, and diff --git a/sys/pci/if_dc.c b/sys/pci/if_dc.c index ee83951..3cff108 100644 --- a/sys/pci/if_dc.c +++ b/sys/pci/if_dc.c @@ -46,6 +46,7 @@ * Davicom DM9100, DM9102, DM9102A (www.davicom8.com) * Accton EN1217 (www.accton.com) * Xircom X3201 (www.xircom.com) + * Abocom FE2500 * * Datasheets for the 21143 are available at developer.intel.com. * Datasheets for the clone parts can be found at their respective sites. @@ -181,6 +182,8 @@ static struct dc_type dc_devs[] = { "Accton EN1217 10/100BaseTX" }, { DC_VENDORID_XIRCOM, DC_DEVICEID_X3201, "Xircom X3201 10/100BaseTX" }, + { DC_VENDORID_ABOCOM, DC_DEVICEID_FE2500, + "Abocom FE2500 10/100BaseTX" }, { 0, 0, NULL } }; @@ -1238,7 +1241,8 @@ void dc_setfilt_xircom(sc) ifma = ifma->ifma_link.le_next) { if (ifma->ifma_addr->sa_family != AF_LINK) continue; - h = dc_crc_le(sc, LLADDR((struct sockaddr_dl *)ifma->ifma_addr)); + h = dc_crc_le(sc, + LLADDR((struct sockaddr_dl *)ifma->ifma_addr)); sp[h >> 4] |= 1 << (h & 0xF); } @@ -1451,7 +1455,8 @@ static void dc_reset(sc) break; } - if (DC_IS_ASIX(sc) || DC_IS_ADMTEK(sc) || DC_IS_XIRCOM(sc) || DC_IS_INTEL(sc)) { + if (DC_IS_ASIX(sc) || DC_IS_ADMTEK(sc) || + DC_IS_XIRCOM(sc) || DC_IS_INTEL(sc)) { DELAY(10000); DC_CLRBIT(sc, DC_BUSCTL, DC_BUSCTL_RESET); i = 0; @@ -1849,6 +1854,7 @@ static int dc_attach(dev) sc->dc_pmode = DC_PMODE_MII; break; case DC_DEVICEID_AN985: + case DE_DEVICEID_FE2500: sc->dc_type = DC_TYPE_AN985; sc->dc_flags |= DC_TX_USE_TX_INTR; sc->dc_flags |= DC_TX_ADMTEK_WAR; diff --git a/sys/pci/if_dcreg.h b/sys/pci/if_dcreg.h index f36d6b3..9d44fa4 100644 --- a/sys/pci/if_dcreg.h +++ b/sys/pci/if_dcreg.h @@ -865,6 +865,15 @@ struct dc_softc { */ #define DC_DEVICEID_X3201 0x0003 +/* + * Abocom vendor ID + */ +#define DC_VENDORID_ABOCOM 0x13d1 + +/* + * Abocom device IDs. + */ +#define DC_DEVICEID_FE2500 0xAB02 /* * PCI low memory base and low I/O base register, and diff --git a/sys/pci/if_rl.c b/sys/pci/if_rl.c index 0feb7f8..548682e 100644 --- a/sys/pci/if_rl.c +++ b/sys/pci/if_rl.c @@ -144,6 +144,8 @@ static struct rl_type rl_devs[] = { "RealTek 8129 10/100BaseTX" }, { RT_VENDORID, RT_DEVICEID_8139, "RealTek 8139 10/100BaseTX" }, + { RT_VENDORID, RT_DEVICEID_8138, + "RealTek 8139 10/100BaseTX CardBus" }, { ACCTON_VENDORID, ACCTON_DEVICEID_5030, "Accton MPX 5030/5038 10/100BaseTX" }, { DELTA_VENDORID, DELTA_DEVICEID_8139, @@ -912,7 +914,8 @@ static int rl_attach(dev) rl_read_eeprom(sc, (caddr_t)&rl_did, RL_EE_PCI_DID, 1, 0); if (rl_did == RT_DEVICEID_8139 || rl_did == ACCTON_DEVICEID_5030 || - rl_did == DELTA_DEVICEID_8139 || rl_did == ADDTRON_DEVICEID_8139) + rl_did == DELTA_DEVICEID_8139 || rl_did == ADDTRON_DEVICEID_8139 || + rl_did == RT_DEVICEID_8138) sc->rl_type = RL_8139; else if (rl_did == RT_DEVICEID_8129) sc->rl_type = RL_8129; diff --git a/sys/pci/if_rlreg.h b/sys/pci/if_rlreg.h index 2f08768..60d1836 100644 --- a/sys/pci/if_rlreg.h +++ b/sys/pci/if_rlreg.h @@ -404,6 +404,7 @@ struct rl_softc { * RealTek chip device IDs. */ #define RT_DEVICEID_8129 0x8129 +#define RT_DEVICEID_8138 0x8138 #define RT_DEVICEID_8139 0x8139 /* -- cgit v1.1