diff mbox

[U-Boot] cmd/fdt: fix uncallable systemsetup command

Message ID 20161124140218.1270-1-fparent@baylibre.com
State Accepted
Commit f7f191ee41c0590917f4a969b569af0a01106380
Delegated to: Simon Glass
Headers show

Commit Message

Fabien Parent Nov. 24, 2016, 2:02 p.m. UTC
The function that is processing the 'fdt' parameters is one big
if-else if. In order to be able to type command faster only the first
few letter are checked to know which block of code to execute. For
systemsetup, the block of code that was executed was always the wrong
one and ended up in a failure.

} else if (argv[1][0] == 's') {
    process "fdt set" command
} else if (strncmp(argv[1], "sys", 3) == 0) {
    process "fdt systemsetup" command.
}

When typing "fdt systemsetup", the code that was executed was the code
for "fdt set".

This commit fix this issue by moving the "else if" for systemsetup
before the else if for "fdt set". This allow us to keep compatibility
with any script that make use of "fdt s" to set node values.

Signed-off-by: Fabien Parent <fparent@baylibre.com>
---
 cmd/fdt.c | 22 ++++++++++------------
 1 file changed, 10 insertions(+), 12 deletions(-)

Comments

Simon Glass Nov. 27, 2016, 5:02 p.m. UTC | #1
On 24 November 2016 at 07:02, Fabien Parent <fparent@baylibre.com> wrote:
> The function that is processing the 'fdt' parameters is one big
> if-else if. In order to be able to type command faster only the first
> few letter are checked to know which block of code to execute. For
> systemsetup, the block of code that was executed was always the wrong
> one and ended up in a failure.
>
> } else if (argv[1][0] == 's') {
>     process "fdt set" command
> } else if (strncmp(argv[1], "sys", 3) == 0) {
>     process "fdt systemsetup" command.
> }
>
> When typing "fdt systemsetup", the code that was executed was the code
> for "fdt set".
>
> This commit fix this issue by moving the "else if" for systemsetup
> before the else if for "fdt set". This allow us to keep compatibility
> with any script that make use of "fdt s" to set node values.
>
> Signed-off-by: Fabien Parent <fparent@baylibre.com>
> ---
>  cmd/fdt.c | 22 ++++++++++------------
>  1 file changed, 10 insertions(+), 12 deletions(-)

Acked-by: Simon Glass <sjg@chromium.org>
Simon Glass Dec. 3, 2016, 6:40 p.m. UTC | #2
On 27 November 2016 at 10:02, Simon Glass <sjg@chromium.org> wrote:
> On 24 November 2016 at 07:02, Fabien Parent <fparent@baylibre.com> wrote:
>> The function that is processing the 'fdt' parameters is one big
>> if-else if. In order to be able to type command faster only the first
>> few letter are checked to know which block of code to execute. For
>> systemsetup, the block of code that was executed was always the wrong
>> one and ended up in a failure.
>>
>> } else if (argv[1][0] == 's') {
>>     process "fdt set" command
>> } else if (strncmp(argv[1], "sys", 3) == 0) {
>>     process "fdt systemsetup" command.
>> }
>>
>> When typing "fdt systemsetup", the code that was executed was the code
>> for "fdt set".
>>
>> This commit fix this issue by moving the "else if" for systemsetup
>> before the else if for "fdt set". This allow us to keep compatibility
>> with any script that make use of "fdt s" to set node values.
>>
>> Signed-off-by: Fabien Parent <fparent@baylibre.com>
>> ---
>>  cmd/fdt.c | 22 ++++++++++------------
>>  1 file changed, 10 insertions(+), 12 deletions(-)
>
> Acked-by: Simon Glass <sjg@chromium.org>

Applied to u-boot-dm, thanks!
diff mbox

Patch

diff --git a/cmd/fdt.c b/cmd/fdt.c
index b503357..8bd345a 100644
--- a/cmd/fdt.c
+++ b/cmd/fdt.c
@@ -206,7 +206,17 @@  static int do_fdt(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 			return 1;
 		}
 		working_fdt = newaddr;
+#ifdef CONFIG_OF_SYSTEM_SETUP
+	/* Call the board-specific fixup routine */
+	} else if (strncmp(argv[1], "sys", 3) == 0) {
+		int err = ft_system_setup(working_fdt, gd->bd);
 
+		if (err) {
+			printf("Failed to add system information to FDT: %s\n",
+			       fdt_strerror(err));
+			return CMD_RET_FAILURE;
+		}
+#endif
 	/*
 	 * Make a new node
 	 */
@@ -577,18 +587,6 @@  static int do_fdt(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 		}
 	}
 #endif
-#ifdef CONFIG_OF_SYSTEM_SETUP
-	/* Call the board-specific fixup routine */
-	else if (strncmp(argv[1], "sys", 3) == 0) {
-		int err = ft_system_setup(working_fdt, gd->bd);
-
-		if (err) {
-			printf("Failed to add system information to FDT: %s\n",
-			       fdt_strerror(err));
-			return CMD_RET_FAILURE;
-		}
-	}
-#endif
 	/* Create a chosen node */
 	else if (strncmp(argv[1], "cho", 3) == 0) {
 		unsigned long initrd_start = 0, initrd_end = 0;