mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-02-17 22:49:02 +00:00
ti: common: am6: Add support for setting MAC addresses
The AM654x EVM based on the TI K3 family of SoCs has an updated board detection EEPROM structure that contains a TLV record of dedicated MAC addresses rather than a range of MAC addresses as it was used on earlier platforms such as DRA7. Add a basic function that allows us setting up Ethernet MAC addresses into the U-Boot environment based on the MAC address record contained in the common TI EEPROM structure. Signed-off-by: Andreas Dannenberg <dannenberg@ti.com> Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
This commit is contained in:
parent
361a53308d
commit
183fa08ae5
2 changed files with 44 additions and 0 deletions
|
@ -534,6 +534,25 @@ fail:
|
|||
memset(mac_addr, 0, TI_EEPROM_HDR_ETH_ALEN);
|
||||
}
|
||||
|
||||
void __maybe_unused
|
||||
board_ti_am6_get_eth_mac_addr(int index,
|
||||
u8 mac_addr[TI_EEPROM_HDR_ETH_ALEN])
|
||||
{
|
||||
struct ti_am6_eeprom *ep = TI_AM6_EEPROM_DATA;
|
||||
|
||||
if (ep->header == TI_DEAD_EEPROM_MAGIC)
|
||||
goto fail;
|
||||
|
||||
if (index < 0 || index >= ep->mac_addr_cnt)
|
||||
goto fail;
|
||||
|
||||
memcpy(mac_addr, ep->mac_addr[index], TI_EEPROM_HDR_ETH_ALEN);
|
||||
return;
|
||||
|
||||
fail:
|
||||
memset(mac_addr, 0, TI_EEPROM_HDR_ETH_ALEN);
|
||||
}
|
||||
|
||||
u64 __maybe_unused board_ti_get_emif1_size(void)
|
||||
{
|
||||
struct ti_common_eeprom *ep = TI_EEPROM_DATA;
|
||||
|
@ -667,6 +686,19 @@ void board_ti_set_ethaddr(int index)
|
|||
}
|
||||
}
|
||||
|
||||
void board_ti_am6_set_ethaddr(int index, int count)
|
||||
{
|
||||
u8 mac_addr[6];
|
||||
int i;
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
board_ti_am6_get_eth_mac_addr(i, mac_addr);
|
||||
if (is_valid_ethaddr(mac_addr))
|
||||
eth_env_set_enetaddr_by_index("eth", i + index,
|
||||
mac_addr);
|
||||
}
|
||||
}
|
||||
|
||||
bool __maybe_unused board_ti_was_eeprom_read(void)
|
||||
{
|
||||
struct ti_common_eeprom *ep = TI_EEPROM_DATA;
|
||||
|
|
|
@ -398,6 +398,18 @@ void set_board_info_env_am6(char *name);
|
|||
*/
|
||||
void board_ti_set_ethaddr(int index);
|
||||
|
||||
/**
|
||||
* board_ti_am6_set_ethaddr- Sets the ethaddr environment from EEPROM
|
||||
* @index: The first eth<index>addr environment variable to set
|
||||
* @count: The number of MAC addresses to process
|
||||
*
|
||||
* EEPROM should be already read before calling this function. The EEPROM
|
||||
* contains n dedicated MAC addresses. This function sets the ethaddr
|
||||
* environment variable for all the available MAC addresses starting
|
||||
* from eth<index>addr.
|
||||
*/
|
||||
void board_ti_am6_set_ethaddr(int index, int count);
|
||||
|
||||
/**
|
||||
* board_ti_was_eeprom_read() - Check to see if the eeprom contents have been read
|
||||
*
|
||||
|
|
Loading…
Add table
Reference in a new issue