Skip to content

Commit

Permalink
fix: set fixed mac addrs (#1)
Browse files Browse the repository at this point in the history
* fix: set fixed mac addr
  • Loading branch information
wu-yue-yu committed May 15, 2023
1 parent 57dbac4 commit b576804
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 20 deletions.
67 changes: 47 additions & 20 deletions board/thead/light-c910/light.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@

#define GMAC0_APB3S_BADDR 0xffec003000
#define GMAC1_APB3S_BADDR 0xffec004000

static uint64_t apb3s_baddr;

typedef enum {
Expand Down Expand Up @@ -1857,9 +1858,10 @@ int board_init(void)
static void light_usb_boot_check(void)
{
int boot_mode;
uchar env_enetaddr[6]={0};
uchar env_enet1addr[6]={0};
int env_ethaddr_flag,env_eth1addr_flag;
// uchar env_enetaddr[6]={0};
// uchar env_enet1addr[6]={0};

// int env_ethaddr_flag,env_eth1addr_flag;
boot_mode = readl((void *)SOC_OM_ADDRBASE) & 0x7;
if (boot_mode & BIT(2))
return;
Expand All @@ -1868,30 +1870,55 @@ static void light_usb_boot_check(void)
env_set("usb_fastboot", "yes");
#endif
/*Get this version ethaddr(mac addr) env,which follows one board, trans to next version env*/
env_ethaddr_flag = eth_env_get_enetaddr_by_index("eth", 0, env_enetaddr);
env_eth1addr_flag = eth_env_get_enetaddr_by_index("eth", 1, env_enet1addr);

// env_ethaddr_flag = eth_env_get_enetaddr_by_index("eth", 0, env_enetaddr);
// env_eth1addr_flag = eth_env_get_enetaddr_by_index("eth", 1, env_enet1addr);
run_command("env default -a -f", 0);

/*If mac addr in last version env is valid, before save,inherit env mac addr */
if(env_ethaddr_flag){
eth_env_set_enetaddr_by_index("eth", 0, env_enetaddr);
run_command("printenv ethaddr",0);
}else{
printf("env ethaddr not exist or invalid\n");
}

if(env_eth1addr_flag){
eth_env_set_enetaddr_by_index("eth", 1, env_enet1addr);
run_command("printenv eth1addr",0);
}else{
printf("env eth1addr not exist or invalid\n");
}
// if(env_ethaddr_flag){
// eth_env_set_enetaddr_by_index("eth", 0, env_enetaddr);
// run_command("printenv ethaddr",0);
// }else{
// printf("env ethaddr not exist or invalid\n");
// }

// if(env_eth1addr_flag){
// eth_env_set_enetaddr_by_index("eth", 1, env_enet1addr);
// run_command("printenv eth1addr",0);
// }else{
// printf("env eth1addr not exist or invalid\n");
// }

run_command("env save", 0);
run_command("run gpt_partition", 0);
run_command("fastboot usb 0", 0);
}

static void set_fixed_mac(void)
{
uchar tmp_enetaddr[6] = {0};
uchar tmp_enet1addr[6] = {0};
int env_ethaddr_flag, env_eth1addr_flag;

env_ethaddr_flag = eth_env_get_enetaddr("ethaddr", tmp_enetaddr);
env_eth1addr_flag = eth_env_set_enetaddr("eth1addr", tmp_enet1addr);

if(!env_ethaddr_flag){
net_random_ethaddr(tmp_enetaddr);
eth_env_set_enetaddr("ethaddr", tmp_enetaddr);
tmp_enetaddr[5] += 0x01;
eth_env_set_enetaddr("eth1addr", tmp_enetaddr);
run_command("env save", 0);
return ;
}
if(!env_eth1addr_flag){
net_random_ethaddr(tmp_enet1addr);
eth_env_set_enetaddr("eth1addr", tmp_enet1addr);
tmp_enet1addr[5] -= 0x01;
eth_env_set_enetaddr("ethaddr", tmp_enet1addr);
run_command("env save", 0);
}
}

int board_late_init(void)
{
Expand All @@ -1902,8 +1929,8 @@ int board_late_init(void)
sec_upgrade_thread();
sec_firmware_version_dump();
#endif

light_usb_boot_check();
set_fixed_mac();
ap_peri_clk_disable();
return 0;
}
Expand Down
2 changes: 2 additions & 0 deletions include/configs/light-c910.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
#define PLIC_BASE_ADDR 0xffd8000000
#define PMP_BASE_ADDR 0xffdc020000

#define CONFIG_ENV_OVERWRITE 1 //make sure env var can be modified successfully

/* Network Configuration */
#define CONFIG_DW_ALTDESCRIPTOR
#define CONFIG_RGMII 1
Expand Down

0 comments on commit b576804

Please sign in to comment.