Merge branches 'v3.10/topic/tc2' and 'v3.10/topic/arm64-fvp' of git://git.linaro...
authorMark Brown <broonie@linaro.org>
Thu, 17 Apr 2014 18:05:34 +0000 (19:05 +0100)
committerMark Brown <broonie@linaro.org>
Thu, 17 Apr 2014 18:05:34 +0000 (19:05 +0100)
arch/arm64/boot/dts/clcd-panels.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/fvp-base-gicv2-psci.dts
arch/arm64/boot/dts/rtsm_ve-aemv8a.dts
drivers/video/amba-clcd.c

diff --git a/arch/arm64/boot/dts/clcd-panels.dtsi b/arch/arm64/boot/dts/clcd-panels.dtsi
new file mode 100644 (file)
index 0000000..0b0ff6e
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * ARM Ltd. Versatile Express
+ *
+ */
+
+/ {
+       panels {
+               panel@0 {
+                       compatible      = "panel";
+                       mode            = "VGA";
+                       refresh         = <60>;
+                       xres            = <640>;
+                       yres            = <480>;
+                       pixclock        = <39721>;
+                       left_margin     = <40>;
+                       right_margin    = <24>;
+                       upper_margin    = <32>;
+                       lower_margin    = <11>;
+                       hsync_len       = <96>;
+                       vsync_len       = <2>;
+                       sync            = <0>;
+                       vmode           = "FB_VMODE_NONINTERLACED";
+
+                       tim2            = "TIM2_BCD", "TIM2_IPC";
+                       cntl            = "CNTL_LCDTFT", "CNTL_BGR", "CNTL_LCDVCOMP(1)";
+                       caps            = "CLCD_CAP_5551", "CLCD_CAP_565", "CLCD_CAP_888";
+                       bpp             = <16>;
+               };
+
+               panel@1 {
+                       compatible      = "panel";
+                       mode            = "XVGA";
+                       refresh         = <60>;
+                       xres            = <1024>;
+                       yres            = <768>;
+                       pixclock        = <15748>;
+                       left_margin     = <152>;
+                       right_margin    = <48>;
+                       upper_margin    = <23>;
+                       lower_margin    = <3>;
+                       hsync_len       = <104>;
+                       vsync_len       = <4>;
+                       sync            = <0>;
+                       vmode           = "FB_VMODE_NONINTERLACED";
+
+                       tim2            = "TIM2_BCD", "TIM2_IPC";
+                       cntl            = "CNTL_LCDTFT", "CNTL_BGR", "CNTL_LCDVCOMP(1)";
+                       caps            = "CLCD_CAP_5551", "CLCD_CAP_565", "CLCD_CAP_888";
+                       bpp             = <16>;
+               };
+       };
+};
index 79ddd464c7d0f1c998dbdcd8d701b7013a953b87..a46be6148b3a055cefaf4662267fee127798c712 100644 (file)
 
                /include/ "rtsm_ve-motherboard.dtsi"
        };
-
-       panels {
-               panel@0 {
-                       compatible      = "panel";
-                       mode            = "XVGA";
-                       refresh         = <60>;
-                       xres            = <1024>;
-                       yres            = <768>;
-                       pixclock        = <15748>;
-                       left_margin     = <152>;
-                       right_margin    = <48>;
-                       upper_margin    = <23>;
-                       lower_margin    = <3>;
-                       hsync_len       = <104>;
-                       vsync_len       = <4>;
-                       sync            = <0>;
-                       vmode           = "FB_VMODE_NONINTERLACED";
-                       tim2            = "TIM2_BCD", "TIM2_IPC";
-                       cntl            = "CNTL_LCDTFT", "CNTL_BGR", "CNTL_LCDVCOMP(1)";
-                       caps            = "CLCD_CAP_5551", "CLCD_CAP_565", "CLCD_CAP_888";
-                       bpp             = <16>;
-               };
-       };
 };
+
+/include/ "clcd-panels.dtsi"
index 572005ea2217ff9a2480c2d6f9ff4e2aa5091e98..f76eb9024a322726187183af6d067a4830f5a4c8 100644 (file)
                /include/ "rtsm_ve-motherboard.dtsi"
        };
 };
+
+/include/ "clcd-panels.dtsi"
index 94a1998338dacb5dd726d44a9683338ef7185c95..dba653f6badc54c12131a0fb9613aec24b3c5e40 100644 (file)
@@ -45,6 +45,8 @@
 
 /* This is limited to 16 characters when displayed by X startup */
 static const char *clcd_name = "CLCD FB";
+static char *def_mode;
+module_param_named(mode, def_mode, charp, 0);
 
 /*
  * Unfortunately, the enable/disable functions may be called either from
@@ -763,10 +765,18 @@ static int clcdfb_dt_init(struct clcd_fb *fb)
        na = of_n_addr_cells(node);
        ns = of_n_size_cells(node);
 
-       if (WARN_ON(of_property_read_string(node, "mode", &mode)))
-               return -ENODEV;
+       if (def_mode && strlen(def_mode) > 0) {
+               fb->panel = clcdfb_get_panel(def_mode);
+               if (!fb->panel)
+                       printk(KERN_ERR "CLCD: invalid mode specified on the command line (%s)\n", def_mode);
+       }
+
+       if (!fb->panel) {
+               if (WARN_ON(of_property_read_string(node, "mode", &mode)))
+                       return -ENODEV;
+               fb->panel = clcdfb_get_panel(mode);
+       }
 
-       fb->panel = clcdfb_get_panel(mode);
        if (!fb->panel)
                return -EINVAL;
        fb->fb.fix.smem_len = fb->panel->mode.xres * fb->panel->mode.yres * 2;