summaryrefslogtreecommitdiffstats
path: root/sys/dev/dc
diff options
context:
space:
mode:
authormbr <mbr@FreeBSD.org>2003-09-16 05:01:27 +0000
committermbr <mbr@FreeBSD.org>2003-09-16 05:01:27 +0000
commit79eae078778daaa41c86b622212b0b1cbe1a540a (patch)
treecb0b74f06d490c8388f405bb08ac22abd4e6595e /sys/dev/dc
parent961245240d0d3603c9e577506b78d7fdbdb896d6 (diff)
downloadFreeBSD-src-79eae078778daaa41c86b622212b0b1cbe1a540a.zip
FreeBSD-src-79eae078778daaa41c86b622212b0b1cbe1a540a.tar.gz
Don't read the MAC address from a copy of the EEPROM in the softc
that has been recorded earlier and overwrite it again later by reading it directly from the EEPROM again. Read the MAC address from the PAR0/PAR1 registers instead, which are autoloaded on reboot. Tested on AN985, AN983B. According to the datasheets, it should also work for the AL981 (I don't have such a chip on a card at home) PR: 52988 Submitted by: Andrew Gordon <arg-bsd@arg.me.uk> MFC after: 2 weeks
Diffstat (limited to 'sys/dev/dc')
-rw-r--r--sys/dev/dc/if_dc.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/sys/dev/dc/if_dc.c b/sys/dev/dc/if_dc.c
index 8ddf661..4e284d3 100644
--- a/sys/dev/dc/if_dc.c
+++ b/sys/dev/dc/if_dc.c
@@ -1957,7 +1957,7 @@ dc_attach(device_t dev)
sc->dc_flags |= DC_TX_USE_TX_INTR;
sc->dc_flags |= DC_TX_ADMTEK_WAR;
sc->dc_pmode = DC_PMODE_MII;
- dc_read_srom(sc, sc->dc_romwidth);
+ /* Don't read SROM for - auto-loaded on reset */
break;
case DC_DEVICEID_98713:
case DC_DEVICEID_98713_CP:
@@ -2091,9 +2091,8 @@ dc_attach(device_t dev)
break;
case DC_TYPE_AL981:
case DC_TYPE_AN985:
- bcopy(sc->dc_srom + DC_AL_EE_NODEADDR, &eaddr,
- ETHER_ADDR_LEN);
- dc_read_eeprom(sc, (caddr_t)&eaddr, DC_AL_EE_NODEADDR, 3, 0);
+ *(u_int32_t *)(&eaddr[0]) = CSR_READ_4(sc, DC_AL_PAR0);
+ *(u_int16_t *)(&eaddr[4]) = CSR_READ_4(sc, DC_AL_PAR1);
break;
case DC_TYPE_CONEXANT:
bcopy(sc->dc_srom + DC_CONEXANT_EE_NODEADDR, &eaddr,
OpenPOWER on IntegriCloud