OSDN Git Service

ARC: [arcfpga] Early ARC UART to be only activated by cmdline
authorVineet Gupta <vgupta@synopsys.com>
Mon, 31 Mar 2014 10:52:09 +0000 (16:22 +0530)
committerVineet Gupta <vgupta@synopsys.com>
Tue, 3 Jun 2014 08:50:09 +0000 (14:20 +0530)
Earlier CONFIG_SERIAL_ARC_CONSOLE would unconditionally enable the
legacy ARC UART based early console even if platform lacked that UART
(e.g. nSIM OSCI platform).

So a multi-platform image containing the 2 UART drivers won't work.

Fix that by probing the driver only if "earlyprintk=ttyARC0" is present
in cmdline.

Reported-by: Chuck Jordan <cjordan@synopsys.com>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
arch/arc/boot/dts/angel4.dts
arch/arc/plat-arcfpga/platform.c

index bcf662d..5bb2fda 100644 (file)
@@ -17,7 +17,7 @@
        interrupt-parent = <&intc>;
 
        chosen {
-               bootargs = "console=ttyARC0,115200n8";
+               bootargs = "console=ttyARC0,115200n8 earlyprintk=ttyARC0";
        };
 
        aliases {
index f09e771..61c7e59 100644 (file)
@@ -79,16 +79,11 @@ static void arc_fpga_serial_init(void)
                                   ARRAY_SIZE(fpga_early_devs));
 
        /*
-        * ARC console driver registers itself as an early platform driver
-        * of class "earlyprintk".
-        * Install it here, followed by probe of devices.
-        * The installation here doesn't require earlyprintk in command line
-        * To do so however, replace the lines below with
-        *      parse_early_param();
-        *      early_platform_driver_probe("earlyprintk", 1, 1);
-        *                                                    ^^
+        * ARC console driver registers (build time) as an early platform driver
+        * of class "earlyprintk". However it needs explicit cmdline toggle
+        * "earlyprintk=ttyARC0" to be successfuly runtime registered.
+        * Otherwise the early probe below fails to find the driver
         */
-       early_platform_driver_register_all("earlyprintk");
        early_platform_driver_probe("earlyprintk", 1, 0);
 
        /*