diff mbox

[v2] drm/panel: simple: Add support for Innolux AT070TN92

Message ID 1461159435-16528-1-git-send-email-boris.brezillon@free-electrons.com (mailing list archive)
State New, archived
Headers show

Commit Message

Boris BREZILLON April 20, 2016, 1:37 p.m. UTC
From: Riccardo Bortolato <bortolato@navaltechitalia.it>

Add support for the Innolux AT070TN92 panel.

Signed-off-by: Riccardo Bortolato <bortolato@navaltechitalia.it>
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>

---
Changes since v1:
- Add missing SoB
---
 .../bindings/display/panel/innolux,at070tn92.txt   |  7 ++++++
 drivers/gpu/drm/panel/panel-simple.c               | 26 ++++++++++++++++++++++
 2 files changed, 33 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/display/panel/innolux,at070tn92.txt

Comments

Thierry Reding April 20, 2016, 1:40 p.m. UTC | #1
On Wed, Apr 20, 2016 at 03:37:15PM +0200, Boris Brezillon wrote:
> From: Riccardo Bortolato <bortolato@navaltechitalia.it>
> 
> Add support for the Innolux AT070TN92 panel.
> 
> Signed-off-by: Riccardo Bortolato <bortolato@navaltechitalia.it>
> Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
> 
> ---
> Changes since v1:
> - Add missing SoB
> ---
>  .../bindings/display/panel/innolux,at070tn92.txt   |  7 ++++++
>  drivers/gpu/drm/panel/panel-simple.c               | 26 ++++++++++++++++++++++
>  2 files changed, 33 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/display/panel/innolux,at070tn92.txt

Applied, thanks.

Thierry
Holger Schurig April 21, 2016, 12:11 p.m. UTC | #2
Thierry Reding <thierry.reding@gmail.com> writes:
> Applied, thanks.

I once read that this is the recommended way to go, instead of
specifying the timings in the device tree. Why is this so?  Any new
display just increases the .text size of the kernel unnessary.

Did this idea stem from the era where bootloaders like Barebox couldn't
modify the DT ad-hoc before handing it over to the kernel?
Thierry Reding April 22, 2016, 10:30 p.m. UTC | #3
On Thu, Apr 21, 2016 at 02:11:19PM +0200, Holger Schurig wrote:
> Thierry Reding <thierry.reding@gmail.com> writes:
> > Applied, thanks.
> 
> I once read that this is the recommended way to go, instead of
> specifying the timings in the device tree. Why is this so?  Any new
> display just increases the .text size of the kernel unnessary.

It's actually only the .rodata section that's increased every time we
add a new display panel.

> Did this idea stem from the era where bootloaders like Barebox couldn't
> modify the DT ad-hoc before handing it over to the kernel?

No, not really. But since this has come up every now and again I finally
wrote down my recollection and thoughts on the matter, hopefully that
will be satisfactory as an answer:

	http://sietch-tagr.blogspot.com/2016/04/display-panels-are-not-special.html

Thierry
diff mbox

Patch

diff --git a/Documentation/devicetree/bindings/display/panel/innolux,at070tn92.txt b/Documentation/devicetree/bindings/display/panel/innolux,at070tn92.txt
new file mode 100644
index 0000000..3e10cd7
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/panel/innolux,at070tn92.txt
@@ -0,0 +1,7 @@ 
+Innolux AT070TN92 7.0" WQVGA TFT LCD panel
+
+Required properties:
+- compatible: should be "innolux,at070tn92"
+
+This binding is compatible with the simple-panel binding, which is specified
+in simple-panel.txt in this directory.
diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c
index 3649eb0..d321c57 100644
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
@@ -822,6 +822,29 @@  static const struct panel_desc innolux_at043tn24 = {
 	.bus_format = MEDIA_BUS_FMT_RGB888_1X24,
 };
 
+static const struct drm_display_mode innolux_at070tn92_mode = {
+	.clock = 33333,
+	.hdisplay = 800,
+	.hsync_start = 800 + 210,
+	.hsync_end = 800 + 210 + 20,
+	.htotal = 800 + 210 + 20 + 46,
+	.vdisplay = 480,
+	.vsync_start = 480 + 22,
+	.vsync_end = 480 + 22 + 10,
+	.vtotal = 480 + 22 + 23 + 10,
+	.vrefresh = 60,
+};
+
+static const struct panel_desc innolux_at070tn92 = {
+	.modes = &innolux_at070tn92_mode,
+	.num_modes = 1,
+	.size = {
+		.width = 154,
+		.height = 86,
+	},
+	.bus_format = MEDIA_BUS_FMT_RGB888_1X24,
+};
+
 static const struct drm_display_mode innolux_g121i1_l01_mode = {
 	.clock = 71000,
 	.hdisplay = 1280,
@@ -1362,6 +1385,9 @@  static const struct of_device_id platform_of_match[] = {
 		.compatible = "innolux,at043tn24",
 		.data = &innolux_at043tn24,
 	}, {
+		.compatible = "innolux,at070tn92",
+		.data = &innolux_at070tn92,
+	}, {
 		.compatible ="innolux,g121i1-l01",
 		.data = &innolux_g121i1_l01
 	}, {