Nokia RX-51: Remember setup_console_atag option
authorPali Rohár <pali@kernel.org>
Tue, 31 Mar 2020 22:35:14 +0000 (00:35 +0200)
committerLokesh Vutla <lokeshvutla@ti.com>
Mon, 11 May 2020 04:46:49 +0000 (10:16 +0530)
When variable setup_console_atag is unset then read default value from OMAP
atags which passed NOLO bootloader to U-Boot.

This would allow to boot Maemo Linux kernel from U-Boot with serial console
settings configured in NOLO bootloader (which loads U-Boot).

So serial console needs to be enabled only at one place, globally in NOLO.

Signed-off-by: Pali Rohár <pali@kernel.org>
board/nokia/rx51/rx51.c

index c8ef26f9408dc3391cd83211c33b8ed808eabaad..a282fe68a610f498ff37937cffa6281ab17081d2 100644 (file)
@@ -87,6 +87,7 @@ static char *boot_reason_ptr;
 static char *hw_build_ptr;
 static char *nolo_version_ptr;
 static char *boot_mode_ptr;
+static int serial_was_console_enabled;
 
 /*
  * Routine: init_omap_tags
@@ -143,6 +144,13 @@ static void reuse_omap_atags(struct tag_omap *t)
                                strcpy(boot_mode_ptr, version);
                        }
                        break;
+               case OMAP_TAG_UART:
+                       if (!t->u.uart.enabled_uarts)
+                               serial_was_console_enabled = 1;
+                       break;
+               case OMAP_TAG_SERIAL_CONSOLE:
+                       serial_was_console_enabled = 1;
+                       break;
                default:
                        break;
                }
@@ -233,10 +241,17 @@ void setup_board_tags(struct tag **in_params)
                return;
 
        str = env_get("setup_console_atag");
-       if (str && str[0] == '1')
-               setup_console_atag = 1;
-       else
-               setup_console_atag = 0;
+       if (str && str[0]) {
+               if (str[0] == '1')
+                       setup_console_atag = 1;
+               else
+                       setup_console_atag = 0;
+       } else {
+               if (serial_was_console_enabled)
+                       setup_console_atag = 1;
+               else
+                       setup_console_atag = 0;
+       }
 
        setup_boot_reason_atag = env_get("setup_boot_reason_atag");
        setup_boot_mode_atag = env_get("setup_boot_mode_atag");