]>
Commit | Line | Data |
---|---|---|
d9b23e26 WY |
1 | /* |
2 | * Copyright (C) 2017 Microchip | |
3 | * Wenyou Yang <[email protected]> | |
4 | * | |
5 | * SPDX-License-Identifier: GPL-2.0+ | |
6 | */ | |
7 | ||
8 | #include <common.h> | |
9 | #include <dm.h> | |
9925f1db | 10 | #include <environment.h> |
d9b23e26 WY |
11 | #include <i2c_eeprom.h> |
12 | #include <netdev.h> | |
13 | ||
14 | int at91_set_ethaddr(int offset) | |
15 | { | |
16 | const int ETH_ADDR_LEN = 6; | |
17 | unsigned char ethaddr[ETH_ADDR_LEN]; | |
18 | const char *ETHADDR_NAME = "ethaddr"; | |
19 | struct udevice *dev; | |
20 | int ret; | |
21 | ||
22 | if (env_get(ETHADDR_NAME)) | |
23 | return 0; | |
24 | ||
25 | ret = uclass_first_device_err(UCLASS_I2C_EEPROM, &dev); | |
26 | if (ret) | |
27 | return ret; | |
28 | ||
29 | ret = i2c_eeprom_read(dev, offset, ethaddr, 6); | |
30 | if (ret) | |
31 | return ret; | |
32 | ||
33 | if (is_valid_ethaddr(ethaddr)) | |
34 | eth_env_set_enetaddr(ETHADDR_NAME, ethaddr); | |
35 | ||
36 | return 0; | |
37 | } |