[U-Boot] [PATCH v2 0/3] board: atmel: Set the ethernet mac address from eeprom

Create board/$(VENDOR)/common folder to accommodate the common code for the boards from atmel. Now put the code to set the ethernet mac address here, using the function to set the ethernet mac address on sama5d2 and sama5d4 Xplained boards.
Changes in v2: - Add a new patch to create board/$(VENDOR)/common folder to accommodate the common code and put the code to set the ethernet mac address from eeprom here. - Use the i2c_eeprom driver to read the mac address, instead of the dm i2c API directly.
Wenyou Yang (3): board: atmel: Create board/$(VENDOR)/common folder board: sama5d2_xplained: Replace code to set mac address board: sama5d4_xplained: Set mac address from eeprom
arch/arm/dts/at91-sama5d2_xplained.dts | 5 +++ arch/arm/dts/at91-sama5d4_xplained.dts | 5 +++ arch/arm/mach-at91/include/mach/at91_common.h | 2 ++ board/atmel/common/Makefile | 11 ++++++ board/atmel/common/board.c | 12 +++++++ board/atmel/common/mac_eeprom.c | 36 +++++++++++++++++++ board/atmel/sama5d2_xplained/sama5d2_xplained.c | 47 +++---------------------- board/atmel/sama5d4_xplained/sama5d4_xplained.c | 12 +++++++ configs/sama5d2_xplained_mmc_defconfig | 2 ++ configs/sama5d2_xplained_spiflash_defconfig | 2 ++ configs/sama5d4_xplained_mmc_defconfig | 4 +++ configs/sama5d4_xplained_nandflash_defconfig | 4 +++ configs/sama5d4_xplained_spiflash_defconfig | 4 +++ include/configs/sama5d2_xplained.h | 4 --- include/configs/sama5d4_xplained.h | 2 ++ 15 files changed, 105 insertions(+), 47 deletions(-) create mode 100644 board/atmel/common/Makefile create mode 100644 board/atmel/common/board.c create mode 100644 board/atmel/common/mac_eeprom.c

Create board/$(VENDOR)/common folder to accommodate the common code shared by other atmel boards, now put the code to set ethernet mac address from eeprom, which uses the i2c eeprom driver.
Signed-off-by: Wenyou Yang wenyou.yang@microchip.com ---
Changes in v2: None
arch/arm/mach-at91/include/mach/at91_common.h | 2 ++ board/atmel/common/Makefile | 11 ++++++++ board/atmel/common/board.c | 12 +++++++++ board/atmel/common/mac_eeprom.c | 36 +++++++++++++++++++++++++++ 4 files changed, 61 insertions(+) create mode 100644 board/atmel/common/Makefile create mode 100644 board/atmel/common/board.c create mode 100644 board/atmel/common/mac_eeprom.c
diff --git a/arch/arm/mach-at91/include/mach/at91_common.h b/arch/arm/mach-at91/include/mach/at91_common.h index 0742ffc56f..a95fe41610 100644 --- a/arch/arm/mach-at91/include/mach/at91_common.h +++ b/arch/arm/mach-at91/include/mach/at91_common.h @@ -36,4 +36,6 @@ void matrix_init(void); void redirect_int_from_saic_to_aic(void); void configure_2nd_sram_as_l2_cache(void);
+int at91_set_ethaddr(int offset); + #endif /* AT91_COMMON_H */ diff --git a/board/atmel/common/Makefile b/board/atmel/common/Makefile new file mode 100644 index 0000000000..6d9c6850b5 --- /dev/null +++ b/board/atmel/common/Makefile @@ -0,0 +1,11 @@ +# +# Copyright (C) 2017 Microchip +# Wenyou Yang wenyou.yang@microchip.com +# +# SPDX-License-Identifier: GPL-2.0+ +# + +obj-y += board.o +ifndef CONFIG_SPL_BUILD +obj-$(CONFIG_I2C_EEPROM) += mac_eeprom.o +endif diff --git a/board/atmel/common/board.c b/board/atmel/common/board.c new file mode 100644 index 0000000000..7e326d925b --- /dev/null +++ b/board/atmel/common/board.c @@ -0,0 +1,12 @@ +/* + * Copyright (C) 2017 Microchip + * Wenyou Yang wenyou.yang@microchip.com + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <common.h> + +void dummy(void) +{ +} diff --git a/board/atmel/common/mac_eeprom.c b/board/atmel/common/mac_eeprom.c new file mode 100644 index 0000000000..cdb786249c --- /dev/null +++ b/board/atmel/common/mac_eeprom.c @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2017 Microchip + * Wenyou Yang wenyou.yang@microchip.com + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <common.h> +#include <dm.h> +#include <i2c_eeprom.h> +#include <netdev.h> + +int at91_set_ethaddr(int offset) +{ + const int ETH_ADDR_LEN = 6; + unsigned char ethaddr[ETH_ADDR_LEN]; + const char *ETHADDR_NAME = "ethaddr"; + struct udevice *dev; + int ret; + + if (getenv(ETHADDR_NAME)) + return 0; + + ret = uclass_first_device_err(UCLASS_I2C_EEPROM, &dev); + if (ret) + return ret; + + ret = i2c_eeprom_read(dev, offset, ethaddr, 6); + if (ret) + return ret; + + if (is_valid_ethaddr(ethaddr)) + eth_setenv_enetaddr(ETHADDR_NAME, ethaddr); + + return 0; +}

