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

-----Original Message-----
From: Marcel Ziswiler <marcel.ziswi...@toradex.com> 
Sent: Wednesday, May 25, 2022 1:20 AM
To: u-boot@lists.denx.de
Cc: Tom Warren <twar...@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.ziswi...@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.ziswi...@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@1003000/pci@2,0/ethernet@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@1003000/pci@2,0/pcie@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@3000/pci@3,0/ethernet@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@3000/pci@3,0/pcie@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@7d004000/ethernet@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@7d004000/asix@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@7d004000/ethernet@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@7d004000/asix@1",
> +                                                  
> + "local-mac-address", enetaddr, 6, 0);
> +
> +               if (err >= 0)
> +                       puts("   MAC address updated...\n");
> +       }
> +
>         return ft_common_board_setup(blob, bd);  }  #endif

Reply via email to