[PATCH v1] board: apalis_t30/tk1/colibri_t20/t30: integrate mac address via dt

Tom Warren TWarren at nvidia.com
Tue May 31 18:08:17 CEST 2022


Thanks, Marcel. Been OOTO, I'll take a look and get a PR up this week.

-----Original Message-----
From: Marcel Ziswiler <marcel.ziswiler at toradex.com> 
Sent: Wednesday, May 25, 2022 1:20 AM
To: u-boot at lists.denx.de
Cc: Tom Warren <TWarren at nvidia.com>
Subject: Re: [PATCH v1] board: apalis_t30/tk1/colibri_t20/t30: integrate mac address via dt

External email: Use caution opening links or attachments


Hi Tom (Warren that is)

On Sat, 2022-05-21 at 12:42 +0200, Marcel Ziswiler wrote:
> From: Marcel Ziswiler <marcel.ziswiler at toradex.com>
>
> Use device tree to set MAC address of the Ethernet chip.

Don't want to rush anything but this one would fix booting regular mainline upstream Linux kernel on those good oldé Tegra boards. Thanks!

Cheers

Marcel

> Signed-off-by: Marcel Ziswiler <marcel.ziswiler at toradex.com>
>
> ---
>
>  board/toradex/apalis-tk1/apalis-tk1.c   | 19 +++++++++++++++++++
>  board/toradex/apalis_t30/apalis_t30.c   | 20 ++++++++++++++++++++
>  board/toradex/colibri_t20/colibri_t20.c | 19 +++++++++++++++++++  
> board/toradex/colibri_t30/colibri_t30.c | 20 ++++++++++++++++++++
>  4 files changed, 78 insertions(+)
>
> diff --git a/board/toradex/apalis-tk1/apalis-tk1.c 
> b/board/toradex/apalis-tk1/apalis-tk1.c
> index ccf665b2118..86b10400ffa 100644
> --- a/board/toradex/apalis-tk1/apalis-tk1.c
> +++ b/board/toradex/apalis-tk1/apalis-tk1.c
> @@ -14,6 +14,7 @@
>  #include <asm/arch/gpio.h>
>  #include <asm/arch/pinmux.h>
>  #include <env_internal.h>
> +#include <fdt_support.h>
>  #include <pci_tegra.h>
>  #include <linux/delay.h>
>  #include <power/as3722.h>
> @@ -99,6 +100,24 @@ int checkboard(void)  #if 
> defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)  int 
> ft_board_setup(void *blob, struct bd_info *bd)  {
> +       u8 enetaddr[6];
> +
> +       /* MAC addr */
> +       if (eth_env_get_enetaddr("ethaddr", enetaddr)) {
> +               int err = fdt_find_and_setprop(blob,
> +                                              "/pcie at 1003000/pci at 2,0/ethernet at 0,0",
> +                                              "local-mac-address", 
> + enetaddr, 6, 0);
> +
> +               /* Older device trees might have used a different node name */
> +               if (err < 0)
> +                       err = fdt_find_and_setprop(blob,
> +                                                  "/pcie at 1003000/pci at 2,0/pcie at 0",
> +                                                  
> + "local-mac-address", enetaddr, 6, 0);
> +
> +               if (err >= 0)
> +                       puts("   MAC address updated...\n");
> +       }
> +
>         return ft_common_board_setup(blob, bd);  }  #endif diff --git 
> a/board/toradex/apalis_t30/apalis_t30.c 
> b/board/toradex/apalis_t30/apalis_t30.c
> index 0396eea56b5..ef71270d9f2 100644
> --- a/board/toradex/apalis_t30/apalis_t30.c
> +++ b/board/toradex/apalis_t30/apalis_t30.c
> @@ -5,6 +5,7 @@
>   */
>
>  #include <common.h>
> +#include <env.h>
>  #include <init.h>
>  #include <log.h>
>  #include <asm/arch/gp_padctrl.h>
> @@ -16,6 +17,7 @@
>  #include <asm/io.h>
>  #include <dm.h>
>  #include <i2c.h>
> +#include <fdt_support.h>
>  #include <pci_tegra.h>
>  #include <linux/delay.h>
>  #include "../common/tdx-common.h"
> @@ -54,6 +56,24 @@ int checkboard(void)  #if defined(CONFIG_OF_LIBFDT) 
> && defined(CONFIG_OF_BOARD_SETUP)  int ft_board_setup(void *blob, 
> struct bd_info *bd)  {
> +       u8 enetaddr[6];
> +
> +       /* MAC addr */
> +       if (eth_env_get_enetaddr("ethaddr", enetaddr)) {
> +               int err = fdt_find_and_setprop(blob,
> +                                              "/pcie at 3000/pci at 3,0/ethernet at 0,0",
> +                                              "local-mac-address", 
> + enetaddr, 6, 0);
> +
> +               /* Older device trees might have used a different node name */
> +               if (err < 0)
> +                       err = fdt_find_and_setprop(blob,
> +                                                  "/pcie at 3000/pci at 3,0/pcie at 0",
> +                                                  
> + "local-mac-address", enetaddr, 6, 0);
> +
> +               if (err >= 0)
> +                       puts("   MAC address updated...\n");
> +       }
> +
>         return ft_common_board_setup(blob, bd);  }  #endif diff --git 
> a/board/toradex/colibri_t20/colibri_t20.c 
> b/board/toradex/colibri_t20/colibri_t20.c
> index 73ef4d2db32..c58d2021cd3 100644
> --- a/board/toradex/colibri_t20/colibri_t20.c
> +++ b/board/toradex/colibri_t20/colibri_t20.c
> @@ -4,6 +4,7 @@
>   */
>
>  #include <common.h>
> +#include <env.h>
>  #include <init.h>
>  #include <log.h>
>  #include <asm/arch/clock.h>
> @@ -81,6 +82,24 @@ int checkboard(void)  #if defined(CONFIG_OF_LIBFDT) 
> && defined(CONFIG_OF_BOARD_SETUP)  int ft_board_setup(void *blob, 
> struct bd_info *bd)  {
> +       u8 enetaddr[6];
> +
> +       /* MAC addr */
> +       if (eth_env_get_enetaddr("ethaddr", enetaddr)) {
> +               int err = fdt_find_and_setprop(blob,
> +                                              "/usb at 7d004000/ethernet at 1",
> +                                              "local-mac-address", 
> + enetaddr, 6, 0);
> +
> +               /* Older device trees might have used a different node name */
> +               if (err < 0)
> +                       err = fdt_find_and_setprop(blob,
> +                                                  "/usb at 7d004000/asix at 1",
> +                                                  
> + "local-mac-address", enetaddr, 6, 0);
> +
> +               if (err >= 0)
> +                       puts("   MAC address updated...\n");
> +       }
> +
>         return ft_common_board_setup(blob, bd);  }  #endif diff --git 
> a/board/toradex/colibri_t30/colibri_t30.c 
> b/board/toradex/colibri_t30/colibri_t30.c
> index 20cbb75a365..b6b004669c2 100644
> --- a/board/toradex/colibri_t30/colibri_t30.c
> +++ b/board/toradex/colibri_t30/colibri_t30.c
> @@ -5,6 +5,7 @@
>   */
>
>  #include <common.h>
> +#include <env.h>
>  #include <init.h>
>  #include <asm/arch/gp_padctrl.h>
>  #include <asm/arch/pinmux.h>
> @@ -12,6 +13,7 @@
>  #include <asm/arch-tegra/tegra.h>
>  #include <asm/gpio.h>
>  #include <asm/io.h>
> +#include <fdt_support.h>
>  #include <i2c.h>
>  #include <linux/delay.h>
>  #include "pinmux-config-colibri_t30.h"
> @@ -36,6 +38,24 @@ int checkboard(void)  #if defined(CONFIG_OF_LIBFDT) 
> && defined(CONFIG_OF_BOARD_SETUP)  int ft_board_setup(void *blob, 
> struct bd_info *bd)  {
> +       u8 enetaddr[6];
> +
> +       /* MAC addr */
> +       if (eth_env_get_enetaddr("ethaddr", enetaddr)) {
> +               int err = fdt_find_and_setprop(blob,
> +                                              "/usb at 7d004000/ethernet at 1",
> +                                              "local-mac-address", 
> + enetaddr, 6, 0);
> +
> +               /* Older device trees might have used a different node name */
> +               if (err < 0)
> +                       err = fdt_find_and_setprop(blob,
> +                                                  "/usb at 7d004000/asix at 1",
> +                                                  
> + "local-mac-address", enetaddr, 6, 0);
> +
> +               if (err >= 0)
> +                       puts("   MAC address updated...\n");
> +       }
> +
>         return ft_common_board_setup(blob, bd);  }  #endif


More information about the U-Boot mailing list