Replace the code to set the ethernet mac address with the code from the common folder.
Signed-off-by: Wenyou Yang wenyou.yang@microchip.com ---
Changes in v2: None
arch/arm/dts/at91-sama5d2_xplained.dts | 5 +++ board/atmel/sama5d2_xplained/sama5d2_xplained.c | 47 +++---------------------- configs/sama5d2_xplained_mmc_defconfig | 2 ++ configs/sama5d2_xplained_spiflash_defconfig | 2 ++ include/configs/sama5d2_xplained.h | 4 --- 5 files changed, 13 insertions(+), 47 deletions(-)
diff --git a/arch/arm/dts/at91-sama5d2_xplained.dts b/arch/arm/dts/at91-sama5d2_xplained.dts index 3e624f142c..b00aaa2c79 100644 --- a/arch/arm/dts/at91-sama5d2_xplained.dts +++ b/arch/arm/dts/at91-sama5d2_xplained.dts @@ -102,6 +102,11 @@ pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c1_default>; status = "okay"; + + i2c_eeprom: i2c_eeprom@5c { + compatible = "atmel,24mac402"; + reg = <0x5c>; + }; };
pioA: gpio@fc038000 { diff --git a/board/atmel/sama5d2_xplained/sama5d2_xplained.c b/board/atmel/sama5d2_xplained/sama5d2_xplained.c index 48f45b35ce..fce931d95f 100644 --- a/board/atmel/sama5d2_xplained/sama5d2_xplained.c +++ b/board/atmel/sama5d2_xplained/sama5d2_xplained.c @@ -8,8 +8,6 @@ #include <common.h> #include <atmel_hlcdc.h> #include <debug_uart.h> -#include <dm.h> -#include <i2c.h> #include <lcd.h> #include <version.h> #include <asm/io.h> @@ -161,51 +159,14 @@ int dram_init(void) return 0; }
-#ifdef CONFIG_CMD_I2C -static int set_ethaddr_from_eeprom(void) -{ - const int ETH_ADDR_LEN = 6; - unsigned char ethaddr[ETH_ADDR_LEN]; - const char *ETHADDR_NAME = "ethaddr"; - struct udevice *bus, *dev; - - if (getenv(ETHADDR_NAME)) - return 0; - - if (uclass_get_device_by_seq(UCLASS_I2C, 1, &bus)) { - printf("Cannot find I2C bus 1\n"); - return -1; - } - - if (dm_i2c_probe(bus, AT24MAC_ADDR, 0, &dev)) { - printf("Failed to probe I2C chip\n"); - return -1; - } - - if (dm_i2c_read(dev, AT24MAC_REG, ethaddr, ETH_ADDR_LEN)) { - printf("Failed to read ethernet address from EEPROM\n"); - return -1; - } - - if (!is_valid_ethaddr(ethaddr)) { - printf("The ethernet address read from EEPROM is not valid!\n"); - return -1; - } - - return eth_setenv_enetaddr(ETHADDR_NAME, ethaddr); -} -#else -static int set_ethaddr_from_eeprom(void) -{ - return 0; -} -#endif +#define AT24MAC_MAC_OFFSET 0x9a
#ifdef CONFIG_MISC_INIT_R int misc_init_r(void) { - set_ethaddr_from_eeprom(); - +#ifdef CONFIG_I2C_EEPROM + at91_set_ethaddr(AT24MAC_MAC_OFFSET); +#endif return 0; } #endif diff --git a/configs/sama5d2_xplained_mmc_defconfig b/configs/sama5d2_xplained_mmc_defconfig index e9a65ccb9d..f1b1d0a93b 100644 --- a/configs/sama5d2_xplained_mmc_defconfig +++ b/configs/sama5d2_xplained_mmc_defconfig @@ -19,6 +19,7 @@ CONFIG_BOOTDELAY=3 # CONFIG_DISPLAY_BOARDINFO is not set CONFIG_SPL=y CONFIG_SPL_SEPARATE_BSS=y +CONFIG_SPL_I2C_SUPPORT=y CONFIG_HUSH_PARSER=y CONFIG_CMD_BOOTZ=y # CONFIG_CMD_IMI is not set @@ -49,6 +50,7 @@ CONFIG_DM_GPIO=y CONFIG_ATMEL_PIO4=y CONFIG_DM_I2C=y CONFIG_SYS_I2C_AT91=y +CONFIG_I2C_EEPROM=y CONFIG_DM_MMC=y CONFIG_MMC_SDHCI=y CONFIG_MMC_SDHCI_ATMEL=y diff --git a/configs/sama5d2_xplained_spiflash_defconfig b/configs/sama5d2_xplained_spiflash_defconfig index 8b9c0ccd2a..896e333e49 100644 --- a/configs/sama5d2_xplained_spiflash_defconfig +++ b/configs/sama5d2_xplained_spiflash_defconfig @@ -17,6 +17,7 @@ CONFIG_ENV_IS_IN_SPI_FLASH=y CONFIG_BOOTDELAY=3 # CONFIG_DISPLAY_BOARDINFO is not set CONFIG_SPL=y +CONFIG_SPL_I2C_SUPPORT=y CONFIG_HUSH_PARSER=y CONFIG_CMD_BOOTZ=y # CONFIG_CMD_IMI is not set @@ -47,6 +48,7 @@ CONFIG_DM_GPIO=y CONFIG_ATMEL_PIO4=y CONFIG_DM_I2C=y CONFIG_SYS_I2C_AT91=y +CONFIG_I2C_EEPROM=y CONFIG_DM_MMC=y CONFIG_MMC_SDHCI=y CONFIG_MMC_SDHCI_ATMEL=y diff --git a/include/configs/sama5d2_xplained.h b/include/configs/sama5d2_xplained.h index 42fb1e11d0..bcddd5b0fe 100644 --- a/include/configs/sama5d2_xplained.h +++ b/include/configs/sama5d2_xplained.h @@ -38,10 +38,6 @@ /* NAND flash */ #undef CONFIG_CMD_NAND
-/* I2C */ -#define AT24MAC_ADDR 0x5c -#define AT24MAC_REG 0x9a - /* LCD */
#ifdef CONFIG_LCD

Add the code to set the ethernet mac address from eeprom by using the common code from the common folder.
Signed-off-by: Wenyou Yang wenyou.yang@microchip.com ---
Changes in v2: - Add a new patch to create board/$(VENDOR)/common folder to accommodate the common code and put the code to set the ethernet mac address from eeprom here. - Use the i2c_eeprom driver to read the mac address, instead of the dm i2c API directly.
arch/arm/dts/at91-sama5d4_xplained.dts | 5 +++++ board/atmel/sama5d4_xplained/sama5d4_xplained.c | 12 ++++++++++++ configs/sama5d4_xplained_mmc_defconfig | 4 ++++ configs/sama5d4_xplained_nandflash_defconfig | 4 ++++ configs/sama5d4_xplained_spiflash_defconfig | 4 ++++ include/configs/sama5d4_xplained.h | 2 ++ 6 files changed, 31 insertions(+)
diff --git a/arch/arm/dts/at91-sama5d4_xplained.dts b/arch/arm/dts/at91-sama5d4_xplained.dts index ca6aff28e5..0592b31b91 100644 --- a/arch/arm/dts/at91-sama5d4_xplained.dts +++ b/arch/arm/dts/at91-sama5d4_xplained.dts @@ -88,6 +88,11 @@
i2c0: i2c@f8014000 { status = "okay"; + + i2c_eeprom: i2c_eeprom@5c { + compatible = "atmel,24mac402"; + reg = <0x5c>; + }; };
macb0: ethernet@f8020000 { diff --git a/board/atmel/sama5d4_xplained/sama5d4_xplained.c b/board/atmel/sama5d4_xplained/sama5d4_xplained.c index 854afcb622..248a31b8c4 100644 --- a/board/atmel/sama5d4_xplained/sama5d4_xplained.c +++ b/board/atmel/sama5d4_xplained/sama5d4_xplained.c @@ -192,6 +192,18 @@ int board_early_init_f(void) } #endif
+#define AT24MAC_MAC_OFFSET 0x9a + +#ifdef CONFIG_MISC_INIT_R +int misc_init_r(void) +{ +#ifdef CONFIG_I2C_EEPROM + at91_set_ethaddr(AT24MAC_MAC_OFFSET); +#endif + return 0; +} +#endif + int board_init(void) { /* adress of boot parameters */ diff --git a/configs/sama5d4_xplained_mmc_defconfig b/configs/sama5d4_xplained_mmc_defconfig index 094e5e1c2d..928d828a1a 100644 --- a/configs/sama5d4_xplained_mmc_defconfig +++ b/configs/sama5d4_xplained_mmc_defconfig @@ -19,6 +19,7 @@ CONFIG_BOOTDELAY=3 # CONFIG_DISPLAY_BOARDINFO is not set CONFIG_SPL=y CONFIG_SPL_SEPARATE_BSS=y +CONFIG_SPL_I2C_SUPPORT=y CONFIG_HUSH_PARSER=y CONFIG_CMD_BOOTZ=y # CONFIG_CMD_IMI is not set @@ -44,6 +45,9 @@ CONFIG_AT91_UTMI=y CONFIG_AT91_H32MX=y CONFIG_DM_GPIO=y CONFIG_AT91_GPIO=y +CONFIG_DM_I2C=y +CONFIG_SYS_I2C_AT91=y +CONFIG_I2C_EEPROM=y CONFIG_DM_MMC=y CONFIG_GENERIC_ATMEL_MCI=y CONFIG_DM_SPI_FLASH=y diff --git a/configs/sama5d4_xplained_nandflash_defconfig b/configs/sama5d4_xplained_nandflash_defconfig index a096aa929c..c61d235384 100644 --- a/configs/sama5d4_xplained_nandflash_defconfig +++ b/configs/sama5d4_xplained_nandflash_defconfig @@ -16,6 +16,7 @@ CONFIG_ENV_IS_IN_NAND=y CONFIG_BOOTDELAY=3 # CONFIG_DISPLAY_BOARDINFO is not set CONFIG_SPL=y +CONFIG_SPL_I2C_SUPPORT=y CONFIG_HUSH_PARSER=y CONFIG_CMD_BOOTZ=y # CONFIG_CMD_IMI is not set @@ -41,6 +42,9 @@ CONFIG_AT91_UTMI=y CONFIG_AT91_H32MX=y CONFIG_DM_GPIO=y CONFIG_AT91_GPIO=y +CONFIG_DM_I2C=y +CONFIG_SYS_I2C_AT91=y +CONFIG_I2C_EEPROM=y CONFIG_DM_MMC=y CONFIG_GENERIC_ATMEL_MCI=y CONFIG_DM_SPI_FLASH=y diff --git a/configs/sama5d4_xplained_spiflash_defconfig b/configs/sama5d4_xplained_spiflash_defconfig index bd884b73c8..7c8c7081e8 100644 --- a/configs/sama5d4_xplained_spiflash_defconfig +++ b/configs/sama5d4_xplained_spiflash_defconfig @@ -17,6 +17,7 @@ CONFIG_ENV_IS_IN_SPI_FLASH=y CONFIG_BOOTDELAY=3 # CONFIG_DISPLAY_BOARDINFO is not set CONFIG_SPL=y +CONFIG_SPL_I2C_SUPPORT=y CONFIG_HUSH_PARSER=y CONFIG_CMD_BOOTZ=y # CONFIG_CMD_IMI is not set @@ -43,6 +44,9 @@ CONFIG_AT91_UTMI=y CONFIG_AT91_H32MX=y CONFIG_DM_GPIO=y CONFIG_AT91_GPIO=y +CONFIG_DM_I2C=y +CONFIG_SYS_I2C_AT91=y +CONFIG_I2C_EEPROM=y CONFIG_DM_MMC=y CONFIG_GENERIC_ATMEL_MCI=y CONFIG_DM_SPI_FLASH=y diff --git a/include/configs/sama5d4_xplained.h b/include/configs/sama5d4_xplained.h index f1cf65f42c..67a8574940 100644 --- a/include/configs/sama5d4_xplained.h +++ b/include/configs/sama5d4_xplained.h @@ -12,6 +12,8 @@
#include "at91-sama5_common.h"
+#define CONFIG_MISC_INIT_R + /* SDRAM */ #define CONFIG_NR_DRAM_BANKS 1 #define CONFIG_SYS_SDRAM_BASE ATMEL_BASE_DDRCS
participants (1)
-
Wenyou Yang