[U-Boot] [PATCHv6 12/28] net: Add ability to set MAC address via EEPROM
Olliver Schinagl
oliver at schinagl.nl
Mon May 15 12:18:06 UTC 2017
Hey Maxime,
On 15-05-17 10:18, Maxime Ripard wrote:
> On Mon, May 15, 2017 at 10:02:28AM +0200, Olliver Schinagl wrote:
>> This patch allows Kconfig to enable and set parameters to make it
>> possible to read the MAC address from an EEPROM. The net core layer then
>> uses this information to read MAC addresses from this EEPROM.
>>
>> Besides the various tuneables as to how to access the eeprom (bus,
>> address, addressing mode/length, 2 configurable that are EEPROM generic
>> (e.g. SPI or some other form of access) which are:
>>
>> NET_ETHADDR_EEPROM_OFFSET, indicating where in the EEPROM the start of
>> the MAC address is. The default is 8 allowing for 8 bytes before the MAC
>> for other purposes (header MAGIC for example).
>>
>> NET_ETHADDR_EEPROM_CRC8, indicating the MAC is appended with a CRC8-CCIT
>> checksum that should be verified.
>>
>> Currently only I2C eeproms have been tested and thus only those options
>> are available, but shouldn't be a limit. NET_ETHADDR_EEPROM_SPI can be
>> just as created and added.
>>
>> The code currently first checks if there is a non-zero MAC address in
>> the eeprom. If that fails to be the case, the read_rom_hwaddr can be
>> used by a board to supply the MAC in other ways.
>>
>> If both these fails, the other code is still in place to query the
>> environent, which then can be used to override the hardware supplied
>> data.
>>
>> Signed-off-by: Olliver Schinagl <oliver at schinagl.nl>
>> ---
>> arch/arm/mach-sunxi/Kconfig | 8 +--
>> configs/A10-OLinuXino-Lime_defconfig | 1 -
>> configs/A20-OLinuXino-Lime2-eMMC_defconfig | 1 -
>> configs/A20-OLinuXino-Lime2_defconfig | 1 -
>> configs/A20-OLinuXino-Lime_defconfig | 1 -
>> configs/A20-OLinuXino_MICRO_defconfig | 1 -
>> doc/README.enetaddr | 95 ++++++++++++++++++++++++++++++
>> include/net.h | 14 +++++
>> net/Kconfig | 59 +++++++++++++++++++
>> net/eth-uclass.c | 42 +++++++------
>> net/eth_common.c | 37 ++++++++++++
>> net/eth_legacy.c | 2 +
>> 12 files changed, 231 insertions(+), 31 deletions(-)
>>
>> diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig
>> index be060b65dc..cf5af4fe18 100644
>> --- a/arch/arm/mach-sunxi/Kconfig
>> +++ b/arch/arm/mach-sunxi/Kconfig
>> @@ -479,14 +479,14 @@ config I2C0_ENABLE
>>
>> config I2C1_ENABLE
>> bool "Enable I2C/TWI controller 1"
>> - default n
>> + default y if (NET_ETHADDR_EEPROM_I2C_BUS = 1)
>> select CMD_I2C
>> ---help---
>> See I2C0_ENABLE help text.
>>
>> config I2C2_ENABLE
>> bool "Enable I2C/TWI controller 2"
>> - default n
>> + default y if (NET_ETHADDR_EEPROM_I2C_BUS = 2)
>> select CMD_I2C
>> ---help---
>> See I2C0_ENABLE help text.
>> @@ -494,7 +494,7 @@ config I2C2_ENABLE
>> if MACH_SUN6I || MACH_SUN7I
>> config I2C3_ENABLE
>> bool "Enable I2C/TWI controller 3"
>> - default n
>> + default y if (NET_ETHADDR_EEPROM_I2C_BUS = 3)
>> select CMD_I2C
>> ---help---
>> See I2C0_ENABLE help text.
>> @@ -513,7 +513,7 @@ endif
>> if MACH_SUN7I
>> config I2C4_ENABLE
>> bool "Enable I2C/TWI controller 4"
>> - default n
>> + default y if (NET_ETHADDR_EEPROM_I2C_BUS = 4)
>> select CMD_I2C
>> ---help---
>> See I2C0_ENABLE help text.
>> diff --git a/configs/A10-OLinuXino-Lime_defconfig b/configs/A10-OLinuXino-Lime_defconfig
>> index ec16a44fbd..d4513144eb 100644
>> --- a/configs/A10-OLinuXino-Lime_defconfig
>> +++ b/configs/A10-OLinuXino-Lime_defconfig
>> @@ -5,7 +5,6 @@ CONFIG_DRAM_CLK=480
>> CONFIG_DRAM_EMR1=4
>> CONFIG_SYS_CLK_FREQ=912000000
>> CONFIG_MMC0_CD_PIN="PH1"
>> -CONFIG_I2C1_ENABLE=y
>
> Didn't that just remove the option if NET_ETHADDR_EEPROM is disabled
> (which is its default) ?
I initially forced I2C1_ENABLE on all the Olimex boards before finding
that I could do:
default y if (NET_ETHADDR_EEPROM_I2C_BUS = 1)
So by defining NET_ETHADDR_EEPROM_I2C_BUS = x in the defconfig, the
correct I2C1_ENABLE is being set, so we do not need to hardcode this in
the defconfig anymore.
Or am I miss-understanding you?
Olliver
>
> Maxime
>
More information about the U-Boot
mailing list