您好,TI:
我最近将代码迁移到了我们的定制板AM6548控制器的SDK 8.2。
在SDK 7.1 中,我用于从ucoot为ICSSG以太网传递MAC ID,但同一逻辑不适用于SDK 8.2。 下面是SDK 7.1 中的补丁,我曾用来设置MAC ID,但现在却没有在SDK 8.2 中获取这些env变量
差分- git a/board/ti/am65x/evp.c b/board/ti/am65x/evp.c
索引045a43c498..6dc99a97.12100644亿
-- a/board/ti/am65x/EVM-c.
+++ b/board/ti/am65x/EVM-c
@@-20,6 + 20,7 @@
#include <board.h>
#include <soC.h>
#include <ASM/arch/sys_proto.h>
++包括<i2c.h>
#include "./common/board_detect.h"
@@-228,6 + 229,53 @@静态int init_daughtercard_det_gPIO(char *gPIO_NAME,struct gPIO_desc *desc)
返回dm_gpio_set_dir_flags (desc,gpiod_is_in);
}
+u64 mac_to_u64 (u8 mac[6])
+{
+内部I;
+ u64地址= 0;
+
+表示(i = 0;i < 6;I++){
+地址<<=8;
+ addr |= mac[i];
+}
+退货地址;
+}
+
+void u64_to_mac(u64 addr,u8 mac[6])
+{
+ Mac[5]=地址;
+ Mac[4]=地址>> 8;
+ Mac[3]=地址>> 16;
+ Mac[2]=地址>> 24;
+ Mac[1]=地址>> 32;
+ Mac[0]=地址>> 40;
+
+}
+
+void set_ETH_Mac_add (void)
+{
+ struct udevice*dev1;
+ uchar mac_get1[6],mac_get2[6];
+ u64 u64macc_add;
+ int j=0,MAC_CNT=4;
+ char enetvar[32];
+
+ i2c_Get_chip_of_busnum(0),0x50,6,&dev1);
+ dm_i2c_read(dev1, 0x00, mac_get1, 6);
+
如果(is_valid_ethaddr (mac_get1)){,则为+
+ u64macc_add = mac_to_u64 (mac_get1);
+
对于(j=0;j<MAC_CNT;j++){
+
+ u64_to_Mac (u64macc_add,mac_get2);
+ sprintf (enetvar,"eth%daddr",j+1);
+ eth_env_set_enetaddr (enetvar,mac_get2);
+ u64macc_add = u64macc_add+1;
+}
+}
+}
+
静态int probe_daughtercards(void)
{
结构ti_am6_eeprom EP;
@@-330,8 +378,8 @@静态int probe_daughtercards(void)
Daugh_card_no_of_MAC_ADDR,
&Mac_addr_cnt);
如果(ret){
- pr_err("读取0x%02x的子卡EEPROM失败%d\n",
- i2c_addr,ret);
+/* pr_err("读取0x%02x的子卡EEPROM失败%d\n",
+ i2c_addr,ret);*/
/*
*即使这非常严重,我们也跳过一下
*此特定子卡,而不是结尾
@@-402,6 + 450,9 @@ dflt:
}
#ifndef config_spL_build
+
+ Set_Eth_Mac_add();
+
/*将设备树覆盖应用于U-Boot环境(如果有)*/
如果(strlen(name_overles))
返回env_set ("name_overlates",name_overlays);
对于SDK 8.2 ,我需要做什么来从uboot设置MAC吗
谢谢!
Sarfaraz