diff options
author | kientzle <kientzle@FreeBSD.org> | 2012-08-27 04:43:30 +0000 |
---|---|---|
committer | kientzle <kientzle@FreeBSD.org> | 2012-08-27 04:43:30 +0000 |
commit | 95f4586fc61426760738db7be84e8e5219c3535f (patch) | |
tree | 62c70daa4903fe41441cfb022d3da01b9aa533a0 /sys/arm/ti | |
parent | c28cc4caa1419a7eb5a3293e81db321cb0ee6032 (diff) | |
download | FreeBSD-src-95f4586fc61426760738db7be84e8e5219c3535f.zip FreeBSD-src-95f4586fc61426760738db7be84e8e5219c3535f.tar.gz |
Correctly fetch the MAC address.
Break down the bytes directly into the softc;
the intermediate buffer isn't needed here.
Break down the bytes in the correct order.
Diffstat (limited to 'sys/arm/ti')
-rw-r--r-- | sys/arm/ti/cpsw/if_cpsw.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/sys/arm/ti/cpsw/if_cpsw.c b/sys/arm/ti/cpsw/if_cpsw.c index 6863528..edb2c85 100644 --- a/sys/arm/ti/cpsw/if_cpsw.c +++ b/sys/arm/ti/cpsw/if_cpsw.c @@ -216,13 +216,11 @@ cpsw_attach(device_t dev) struct cpsw_softc *sc; struct mii_softc *miisc; struct ifnet *ifp; - uint8_t mac_addr[ETHER_ADDR_LEN]; int i, error, phy; uint32_t reg; sc = device_get_softc(dev); sc->dev = dev; - memcpy(sc->mac_addr, mac_addr, ETHER_ADDR_LEN); sc->node = ofw_bus_get_node(dev); /* Get phy address from fdt */ @@ -279,17 +277,17 @@ cpsw_attach(device_t dev) IFQ_SET_MAXLEN(&ifp->if_snd, ifp->if_snd.ifq_drv_maxlen); IFQ_SET_READY(&ifp->if_snd); - /* Get low part of MAC address from control module (mac_id0_lo) */ - ti_scm_reg_read_4(0x630, ®); - mac_addr[0] = (reg >> 8) & 0xFF; - mac_addr[1] = reg & 0xFF; - /* Get high part of MAC address from control module (mac_id0_hi) */ ti_scm_reg_read_4(0x634, ®); - mac_addr[2] = (reg >> 24) & 0xFF; - mac_addr[3] = (reg >> 16) & 0xFF; - mac_addr[4] = (reg >> 8) & 0xFF; - mac_addr[5] = reg & 0xFF; + sc->mac_addr[0] = reg & 0xFF; + sc->mac_addr[1] = (reg >> 8) & 0xFF; + sc->mac_addr[2] = (reg >> 16) & 0xFF; + sc->mac_addr[3] = (reg >> 24) & 0xFF; + + /* Get low part of MAC address from control module (mac_id0_lo) */ + ti_scm_reg_read_4(0x630, ®); + sc->mac_addr[4] = reg & 0xFF; + sc->mac_addr[5] = (reg >> 8) & 0xFF; ether_ifattach(ifp, sc->mac_addr); callout_init(&sc->wd_callout, 0); |