diff mbox series

[U-Boot,v2,2/3] toradex: common: unify behaviour when config block is missing

Message ID 20190325161829.7888-3-marcel@ziswiler.com
State Accepted
Commit 43bfc499925ee1f49355974409808a227cb4f9a0
Delegated to: Stefano Babic
Headers show
Series toradex: common: fix/improve config block handling | expand

Commit Message

Marcel Ziswiler March 25, 2019, 4:18 p.m. UTC
From: Bhuvanchandra DV <bhuvanchandra.dv@toradex.com>

If the config block is missing, various things may fail or behave
strangely on certain modules. This patch unifies that behaviour by
using a fake MAC address, until user updates the config block.

Signed-off-by: Bhuvanchandra DV <bhuvanchandra.dv@toradex.com>
Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>

---

Changes in v2:
- Introduced a define for the Toradex OUI ("0x00142dUL") as suggested by
  Igor.
- Removed redundant comment as suggested by Igor.

 board/toradex/common/tdx-common.c | 34 ++++++++++++++++---------------
 1 file changed, 18 insertions(+), 16 deletions(-)

Comments

Igor Opaniuk March 28, 2019, 2:29 p.m. UTC | #1
Reviewed-by: Igor Opaniuk <igor.opaniuk@toradex.com>

On Mon, Mar 25, 2019 at 6:19 PM Marcel Ziswiler <marcel@ziswiler.com> wrote:
>
> From: Bhuvanchandra DV <bhuvanchandra.dv@toradex.com>
>
> If the config block is missing, various things may fail or behave
> strangely on certain modules. This patch unifies that behaviour by
> using a fake MAC address, until user updates the config block.
>
> Signed-off-by: Bhuvanchandra DV <bhuvanchandra.dv@toradex.com>
> Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
>
> ---
>
> Changes in v2:
> - Introduced a define for the Toradex OUI ("0x00142dUL") as suggested by
>   Igor.
> - Removed redundant comment as suggested by Igor.
>
>  board/toradex/common/tdx-common.c | 34 ++++++++++++++++---------------
>  1 file changed, 18 insertions(+), 16 deletions(-)
>
> diff --git a/board/toradex/common/tdx-common.c b/board/toradex/common/tdx-common.c
> index fde230c955..2d560cceaf 100644
> --- a/board/toradex/common/tdx-common.c
> +++ b/board/toradex/common/tdx-common.c
> @@ -12,6 +12,8 @@
>  #include <asm/setup.h>
>  #include "tdx-common.h"
>
> +#define TORADEX_OUI 0x00142dUL
> +
>  #ifdef CONFIG_TDX_CFG_BLOCK
>  static char tdx_serial_str[9];
>  static char tdx_board_rev_str[6];
> @@ -68,20 +70,25 @@ int show_board_info(void)
>         unsigned char ethaddr[6];
>
>         if (read_tdx_cfg_block()) {
> -               printf("Missing Toradex config block\n");
> +               printf("MISSING TORADEX CONFIG BLOCK\n");
> +               tdx_eth_addr.oui = htonl(TORADEX_OUI << 8);
> +               tdx_eth_addr.nic = htonl(tdx_serial << 8);
>                 checkboard();
> -               return 0;
> +       } else {
> +               sprintf(tdx_serial_str, "%08u", tdx_serial);
> +               sprintf(tdx_board_rev_str, "V%1d.%1d%c",
> +                       tdx_hw_tag.ver_major,
> +                       tdx_hw_tag.ver_minor,
> +                       (char)tdx_hw_tag.ver_assembly + 'A');
> +
> +               env_set("serial#", tdx_serial_str);
> +
> +               printf("Model: Toradex %s %s, Serial# %s\n",
> +                      toradex_modules[tdx_hw_tag.prodid],
> +                      tdx_board_rev_str,
> +                      tdx_serial_str);
>         }
>
> -       /* board serial-number */
> -       sprintf(tdx_serial_str, "%08u", tdx_serial);
> -       sprintf(tdx_board_rev_str, "V%1d.%1d%c",
> -               tdx_hw_tag.ver_major,
> -               tdx_hw_tag.ver_minor,
> -               (char)tdx_hw_tag.ver_assembly + 'A');
> -
> -       env_set("serial#", tdx_serial_str);
> -
>         /*
>          * Check if environment contains a valid MAC address,
>          * set the one from config block if not
> @@ -101,11 +108,6 @@ int show_board_info(void)
>         }
>  #endif
>
> -       printf("Model: Toradex %s %s, Serial# %s\n",
> -              toradex_modules[tdx_hw_tag.prodid],
> -              tdx_board_rev_str,
> -              tdx_serial_str);
> -
>         return 0;
>  }
>
> --
> 2.20.1
>
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> https://lists.denx.de/listinfo/u-boot
diff mbox series

Patch

diff --git a/board/toradex/common/tdx-common.c b/board/toradex/common/tdx-common.c
index fde230c955..2d560cceaf 100644
--- a/board/toradex/common/tdx-common.c
+++ b/board/toradex/common/tdx-common.c
@@ -12,6 +12,8 @@ 
 #include <asm/setup.h>
 #include "tdx-common.h"
 
+#define TORADEX_OUI 0x00142dUL
+
 #ifdef CONFIG_TDX_CFG_BLOCK
 static char tdx_serial_str[9];
 static char tdx_board_rev_str[6];
@@ -68,20 +70,25 @@  int show_board_info(void)
 	unsigned char ethaddr[6];
 
 	if (read_tdx_cfg_block()) {
-		printf("Missing Toradex config block\n");
+		printf("MISSING TORADEX CONFIG BLOCK\n");
+		tdx_eth_addr.oui = htonl(TORADEX_OUI << 8);
+		tdx_eth_addr.nic = htonl(tdx_serial << 8);
 		checkboard();
-		return 0;
+	} else {
+		sprintf(tdx_serial_str, "%08u", tdx_serial);
+		sprintf(tdx_board_rev_str, "V%1d.%1d%c",
+			tdx_hw_tag.ver_major,
+			tdx_hw_tag.ver_minor,
+			(char)tdx_hw_tag.ver_assembly + 'A');
+
+		env_set("serial#", tdx_serial_str);
+
+		printf("Model: Toradex %s %s, Serial# %s\n",
+		       toradex_modules[tdx_hw_tag.prodid],
+		       tdx_board_rev_str,
+		       tdx_serial_str);
 	}
 
-	/* board serial-number */
-	sprintf(tdx_serial_str, "%08u", tdx_serial);
-	sprintf(tdx_board_rev_str, "V%1d.%1d%c",
-		tdx_hw_tag.ver_major,
-		tdx_hw_tag.ver_minor,
-		(char)tdx_hw_tag.ver_assembly + 'A');
-
-	env_set("serial#", tdx_serial_str);
-
 	/*
 	 * Check if environment contains a valid MAC address,
 	 * set the one from config block if not
@@ -101,11 +108,6 @@  int show_board_info(void)
 	}
 #endif
 
-	printf("Model: Toradex %s %s, Serial# %s\n",
-	       toradex_modules[tdx_hw_tag.prodid],
-	       tdx_board_rev_str,
-	       tdx_serial_str);
-
 	return 0;
 }