With the previous suggestion from Wolfgang Denk, this patch removes
the findfdt function from wandboard.h and instead replaces it with
some simple logic in wandboard.c.

The new function "set_fdtfile" is called in board_late_init.  This
function simply finds the length of the dtb file name, allocates
enough space for that string, and sets the fdtfile name to that string.

This results in slightly shorter / faster script code as well.

Dear Adam Duskett,

In message <blu436-smtp46bcb8c63151cd3166fbd1b9...@phx.gbl> you wrote:
> With the release of kernel 4.1.15 for the imx6 line of processors,
> wandboard now uses imx6q-wandboard-revc1.dtb and imx6dl-wandboard-revc1.dtb.
> This patch fixes the naming convention to work with kernel 4.1.15
>
> Signed-off-by: Adam Duskett <adamdusk...@outlook.com>
> ---
> include/configs/wandboard.h | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/include/configs/wandboard.h b/include/configs/wandboard.h
> index 99f5c0c..d41b600 100644
> --- a/include/configs/wandboard.h
> +++ b/include/configs/wandboard.h
> @@ -135,9 +135,9 @@
> "setenv bootargs ${bootargs} ${fbmem}\0" \
> "findfdt="\
> "if test $board_name = C1 && test $board_rev = MX6Q ; then " \
> -     "setenv fdtfile imx6q-wandboard.dtb; fi; " \
> +     "setenv fdtfile imx6q-wandboard-revc1.dtb; fi; " \
> "if test $board_name = C1 && test $board_rev = MX6DL ; then " \
> -     "setenv fdtfile imx6dl-wandboard.dtb; fi; " \
> +     "setenv fdtfile imx6dl-wandboard-revc1.dtb; fi; " \
> "if test $board_name = B1 && test $board_rev = MX6Q ; then " \
> "setenv fdtfile imx6q-wandboard-revb1.dtb; fi; " \
> "if test $board_name = B1 && test $board_rev = MX6DL ; then " \

Instead of adding to an ever growing list of names, would it not make
sense to solve this programmatically, like by concatenating "i" +
tolower($board_rev) + "-wandboard-rev" + tolower($board_name) + ".dtb"?

I guess this would also result in shorter / faster script code?

Best regards,

Wolfgang Denk

Signed-off-by: Adam Duskett <adamdusk...@outlook.com>
---
Changes:

v1 - v2:
 - Removed findfdt from h file and moved it to init code.

 
 board/wandboard/wandboard.c | 20 ++++++++++++++++++++
 include/configs/wandboard.h | 12 ------------
 2 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/board/wandboard/wandboard.c b/board/wandboard/wandboard.c
index 4ce74cd..a1037ed 100644
--- a/board/wandboard/wandboard.c
+++ b/board/wandboard/wandboard.c
@@ -29,6 +29,8 @@
 #include <phy.h>
 #include <input.h>
 #include <i2c.h>
+#include <linux/ctype.h>
+#include <malloc.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -377,6 +379,22 @@ static bool is_revc1(void)
                return false;
 }
 
+static void set_fdtfile(void)
+{
+       char *fdtfile;
+       int i;
+       int length = strlen(getenv("board_rev")) + strlen("-wandboard-rev") +
+                    strlen(getenv("board_name")) + strlen(".dtb") + 1;
+       fdtfile = malloc(length);
+       sprintf(fdtfile, "i%s-wandboard-rev%s.dtb", getenv("board_rev"), 
getenv("board_name"));
+       for (i = 0; i < length; i++){
+               fdtfile[i] = tolower(fdtfile[i]);
+       }
+
+       setenv("fdtfile", fdtfile);
+       free(fdtfile);
+}
+
 int board_late_init(void)
 {
 #ifdef CONFIG_CMD_BMODE
@@ -393,6 +411,8 @@ int board_late_init(void)
                setenv("board_name", "C1");
        else
                setenv("board_name", "B1");
+
+       set_fdtfile();
 #endif
        return 0;
 }
diff --git a/include/configs/wandboard.h b/include/configs/wandboard.h
index 99f5c0c..778c3f5 100644
--- a/include/configs/wandboard.h
+++ b/include/configs/wandboard.h
@@ -133,17 +133,6 @@
                        "echo '- no FWBADAPT-7WVGA-LCD-F07A-0102 display';" \
                "fi; " \
                "setenv bootargs ${bootargs} ${fbmem}\0" \
-       "findfdt="\
-               "if test $board_name = C1 && test $board_rev = MX6Q ; then " \
-                       "setenv fdtfile imx6q-wandboard.dtb; fi; " \
-               "if test $board_name = C1 && test $board_rev = MX6DL ; then " \
-                       "setenv fdtfile imx6dl-wandboard.dtb; fi; " \
-               "if test $board_name = B1 && test $board_rev = MX6Q ; then " \
-                       "setenv fdtfile imx6q-wandboard-revb1.dtb; fi; " \
-               "if test $board_name = B1 && test $board_rev = MX6DL ; then " \
-                       "setenv fdtfile imx6dl-wandboard-revb1.dtb; fi; " \
-               "if test $fdtfile = undefined; then " \
-                       "echo WARNING: Could not determine dtb to use; fi; \0" \
        "kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \
        "pxefile_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \
        "ramdisk_addr_r=0x13000000\0" \
@@ -159,7 +148,6 @@
        func(DHCP, dhcp, na)
 
 #define CONFIG_BOOTCOMMAND \
-          "run findfdt; " \
           "run distro_bootcmd"
 
 #include <config_distro_bootcmd.h>
-- 
2.7.4

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to