diff options
author | Bill Paul <wpaul@FreeBSD.org> | 2000-10-28 09:00:20 +0000 |
---|---|---|
committer | Bill Paul <wpaul@FreeBSD.org> | 2000-10-28 09:00:20 +0000 |
commit | 1d5e53109c6b1e09cba19950df7b3298a799aadb (patch) | |
tree | 9050aeb3f5cc0a521794612a25a1abc50ba579d8 /sys | |
parent | a61a28f04ccb1a8f01f47ee3768e5717f748338f (diff) | |
download | src-1d5e53109c6b1e09cba19950df7b3298a799aadb.tar.gz src-1d5e53109c6b1e09cba19950df7b3298a799aadb.zip |
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.
Notes
Notes:
svn path=/head/; revision=67771
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/dc/if_dc.c | 10 | ||||
-rw-r--r-- | sys/dev/dc/if_dcreg.h | 9 | ||||
-rw-r--r-- | sys/pci/if_dc.c | 10 | ||||
-rw-r--r-- | sys/pci/if_dcreg.h | 9 | ||||
-rw-r--r-- | sys/pci/if_rl.c | 5 | ||||
-rw-r--r-- | sys/pci/if_rlreg.h | 1 |
6 files changed, 39 insertions, 5 deletions
diff --git a/sys/dev/dc/if_dc.c b/sys/dev/dc/if_dc.c index ee839512cacc..3cff10823e44 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 f36d6b3820db..9d44fa4abd29 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 ee839512cacc..3cff10823e44 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 f36d6b3820db..9d44fa4abd29 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 0feb7f8c9d72..548682e2d735 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 2f087688e2c5..60d18365109c 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 /* |