samsung: misc_init_r: insert call to platform_setup()
authorPrzemyslaw Marczak <p.marczak@samsung.com>
Thu, 13 Nov 2014 10:40:02 +0000 (11:40 +0100)
committerJaehoon Chung <jh80.chung@samsung.com>
Tue, 20 Oct 2020 00:46:44 +0000 (09:46 +0900)
This change adds call of platform_setup() to check or set active
platform configuration.

Another change is setup environment variable: ${platname},
from board name in set_board_info().

Change-Id: I355736bf40f8fa3697ce0b4546f7702d2e54a0f9
Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
board/samsung/common/board.c
board/samsung/common/misc.c
cmd/dfu.c

index 885cf1cdb205cbba3e41b08c3f302d2f245252c5..1d601dad1eecf530d30220794740e63c646034d1 100644 (file)
@@ -369,6 +369,9 @@ int misc_init_r(void)
 #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
        set_board_info();
 #endif
+#ifdef CONFIG_PLATFORM_SETUP
+       platform_setup();
+#endif
 #ifdef CONFIG_OF_MULTI
        if (!board_is_trats2())
                return 0;
index 3442be3a32f5ad3a25c243b4fe4ae6263345f30f..d9646d9b4b0bb905dce2d650147594f8ceecdfc9 100644 (file)
@@ -294,6 +294,9 @@ void set_board_info(void)
 
 #ifdef CONFIG_OF_MULTI
        bdname = get_board_name();
+#ifdef CONFIG_PLATFORM_SETUP
+       setenv("platname", bdname);
+#endif
 #endif
        sprintf(info, "%s%s", bdname, bdtype);
        env_set("board_name", info);
index 7310595a02786f5dda6987190ee40941fde2a06c..0ed1992f6b4daa79f943f6ae4f649384e6c09bb1 100644 (file)
--- a/cmd/dfu.c
+++ b/cmd/dfu.c
@@ -45,8 +45,35 @@ static int do_dfu(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
                value = simple_strtoul(argv[argc - 1], NULL, 0);
 #endif
 #endif
-
        int ret = 0;
+
+#ifdef CONFIG_DFU_OVER_USB
+       int argv_list = 0;
+       bool dfu_reset = false;
+       switch (argc) {
+       case 2:
+               argv_list = 1;
+       case 1:
+               usb_controller = strdup(env_get("dfu_usb_con"));
+               interface = strdup(env_get("dfu_interface"));
+               devstring = strdup(env_get("dfu_device"));
+               if (!usb_controller || !interface || !devstring) {
+                       puts("DFU: default device environment is not set.\n");
+                       ret = CMD_RET_USAGE;
+                       goto bad_args;
+               }
+               break;
+       case 5:
+               argv_list = 4;
+       case 4:
+               usb_controller = argv[1];
+               interface = argv[2];
+               devstring = argv[3];
+               break;
+       default:
+               return CMD_RET_USAGE;
+       }
+#endif
 #ifdef CONFIG_DFU_OVER_TFTP
        if (!strcmp(argv[1], "tftp"))
                return update_tftp(value, interface, devstring);
@@ -60,8 +87,7 @@ static int do_dfu(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
        dfu_set_timeout(value * 1000);
 #endif
 
-       ret = CMD_RET_SUCCESS;
-       if (strcmp(argv[argc - 1], "list") == 0) {
+       if (argv_list && !strcmp(argv[argv_list], "list")) {
                dfu_show_entities();
                goto done;
        }
@@ -72,6 +98,17 @@ static int do_dfu(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
 
 done:
        dfu_free_entities();
+
+       if (dfu_reset)
+               run_command("reset", 0);
+
+       g_dnl_clear_detach();
+bad_args:
+       if (argc == 1) {
+               free(usb_controller);
+               free(interface);
+               free(devstring);
+       }
 #endif
        return ret;
 }