sandbox: Add an option to display of-platdata in SPL
authorSimon Glass <sjg@chromium.org>
Fri, 16 Nov 2018 01:44:01 +0000 (18:44 -0700)
committerTom Rini <trini@konsulko.com>
Mon, 26 Nov 2018 13:25:35 +0000 (08:25 -0500)
At present we don't have a test that of-platdata can be accessed in SPL.
Add this in as a command-line option to SPL.

Signed-off-by: Simon Glass <sjg@chromium.org>
arch/sandbox/cpu/spl.c
arch/sandbox/cpu/start.c
arch/sandbox/cpu/u-boot-spl.lds
arch/sandbox/include/asm/state.h
test/py/tests/test_ofplatdata.py

index 42c149a49815198f7e1f3357851044d3c12e9c9a..49f98644c02f80ed1e184b38a500212e5990956d 100644 (file)
@@ -44,5 +44,19 @@ SPL_LOAD_IMAGE_METHOD("sandbox", 0, BOOT_DEVICE_BOARD, spl_board_load_image);
 
 void spl_board_init(void)
 {
+       struct sandbox_state *state = state_get_current();
+       struct udevice *dev;
+
        preloader_console_init();
+       if (state->show_of_platdata) {
+               /*
+                * Scan all the devices so that we can output their platform
+                * data. See sandbox_spl_probe().
+                */
+               printf("Scanning misc devices\n");
+               for (uclass_first_device(UCLASS_MISC, &dev);
+                    dev;
+                    uclass_next_device(&dev))
+                       ;
+       }
 }
index 2ee3b485657c2e9d77d002261b9b2bfaad680a2b..28ca35392c946d924d31eb2b45c4460d5f14197e 100644 (file)
@@ -283,6 +283,15 @@ static int sandbox_cmdline_cb_log_level(struct sandbox_state *state,
 SANDBOX_CMDLINE_OPT_SHORT(log_level, 'L', 1,
                          "Set log level (0=panic, 7=debug)");
 
+static int sandbox_cmdline_cb_show_of_platdata(struct sandbox_state *state,
+                                              const char *arg)
+{
+       state->show_of_platdata = true;
+
+       return 0;
+}
+SANDBOX_CMDLINE_OPT(show_of_platdata, 0, "Show of-platdata in SPL");
+
 int board_run_command(const char *cmdline)
 {
        printf("## Commands are disabled. Please enable CONFIG_CMDLINE.\n");
index f97abdfa0507b094798ed90fb3d71fff5154975a..de65b01b33c3a8b9ff5bcb38cb3a1a84d183aa55 100644 (file)
@@ -14,7 +14,7 @@ SECTIONS
        }
 
        __u_boot_sandbox_option_start = .;
-       _u_boot_sandbox_getopt : { *(.u_boot_sandbox_getopt) }
+       _u_boot_sandbox_getopt : { KEEP(*(.u_boot_sandbox_getopt)) }
        __u_boot_sandbox_option_end = .;
 
        __bss_start = .;
index dcb6d5f5683502458813cb85b521b543b9c065c4..0a2e3c41ae30417a46d82b212fb6dcca7add80da 100644 (file)
@@ -89,6 +89,7 @@ struct sandbox_state {
        bool skip_delays;               /* Ignore any time delays (for test) */
        bool show_test_output;          /* Don't suppress stdout in tests */
        int default_log_level;          /* Default log level for sandbox */
+       bool show_of_platdata;          /* Show of-platdata in SPL */
 
        /* Pointer to information for each SPI bus/cs */
        struct sandbox_spi_info spi[CONFIG_SANDBOX_SPI_MAX_BUS]
index dd8a09f03242e2c3b026329792b3a7e4a04c8b21..98103ee71a94ef44b633307b28aa1bfccda87276 100644 (file)
@@ -3,11 +3,40 @@
 
 import pytest
 
-OF_PLATDATA_OUTPUT = ''
+OF_PLATDATA_OUTPUT = '''
+of-platdata probe:
+bool 1
+byte 05
+bytearray 06 00 00
+int 1
+intarray 2 3 4 0
+longbytearray 09 0a 0b 0c 0d 0e 0f 10 11
+string message
+stringarray "multi-word" "message" ""
+of-platdata probe:
+bool 0
+byte 08
+bytearray 01 23 34
+int 3
+intarray 5 0 0 0
+longbytearray 09 00 00 00 00 00 00 00 00
+string message2
+stringarray "another" "multi-word" "message"
+of-platdata probe:
+bool 0
+byte 00
+bytearray 00 00 00
+int 0
+intarray 0 0 0 0
+longbytearray 00 00 00 00 00 00 00 00 00
+string <NULL>
+stringarray "one" "" ""
+'''
 
 @pytest.mark.buildconfigspec('spl_of_platdata')
 def test_ofplatdata(u_boot_console):
     """Test that of-platdata can be generated and used in sandbox"""
     cons = u_boot_console
+    cons.restart_uboot_with_flags(['--show_of_platdata'])
     output = cons.get_spawn_output().replace('\r', '')
     assert OF_PLATDATA_OUTPUT in output