diff options
author | Haixiang Bao <haixiang.bao@amlogic.com> | 2016-04-06 00:47:35 -0700 |
---|---|---|
committer | Haixiang Bao <haixiang.bao@amlogic.com> | 2016-04-06 00:48:09 -0700 |
commit | 915c6e873e1253ed9e0b008610a7fd7436f2730e (patch) | |
tree | 2103bb53f48dd056419dc0a4a53c27e597cd1d9b /net | |
parent | b9ccb92ce9fff5faa7957ed6214b25511b80500a (diff) | |
download | u-boot-odroid-c1-915c6e873e1253ed9e0b008610a7fd7436f2730e.tar.gz |
This commit will cause gxb_skt_v1 and other 3 uboot config
compile fail!
Revert "PD#119623: eth: use random mac if not burn This change is for all platform, yanjie.guo verified it on P200 compile pass for all board config."
This reverts commit d7dcad8a93485570243d115c62c87c1bdf31eed1.
Change-Id: I555c6009e35abce82387f42254b7782e2dcfbbff
Diffstat (limited to 'net')
-rw-r--r-- | net/eth.c | 115 |
1 files changed, 20 insertions, 95 deletions
@@ -11,11 +11,6 @@ #include <miiphy.h> #include <phy.h> #include <asm/errno.h> -#include <amlogic/keyunify.h> -#ifdef CONFIG_RANDOM_ETHADDR -#include <asm/arch/io.h> -#include <asm/arch/secure_apb.h> -#endif void eth_parse_enetaddr(const char *addr, uchar *enetaddr) { @@ -163,105 +158,35 @@ static int eth_address_set(unsigned char *addr) return memcmp(addr, "\0\0\0\0\0\0", 6); } -#ifdef CONFIG_RANDOM_ETHADDR -static inline void eth_hw_addr_random(struct eth_device *dev) -{ - unsigned int tmp = readl(P_RNG_DATA); - - dev->enetaddr[0] = tmp&0xFF; - dev->enetaddr[1] = (tmp>>8)&0xFF; - dev->enetaddr[2] = (tmp>>16)&0xFF; - dev->enetaddr[3] = (tmp>>24)&0xFF; - - tmp = readl(P_RNG_DATA); - - dev->enetaddr[4] = tmp&0xFF; - dev->enetaddr[5] = (tmp>>8)&0xFF; - - dev->enetaddr[0] &= 0xFE; - dev->enetaddr[0] |= 0x02; -} -#endif - -static int eth_get_efuse_mac(struct eth_device *dev) -{ -#define MAC_MAX_LEN 17 - int i = 0; - int err = 0, exist = 0; - ssize_t keysize = 0; - const char* seedNum = "0x1234"; - unsigned char buf[MAC_MAX_LEN+1] = {0}; - - err = key_unify_init(seedNum, NULL); - if (err) - return err; - - err = key_unify_query_exist("mac", &exist); - if (err || (!exist)) - return -EEXIST; - - err = key_unify_query_size("mac", &keysize); - if (err) - return err; - - if (keysize != MAC_MAX_LEN) { - return -EINVAL; - } - - err = key_unify_read("mac", buf, keysize); - if (err) - return err; - - for (i=0; i<6; i++) { - buf[i*3 + 2] = '\0'; - dev->enetaddr[i] = simple_strtoul((char *)&buf[i*3], NULL, 16); - } - - return key_unify_uninit(); -} - int eth_write_hwaddr(struct eth_device *dev, const char *base_name, int eth_number) { unsigned char env_enetaddr[6]; int ret = 0; - eth_get_efuse_mac(dev); + eth_getenv_enetaddr_by_index(base_name, eth_number, env_enetaddr); - if (is_valid_ether_addr(dev->enetaddr)) { - eth_setenv_enetaddr_by_index(base_name, eth_number, - dev->enetaddr); - } else { -#ifdef CONFIG_RANDOM_ETHADDR - eth_hw_addr_random(dev); - eth_setenv_enetaddr_by_index(base_name, eth_number, + if (eth_address_set(env_enetaddr)) { + if (eth_address_set(dev->enetaddr) && + memcmp(dev->enetaddr, env_enetaddr, 6)) { + printf("\nWarning: %s MAC addresses don't match:\n", + dev->name); + printf("Address in SROM is %pM\n", dev->enetaddr); -#endif - - eth_getenv_enetaddr_by_index(base_name, eth_number, env_enetaddr); - - if (eth_address_set(env_enetaddr)) { - if (eth_address_set(dev->enetaddr) && - memcmp(dev->enetaddr, env_enetaddr, 6)) { - printf("\nWarning: %s MAC addresses don't match:\n", - dev->name); - printf("Address in SROM is %pM\n", - dev->enetaddr); - printf("Address in environment is %pM\n", - env_enetaddr); - } - - memcpy(dev->enetaddr, env_enetaddr, 6); - } else if (is_valid_ether_addr(dev->enetaddr)) { - eth_setenv_enetaddr_by_index(base_name, eth_number, - dev->enetaddr); - printf("\nWarning: %s using MAC address from net device\n", - dev->name); - } else if (!(eth_address_set(dev->enetaddr))) { - printf("\nError: %s address not set.\n", - dev->name); - return -EINVAL; + printf("Address in environment is %pM\n", + env_enetaddr); } + + memcpy(dev->enetaddr, env_enetaddr, 6); + } else if (is_valid_ether_addr(dev->enetaddr)) { + eth_setenv_enetaddr_by_index(base_name, eth_number, + dev->enetaddr); + printf("\nWarning: %s using MAC address from net device\n", + dev->name); + } else if (!(eth_address_set(dev->enetaddr))) { + printf("\nError: %s address not set.\n", + dev->name); + return -EINVAL; } if (dev->write_hwaddr && !eth_mac_skip(eth_number)) { |