summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorwpaul <wpaul@FreeBSD.org>2000-10-28 09:00:20 +0000
committerwpaul <wpaul@FreeBSD.org>2000-10-28 09:00:20 +0000
commita5f3fd7958c99da7a2ebe99fb813842f3677b0aa (patch)
tree88163c3773e164918886a6692a8184575a552500 /sys
parent2e093a62cdeea937b2f70ff5a5ea41e763119395 (diff)
downloadFreeBSD-src-a5f3fd7958c99da7a2ebe99fb813842f3677b0aa.zip
FreeBSD-src-a5f3fd7958c99da7a2ebe99fb813842f3677b0aa.tar.gz
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.
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/dc/if_dc.c10
-rw-r--r--sys/dev/dc/if_dcreg.h9
-rw-r--r--sys/pci/if_dc.c10
-rw-r--r--sys/pci/if_dcreg.h9
-rw-r--r--sys/pci/if_rl.c5
-rw-r--r--sys/pci/if_rlreg.h1
6 files changed, 39 insertions, 5 deletions
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
/*
OpenPOWER on IntegriCloud