u-boot/board/rockchip/tinker_rk3288/tinker-rk3288.c
Alex Kiernan 9925f1dbc3 net: Move enetaddr env access code to env config instead of net config
In order that we can use eth_env_* even when CONFIG_NET isn't set, move
these functions to environment code from net code.

This fixes failures such as:

  board/ti/am335x/built-in.o: In function `board_late_init':
  board/ti/am335x/board.c:752: undefined reference to `eth_env_set_enetaddr'
  u-boot/board/ti/am335x/board.c:766: undefined reference to `eth_env_set_enetaddr'

which caters for use cases such as:

commit f411b5cca4 ("board: am335x: Always set eth/eth1addr environment
variable")

when Ethernet is required in Linux, but not U-Boot.

Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
2018-04-08 23:00:58 -04:00

36 lines
607 B
C

/*
* (C) Copyright 2016 Rockchip Electronics Co., Ltd
*
* SPDX-License-Identifier: GPL-2.0+
*/
#include <common.h>
#include <dm.h>
#include <environment.h>
#include <i2c_eeprom.h>
#include <netdev.h>
static int get_ethaddr_from_eeprom(u8 *addr)
{
int ret;
struct udevice *dev;
ret = uclass_first_device_err(UCLASS_I2C_EEPROM, &dev);
if (ret)
return ret;
return i2c_eeprom_read(dev, 0, addr, 6);
}
int rk_board_late_init(void)
{
u8 ethaddr[6];
if (get_ethaddr_from_eeprom(ethaddr))
return 0;
if (is_valid_ethaddr(ethaddr))
eth_env_set_enetaddr("ethaddr", ethaddr);
return 0;
}