<div dir="ltr">Hi,<br><br>I'm trying to use the Seiko 43WVF1G panel (Datasheet link:<br><a href="http://www.glyn.de/data/glyn/media/doc/43wvf1g-0.pdf">http://www.glyn.de/data/glyn/media/doc/43wvf1g-0.pdf</a>) and the DRM_MXS driver on<br>the i.MX6SX SabreSD. Applying the patch below removes the old<br>timing configuration on the dtsi and adds it to the panel-simple.c<br>I can get the display working, but the image is out of place. Another point to<br>note is that it's necessary to set the reg_lcd_3v3 to regulator-always-on<br>otherwise the gpio3 27 does not get enabled.<br><br>The main two problems that I'm having at the moment are:<br><br>- Gpio3 27 is not being set by the driver, function<br>panel_simple_prepare(struct drm_panel *panel) is not being called.<br>- The image is displaced even when using the same timing values in<br>the datasheet.<br><br>I would like to know if I'm doing something wrong on my dtsi, or if something<br>is missing on the panel-simple.c. I would appreciate any help.<br><br>Thanks!<br><br>diff --git a/arch/arm/boot/dts/imx6sx-sdb.dtsi b/arch/arm/boot/dts/imx6sx-sdb.dtsi<br>index da81552..13fcce9 100644<br>--- a/arch/arm/boot/dts/imx6sx-sdb.dtsi<br>+++ b/arch/arm/boot/dts/imx6sx-sdb.dtsi<br>@@ -24,7 +24,7 @@<br>         reg = <0x80000000 0x40000000>;<br>     };<br> <br>-    backlight {<br>+    backlight_display: backlight-display {<br>         compatible = "pwm-backlight";<br>         pwms = <&pwm3 0 5000000>;<br>         brightness-levels = <0 4 8 16 32 64 128 255>;<br>@@ -104,6 +104,7 @@<br>             regulator-name = "lcd-3v3";<br>             gpio = <&gpio3 27 0>;<br>             enable-active-high;<br>+            regulator-always-on;<br>         };<br> <br>         reg_peri_3v3: regulator@5 {<br>@@ -146,6 +147,19 @@<br>         mux-int-port = <2>;<br>         mux-ext-port = <6>;<br>     };<br>+<br>+    panel {<br>+        compatible = "seiko,43wvf1g", "simple-panel";<br>+        backlight = <&backlight_display>;<br>+<br>+        power-supply = <&reg_lcd_3v3>;<br>+<br>+        port {<br>+            panel_in: endpoint {<br>+                remote-endpoint = <&display_out>;<br>+            };<br>+        };<br>+    };<br> };<br> <br> &audmux {<br>@@ -215,33 +229,14 @@<br> &lcdif1 {<br>     pinctrl-names = "default";<br>     pinctrl-0 = <&pinctrl_lcd>;<br>-    lcd-supply = <&reg_lcd_3v3>;<br>-    display = <&display0>;<br>     status = "okay";<br> <br>-    display0: display0 {<br>-        bits-per-pixel = <16>;<br>-        bus-width = <24>;<br>-<br>-        display-timings {<br>-            native-mode = <&timing0>;<br>-            timing0: timing0 {<br>-                clock-frequency = <33500000>;<br>-                hactive = <800>;<br>-                vactive = <480>;<br>-                hback-porch = <89>;<br>-                hfront-porch = <164>;<br>-                vback-porch = <23>;<br>-                vfront-porch = <10>;<br>-                hsync-len = <10>;<br>-                vsync-len = <10>;<br>-                hsync-active = <0>;<br>-                vsync-active = <0>;<br>-                de-active = <1>;<br>-                pixelclk-active = <0>;<br>-            };<br>+    port{<br>+        display_out: endpoint {<br>+            remote-endpoint = <&panel_in>;<br>         };<br>     };<br>+<br> };<br> <br> &pwm3 {<br>diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c<br>index 06aaf79..8faefee 100644<br>--- a/drivers/gpu/drm/panel/panel-simple.c<br>+++ b/drivers/gpu/drm/panel/panel-simple.c<br>@@ -863,6 +863,31 @@ static const struct panel_desc hannstar_hsd070pww1 = {<br>     .bus_format = MEDIA_BUS_FMT_RGB666_1X7X3_SPWG,<br> };<br> <br>+static const struct display_timing seiko_43wvf1g_timing = {<br>+    .pixelclock = { 33500000, 33500000, 33500000 },<br>+    .hactive = { 800, 800, 800 },<br>+    .hfront_porch = {  164, 164, 164 },<br>+    .hback_porch = { 89, 89, 89 },<br>+    .hsync_len = { 10, 10, 10 },<br>+    .vactive = { 480, 480, 480 },<br>+    .vfront_porch = { 10, 10, 10 },<br>+    .vback_porch = { 23, 23, 23 },<br>+    .vsync_len = { 10, 10, 10 },<br>+    .flags = DISPLAY_FLAGS_DE_HIGH | DISPLAY_FLAGS_PIXDATA_NEGEDGE |<br>+            DISPLAY_FLAGS_HSYNC_LOW | DISPLAY_FLAGS_VSYNC_LOW,<br>+};<br>+<br>+static const struct panel_desc seiko_43wvf1g = {<br>+    .timings = &seiko_43wvf1g_timing,<br>+    .num_timings = 1,<br>+    .bpc = 8,<br>+    .size = {<br>+        .width = 93,<br>+        .height = 57,<br>+    },<br>+    .bus_format = MEDIA_BUS_FMT_RGB888_1X24,<br>+};<br>+<br> static const struct display_timing hannstar_hsd100pxn1_timing = {<br>     .pixelclock = { 55000000, 65000000, 75000000 },<br>     .hactive = { 1024, 1024, 1024 },<br>@@ -1853,6 +1878,9 @@ static const struct of_device_id platform_of_match[] = {<br>         .compatible = "samsung,ltn140at29-301",<br>         .data = &samsung_ltn140at29_301,<br>     }, {<br>+        .compatible = "seiko,43wvf1g",<br>+        .data = &seiko_43wvf1g,<br>+    }, {<br>         .compatible = "sharp,lq101k1ly04",<br>         .data = &sharp_lq101k1ly04,<br>     }, {<br>--<br>2.7.4<br><br><br>--<br>Breno Matheus Lima</div>