Skip to contentSkip to conversation

board: atmel: Set the ethernet mac address from eeprom

PATCH Superseded Wenyou Yang 1 participant 4 messages Aug 2, 2017

Subsystems (3)

v3 of 4 Superseded Latest is v4 →

lore
Share & tools
lore
#0 lore raw

v3 cover 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 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 | 47 +++----------------------
 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(+), 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
Signature · 1 line
2.13.0
#1 lore raw

PATCH v3 1/3 board: atmel: Create board/$(VENDOR)/common folder

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.

---

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
arch/arm/mach-at91/include/mach/at91_common.h +2 -0
index 0742ffc56f..a95fe41610 100644
@@ -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 */
board/atmel/common/Makefile new file +11 -0
new file mode 100644
index 0000000000..6d9c6850b5
@@ -0,0 +1,11 @@
+#
+# Copyright (C) 2017 Microchip
+#		      Wenyou Yang <[email protected]>
+#
+# SPDX-License-Identifier:	GPL-2.0+
+#
+
+obj-y += board.o
+ifndef CONFIG_SPL_BUILD
+obj-$(CONFIG_I2C_EEPROM) += mac_eeprom.o
+endif
board/atmel/common/board.c new file +12 -0
new file mode 100644
index 0000000000..7e326d925b
@@ -0,0 +1,12 @@
+/*
+ * Copyright (C) 2017 Microchip
+ *		      Wenyou Yang <[email protected]>
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#include <common.h>
+
+void dummy(void)
+{
+}
board/atmel/common/mac_eeprom.c new file +36 -0
new file mode 100644
index 0000000000..cdb786249c
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2017 Microchip
+ *		      Wenyou Yang <[email protected]>
+ *
+ * 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;
+}
Signature · 1 line
2.13.0
#2 lore raw

PATCH v3 2/3 board: sama5d2_xplained: Replace code to set mac address

In reply to Wenyou Yang

Replace the code to set the ethernet mac address with the code from the common folder.

---

Changes in v3: None
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          |  1 +
 configs/sama5d2_xplained_spiflash_defconfig     |  1 +
 include/configs/sama5d2_xplained.h              |  4 ---
 5 files changed, 11 insertions(+), 47 deletions(-)
arch/arm/dts/at91-sama5d2_xplained.dts +5 -0
index 3e624f142c..b00aaa2c79 100644
@@ -102,6 +102,11 @@
 				pinctrl-names = "default";
 				pinctrl-0 = <&pinctrl_i2c1_default>;
 				status = "okay";
+
+				i2c_eeprom: i2c_eeprom at 5c {
+					compatible = "atmel,24mac402";
+					reg = <0x5c>;
+				};
 			};
 
 			pioA: gpio at fc038000 {
board/atmel/sama5d2_xplained/sama5d2_xplained.c +4 -43

63 lines not on this page · raw message

configs/sama5d2_xplained_mmc_defconfig +1 -0
index e9a65ccb9d..3667ddfd14 100644
@@ -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
configs/sama5d2_xplained_spiflash_defconfig +1 -0
index 8b9c0ccd2a..343c96b92a 100644
@@ -47,6 +47,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
include/configs/sama5d2_xplained.h +0 -4
index 42fb1e11d0..bcddd5b0fe 100644
@@ -38,10 +38,6 @@
 /* NAND flash */
 #undef CONFIG_CMD_NAND
 
-/* I2C */
-#define AT24MAC_ADDR		0x5c
-#define AT24MAC_REG		0x9a
-
 /* LCD */
 
 #ifdef CONFIG_LCD
Signature · 1 line
2.13.0
#3 lore raw

PATCH v3 3/3 board: sama5d4_xplained: Set mac address from eeprom

In reply to Wenyou Yang

Add the code to set the ethernet mac address from eeprom by using the common code from the common folder.

configs: sama5d4_xplained: remove CONFIG_SPL_I2C_SUPPORT

---

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(+)
arch/arm/dts/at91-sama5d4_xplained.dts +5 -0
index ca6aff28e5..0592b31b91 100644
@@ -88,6 +88,11 @@
 
 			i2c0: i2c at f8014000 {
 				status = "okay";
+
+				i2c_eeprom: i2c_eeprom at 5c {
+					compatible = "atmel,24mac402";
+					reg = <0x5c>;
+				};
 			};
 
 			macb0: ethernet at f8020000 {
board/atmel/sama5d4_xplained/sama5d4_xplained.c +12 -0
index 854afcb622..248a31b8c4 100644
@@ -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 */
configs/sama5d4_xplained_mmc_defconfig +3 -0
index 094e5e1c2d..08e50feabe 100644
@@ -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
configs/sama5d4_xplained_nandflash_defconfig +3 -0
index a096aa929c..0f43160aa4 100644
@@ -41,6 +41,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
configs/sama5d4_xplained_spiflash_defconfig +3 -0
index bd884b73c8..780d476001 100644
@@ -43,6 +43,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
include/configs/sama5d4_xplained.h +2 -0
index f1cf65f42c..67a8574940 100644
@@ -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
Signature · 1 line
2.13.0