aboutsummaryrefslogtreecommitdiff
path: root/board
diff options
context:
space:
mode:
authorztd <59756623+wu-yue-yu@users.noreply.github.com>2023-05-15 13:19:21 +0200
committerGitHub <noreply@github.com>2023-05-15 19:19:21 +0800
commitb5768043c2128370424c06f8b197700356355384 (patch)
tree3e48f0443b903cc9991274168b968cbb1fd0ebd1 /board
parent57dbac41bd9ed5a6f74c501c38620e0faefb5cad (diff)
fix: set fixed mac addrs (#1)
* fix: set fixed mac addr
Diffstat (limited to 'board')
-rw-r--r--board/thead/light-c910/light.c67
1 files changed, 47 insertions, 20 deletions
diff --git a/board/thead/light-c910/light.c b/board/thead/light-c910/light.c
index ccdc912c..7734c0be 100644
--- a/board/thead/light-c910/light.c
+++ b/board/thead/light-c910/light.c
@@ -30,6 +30,7 @@
#define GMAC0_APB3S_BADDR 0xffec003000
#define GMAC1_APB3S_BADDR 0xffec004000
+
static uint64_t apb3s_baddr;
typedef enum {
@@ -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;
@@ -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)
{
@@ -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;
}