smc911x: write back the manually set MAC address
authorDaniel Mack <daniel@caiaq.de>
Wed, 8 Apr 2009 11:23:37 +0000 (13:23 +0200)
committerBen Warren <biggerbadderben@gmail.com>
Mon, 8 Jun 2009 04:24:16 +0000 (21:24 -0700)
If the MAX address is given by the environment, write it back to the
hardware.

Signed-off-by: Daniel Mack <daniel@caiaq.de>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
drivers/net/smc911x.c

index 30f2dc266bfef71d9534d41d0ae76c7ae9e1f839..8c9a2a8a0572f0bd67d6a0163f912e5a30bf25ad 100644 (file)
@@ -41,8 +41,13 @@ static int smx911x_handle_mac_address(bd_t *bd)
        unsigned long addrh, addrl;
        uchar m[6];
 
-       /* if the environment has a valid mac address then use it */
-       if (!eth_getenv_enetaddr("ethaddr", m)) {
+       if (eth_getenv_enetaddr("ethaddr", m)) {
+               /* if the environment has a valid mac address then use it */
+               addrl = m[0] | (m[1] << 8) | (m[2] << 16) | (m[3] << 24);
+               addrh = m[4] | (m[5] << 8);
+               smc911x_set_mac_csr(ADDRL, addrl);
+               smc911x_set_mac_csr(ADDRH, addrh);
+       } else {
                /* if not, try to get one from the eeprom */
                addrh = smc911x_get_mac_csr(ADDRH);
                addrl = smc911x_get_mac_csr(ADDRL);