Skip to contentSkip to conversation

board: atmel: Set the ethernet mac address from eeprom

PATCH New Wenyou Yang 3 participants 10 messages Sep 1, 2017 – Sep 12, 2017

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

v4 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 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
Signature · 1 line
2.13.0
#1 lore raw

PATCH v4 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 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
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..60ddf00d45
@@ -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 (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;
+}
Signature · 1 line
2.13.0
#2 lore raw

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

Quoted 13 lines · Wenyou Yang

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 v4:
- Follow up the env function renaming.

Changes in v3: None
Changes in v2: None

Quoted 8 lines
 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
#3 lore raw

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

In reply to Wenyou Yang
Quoted 6 lines · Wenyou Yang

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.

Applied to u-boot/master, thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170912/09d9828b/attachment.sig>
#4 lore raw

PATCH v4 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 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(-)
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 -42

62 lines not on this page · raw message

configs/sama5d2_xplained_mmc_defconfig +1 -0
index d59fd8216c..fb7c242b1c 100644
@@ -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
configs/sama5d2_xplained_spiflash_defconfig +1 -0
index a997aa74bd..24698876ba 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
include/configs/sama5d2_xplained.h +0 -4
index 9ceb91924d..891218d83e 100644
@@ -35,10 +35,6 @@
 #define CONFIG_SF_DEFAULT_SPEED		30000000
 #endif
 
-/* I2C */
-#define AT24MAC_ADDR		0x5c
-#define AT24MAC_REG		0x9a
-
 /* LCD */
 
 #ifdef CONFIG_LCD
Signature · 1 line
2.13.0
#5 lore raw

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

Quoted 10 lines · Wenyou Yang

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

---

Changes in v4: None
Changes in v3: None
Changes in v2: None

Quoted 6 lines
 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(-)
#6 lore raw

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

In reply to Wenyou Yang
Quoted 5 lines · Wenyou Yang

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

Applied to u-boot/master, thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170912/c39077f5/attachment.sig>
#7 lore raw

PATCH v4 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.

---

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(+)
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 de0ce40a56..792d011718 100644
@@ -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
configs/sama5d4_xplained_nandflash_defconfig +3 -0
index cba3c8b640..3b0af5bf00 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_spiflash_defconfig +3 -0
index 174e2bc5ba..26eb00598c 100644
@@ -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
include/configs/sama5d4_xplained.h +2 -0
index c8462b0b64..08f865016d 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
#8 lore raw

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

Quoted 21 lines · Wenyou Yang

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

---

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.

Quoted 6 lines
 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 ++
#9 lore raw

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

In reply to Wenyou Yang
Quoted 5 lines · Wenyou Yang

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

Applied to u-boot/master, thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170912/51b1bc0b/attachment.sig>