[U-Boot] [PATCH v4 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 v4: - Follow up the env function renaming. - Rebase the latest commit(8b3cec7da) on uboot/master.
Changes in v3: - remove CONFIG_SPL_I2C_SUPPORT=y from the default configuration files. - rebase on [PATCH] misc: Makefile: Add condition on build i2c_eeprom. https://lists.denx.de/pipermail/u-boot/2017-August/300783.html
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 | 46 +++---------------------- board/atmel/sama5d4_xplained/sama5d4_xplained.c | 12 +++++++ configs/sama5d2_xplained_mmc_defconfig | 1 + configs/sama5d2_xplained_spiflash_defconfig | 1 + configs/sama5d4_xplained_mmc_defconfig | 3 ++ configs/sama5d4_xplained_nandflash_defconfig | 3 ++ configs/sama5d4_xplained_spiflash_defconfig | 3 ++ include/configs/sama5d2_xplained.h | 4 --- include/configs/sama5d4_xplained.h | 2 ++ 15 files changed, 100 insertions(+), 46 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 v4: - Follow up the env function renaming.
Changes in v3: None 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..60ddf00d45 --- /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 (env_get(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_env_set_enetaddr(ETHADDR_NAME, ethaddr); + + return 0; +}

On 1 September 2017 at 02:26, Wenyou Yang wenyou.yang@microchip.com wrote:
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 v4:
- Follow up the env function renaming.
Changes in v3: None 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
Reviewed-by: Simon Glass sjg@chromium.org

On Fri, Sep 01, 2017 at 04:26:16PM +0800, Wenyou Yang wrote:
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 Reviewed-by: Simon Glass sjg@chromium.org
Applied to u-boot/master, thanks!

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 v4: None Changes in v3: None Changes in v2: None
arch/arm/dts/at91-sama5d2_xplained.dts | 5 +++ board/atmel/sama5d2_xplained/sama5d2_xplained.c | 46 +++---------------------- configs/sama5d2_xplained_mmc_defconfig | 1 + configs/sama5d2_xplained_spiflash_defconfig | 1 + include/configs/sama5d2_xplained.h | 4 --- 5 files changed, 11 insertions(+), 46 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 3f0860c555..7e0cb4228f 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,50 +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 (env_get(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_env_set_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; } diff --git a/configs/sama5d2_xplained_mmc_defconfig b/configs/sama5d2_xplained_mmc_defconfig index d59fd8216c..fb7c242b1c 100644 --- a/configs/sama5d2_xplained_mmc_defconfig +++ b/configs/sama5d2_xplained_mmc_defconfig @@ -51,6 +51,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 a997aa74bd..24698876ba 100644 --- a/configs/sama5d2_xplained_spiflash_defconfig +++ b/configs/sama5d2_xplained_spiflash_defconfig @@ -49,6 +49,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 9ceb91924d..891218d83e 100644 --- a/include/configs/sama5d2_xplained.h +++ b/include/configs/sama5d2_xplained.h @@ -35,10 +35,6 @@ #define CONFIG_SF_DEFAULT_SPEED 30000000 #endif
-/* I2C */ -#define AT24MAC_ADDR 0x5c -#define AT24MAC_REG 0x9a - /* LCD */
#ifdef CONFIG_LCD

On 1 September 2017 at 02:26, Wenyou Yang wenyou.yang@microchip.com wrote:
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 v4: None Changes in v3: None Changes in v2: None
arch/arm/dts/at91-sama5d2_xplained.dts | 5 +++ board/atmel/sama5d2_xplained/sama5d2_xplained.c | 46 +++---------------------- configs/sama5d2_xplained_mmc_defconfig | 1 + configs/sama5d2_xplained_spiflash_defconfig | 1 + include/configs/sama5d2_xplained.h | 4 --- 5 files changed, 11 insertions(+), 46 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org

On Fri, Sep 01, 2017 at 04:26:17PM +0800, Wenyou Yang wrote:
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 Reviewed-by: Simon Glass sjg@chromium.org
Applied to u-boot/master, thanks!

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 v4: - Rebase the latest commit(8b3cec7da) on uboot/master.
Changes in v3: - remove CONFIG_SPL_I2C_SUPPORT=y from the default configuration files. - rebase on [PATCH] misc: Makefile: Add condition on build i2c_eeprom. https://lists.denx.de/pipermail/u-boot/2017-August/300783.html
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 | 3 +++ configs/sama5d4_xplained_nandflash_defconfig | 3 +++ configs/sama5d4_xplained_spiflash_defconfig | 3 +++ include/configs/sama5d4_xplained.h | 2 ++ 6 files changed, 28 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 de0ce40a56..792d011718 100644 --- a/configs/sama5d4_xplained_mmc_defconfig +++ b/configs/sama5d4_xplained_mmc_defconfig @@ -47,6 +47,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 cba3c8b640..3b0af5bf00 100644 --- a/configs/sama5d4_xplained_nandflash_defconfig +++ b/configs/sama5d4_xplained_nandflash_defconfig @@ -44,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/configs/sama5d4_xplained_spiflash_defconfig b/configs/sama5d4_xplained_spiflash_defconfig index 174e2bc5ba..26eb00598c 100644 --- a/configs/sama5d4_xplained_spiflash_defconfig +++ b/configs/sama5d4_xplained_spiflash_defconfig @@ -46,6 +46,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 c8462b0b64..08f865016d 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

On 1 September 2017 at 02:26, Wenyou Yang wenyou.yang@microchip.com wrote:
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 v4:
- Rebase the latest commit(8b3cec7da) on uboot/master.
Changes in v3:
- remove CONFIG_SPL_I2C_SUPPORT=y from the default configuration files.
- rebase on [PATCH] misc: Makefile: Add condition on build i2c_eeprom. https://lists.denx.de/pipermail/u-boot/2017-August/300783.html
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 | 3 +++ configs/sama5d4_xplained_nandflash_defconfig | 3 +++ configs/sama5d4_xplained_spiflash_defconfig | 3 +++ include/configs/sama5d4_xplained.h | 2 ++
Reviewed-by: Simon Glass sjg@chromium.org

On Fri, Sep 01, 2017 at 04:26:18PM +0800, Wenyou Yang wrote:
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 Reviewed-by: Simon Glass sjg@chromium.org
Applied to u-boot/master, thanks!
participants (3)
-
Simon Glass
-
Tom Rini
-
Wenyou Yang