Merge tag 'u-boot-imx-20220922' of https://gitlab.denx.de/u-boot/custodians/u-boot-imx

u-boot-imx-20220922
-------------------

Fixes for 2022.10

CI : https://source.denx.de/u-boot/custodians/u-boot-imx/-/pipelines/13548
diff --git a/cmd/fdt.c b/cmd/fdt.c
index 842e6cb..6fbd920 100644
--- a/cmd/fdt.c
+++ b/cmd/fdt.c
@@ -48,11 +48,27 @@
 /*
  * Get a value from the fdt and format it to be set in the environment
  */
-static int fdt_value_env_set(const void *nodep, int len, const char *var)
+static int fdt_value_env_set(const void *nodep, int len,
+			     const char *var, int index)
 {
-	if (is_printable_string(nodep, len))
-		env_set(var, (void *)nodep);
-	else if (len == 4) {
+	if (is_printable_string(nodep, len)) {
+		const char *nodec = (const char *)nodep;
+		int i;
+
+		/*
+		 * Iterate over all members in stringlist and find the one at
+		 * offset $index. If no such index exists, indicate failure.
+		 */
+		for (i = 0; i < len; i += strlen(nodec) + 1) {
+			if (index-- > 0)
+				continue;
+
+			env_set(var, nodec + i);
+			return 0;
+		}
+
+		return 1;
+	} else if (len == 4) {
 		char buf[11];
 
 		sprintf(buf, "0x%08X", fdt32_to_cpu(*(fdt32_t *)nodep));
@@ -426,10 +442,14 @@
 				return 0;
 			} else if (nodep && len > 0) {
 				if (subcmd[0] == 'v') {
+					int index = 0;
 					int ret;
 
+					if (argc == 7)
+						index = simple_strtoul(argv[6], NULL, 10);
+
 					ret = fdt_value_env_set(nodep, len,
-								var);
+								var, index);
 					if (ret != 0)
 						return ret;
 				} else if (subcmd[0] == 'a') {
@@ -1085,7 +1105,9 @@
 	"fdt resize [<extrasize>]            - Resize fdt to size + padding to 4k addr + some optional <extrasize> if needed\n"
 	"fdt print  <path> [<prop>]          - Recursive print starting at <path>\n"
 	"fdt list   <path> [<prop>]          - Print one level starting at <path>\n"
-	"fdt get value <var> <path> <prop>   - Get <property> and store in <var>\n"
+	"fdt get value <var> <path> <prop> [<index>] - Get <property> and store in <var>\n"
+	"                                      In case of stringlist property, use optional <index>\n"
+	"                                      to select string within the stringlist. Default is 0.\n"
 	"fdt get name <var> <path> <index>   - Get name of node <index> and store in <var>\n"
 	"fdt get addr <var> <path> <prop>    - Get start address of <property> and store in <var>\n"
 	"fdt get size <var> <path> [<prop>]  - Get size of [<property>] or num nodes and store in <var>\n"
diff --git a/tools/binman/bintool.py b/tools/binman/bintool.py
index 032179a..a582d9d 100644
--- a/tools/binman/bintool.py
+++ b/tools/binman/bintool.py
@@ -319,7 +319,7 @@
             return result.stdout
 
     @classmethod
-    def build_from_git(cls, git_repo, make_target, bintool_path):
+    def build_from_git(cls, git_repo, make_target, bintool_path, flags=None):
         """Build a bintool from a git repo
 
         This clones the repo in a temporary directory, builds it with 'make',
@@ -330,6 +330,7 @@
             make_target (str): Target to pass to 'make' to build the tool
             bintool_path (str): Relative path of the tool in the repo, after
                 build is complete
+            flags (list of str): Flags or variables to pass to make, or None
 
         Returns:
             tuple:
@@ -341,8 +342,11 @@
         print(f"- clone git repo '{git_repo}' to '{tmpdir}'")
         tools.run('git', 'clone', '--depth', '1', git_repo, tmpdir)
         print(f"- build target '{make_target}'")
-        tools.run('make', '-C', tmpdir, '-j', f'{multiprocessing.cpu_count()}',
-                  make_target)
+        cmd = ['make', '-C', tmpdir, '-j', f'{multiprocessing.cpu_count()}',
+               make_target]
+        if flags:
+            cmd += flags
+        tools.run(*cmd)
         fname = os.path.join(tmpdir, bintool_path)
         if not os.path.exists(fname):
             print(f"- File '{fname}' was not produced")
diff --git a/tools/binman/btool/futility.py b/tools/binman/btool/futility.py
index 75a05c2..04c9aef 100644
--- a/tools/binman/btool/futility.py
+++ b/tools/binman/btool/futility.py
@@ -160,8 +160,17 @@
         Raises:
             Valuerror: Fetching could not be completed
         """
-        if method != bintool.FETCH_BIN:
+        if method != bintool.FETCH_BUILD:
             return None
-        fname, tmpdir = self.fetch_from_drive(
-            '1hdsInzsE4aJbmBeJ663kYgjOQyW1I-E0')
-        return fname, tmpdir
+
+        # The Chromium OS repo is here:
+        # https://chromium.googlesource.com/chromiumos/platform/vboot_reference/
+        #
+        # Unfortunately this requires logging in and obtaining a line for the
+        # .gitcookies file. So use a mirror instead.
+        result = self.build_from_git(
+            'https://github.com/sjg20/vboot_reference.git',
+            'all',
+            'build/futility/futility',
+            flags=['USE_FLASHROM=0'])
+        return result