[v6] drm/panel: simple: Add TFC S9700RTWV43TR-01B 800x480 panel support

Message ID 20190315141239.3689-1-jsarha@ti.com
State New
Headers show
Series
  • [v6] drm/panel: simple: Add TFC S9700RTWV43TR-01B 800x480 panel support
Related show

Commit Message

Jyri Sarha March 15, 2019, 2:12 p.m.
Add support for Three Five displays TFC S9700RTWV43TR-01B 800x480
panel with resistive touch found on TI's AM335X-EVM.

Signed-off-by: Jyri Sarha <jsarha@ti.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
---
Changes since v5:
- Add all simple-panel properties that make sense with this panel to the
  binding document

Previous round some time ago:
https://patchwork.kernel.org/patch/10366741/

 .../display/panel/tfc,s9700rtwv43tr-01b.txt   | 17 +++++++++++
 .../devicetree/bindings/vendor-prefixes.txt   |  1 +
 drivers/gpu/drm/panel/panel-simple.c          | 28 +++++++++++++++++++
 3 files changed, 46 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/display/panel/tfc,s9700rtwv43tr-01b.txt

Comments

Laurent Pinchart March 17, 2019, 4:34 p.m. | #1
Hi Jyri,

Thank you for the patch.

On Fri, Mar 15, 2019 at 04:12:39PM +0200, Jyri Sarha wrote:
> Add support for Three Five displays TFC S9700RTWV43TR-01B 800x480
> panel with resistive touch found on TI's AM335X-EVM.
> 
> Signed-off-by: Jyri Sarha <jsarha@ti.com>
> Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
> ---
> Changes since v5:
> - Add all simple-panel properties that make sense with this panel to the
>   binding document
> 
> Previous round some time ago:
> https://patchwork.kernel.org/patch/10366741/
> 
>  .../display/panel/tfc,s9700rtwv43tr-01b.txt   | 17 +++++++++++
>  .../devicetree/bindings/vendor-prefixes.txt   |  1 +
>  drivers/gpu/drm/panel/panel-simple.c          | 28 +++++++++++++++++++
>  3 files changed, 46 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/display/panel/tfc,s9700rtwv43tr-01b.txt
> 
> diff --git a/Documentation/devicetree/bindings/display/panel/tfc,s9700rtwv43tr-01b.txt b/Documentation/devicetree/bindings/display/panel/tfc,s9700rtwv43tr-01b.txt
> new file mode 100644
> index 000000000000..fbd45b01e5c5
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/display/panel/tfc,s9700rtwv43tr-01b.txt
> @@ -0,0 +1,17 @@
> +TFC S9700RTWV43TR-01B 7" Three Five Corp 800x480 LCD panel with
> +resistive touch
> +
> +The panel is found on TI AM335x-evm.
> +
> +Required properties:
> +- compatible: should be "tfc,S9700RTWV43tr-01b"
> +
> +Optional properties:
> +- power-supply: If there is one that can be controlled by the driver.
> +   If the property is not present a dummy regulator is provided by the
> +   framework.

I'd make this mandatory, given that there is always a power supply
connected to the panel. If it isn't user-controllable it can be modelled
as a fixed regulator.

> +- enable-gpios: GPIO pin to enable or disable the panel, if there is one
> +- backlight: phandle of the backlight device attached to the panel
> +
> +This binding is compatible with the simple-panel binding, which is specified
> +in simple-panel.txt in this directory.
> diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
> index 389508584f48..0c0ffe2cc823 100644
> --- a/Documentation/devicetree/bindings/vendor-prefixes.txt
> +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
> @@ -391,6 +391,7 @@ technexion	TechNexion
>  technologic	Technologic Systems
>  tempo	Tempo Semiconductor
>  terasic	Terasic Inc.
> +tfc	Three Five Corp
>  thine	THine Electronics, Inc.
>  ti	Texas Instruments
>  tianma	Tianma Micro-electronics Co., Ltd.
> diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c
> index 9c69e739a524..cfa57ee78482 100644
> --- a/drivers/gpu/drm/panel/panel-simple.c
> +++ b/drivers/gpu/drm/panel/panel-simple.c
> @@ -2281,6 +2281,31 @@ static const struct panel_desc starry_kr122ea0sra = {
>  	},
>  };
>  
> +static const struct drm_display_mode tfc_s9700rtwv43tr_01b_mode = {
> +	.clock = 30000,
> +	.hdisplay = 800,
> +	.hsync_start = 800 + 39,
> +	.hsync_end = 800 + 39 + 47,
> +	.htotal = 800 + 39 + 47 + 39,
> +	.vdisplay = 480,
> +	.vsync_start = 480 + 13,
> +	.vsync_end = 480 + 13 + 2,
> +	.vtotal = 480 + 13 + 2 + 29,
> +	.vrefresh = 62,
> +};
> +
> +static const struct panel_desc tfc_s9700rtwv43tr_01b = {
> +	.modes = &tfc_s9700rtwv43tr_01b_mode,
> +	.num_modes = 1,
> +	.bpc = 8,
> +	.size = {
> +		.width = 155,
> +		.height = 90,
> +	},
> +	.bus_format = MEDIA_BUS_FMT_RGB888_1X24,
> +	.bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_POSEDGE,
> +};
> +
>  static const struct display_timing tianma_tm070jdhg30_timing = {
>  	.pixelclock = { 62600000, 68200000, 78100000 },
>  	.hactive = { 1280, 1280, 1280 },
> @@ -2718,6 +2743,9 @@ static const struct of_device_id platform_of_match[] = {
>  	}, {
>  		.compatible = "starry,kr122ea0sra",
>  		.data = &starry_kr122ea0sra,
> +	}, {
> +		.compatible = "tfc,s9700rtwv43tr-01b",
> +		.data = &tfc_s9700rtwv43tr_01b,
>  	}, {
>  		.compatible = "tianma,tm070jdhg30",
>  		.data = &tianma_tm070jdhg30,

Patch

diff --git a/Documentation/devicetree/bindings/display/panel/tfc,s9700rtwv43tr-01b.txt b/Documentation/devicetree/bindings/display/panel/tfc,s9700rtwv43tr-01b.txt
new file mode 100644
index 000000000000..fbd45b01e5c5
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/panel/tfc,s9700rtwv43tr-01b.txt
@@ -0,0 +1,17 @@ 
+TFC S9700RTWV43TR-01B 7" Three Five Corp 800x480 LCD panel with
+resistive touch
+
+The panel is found on TI AM335x-evm.
+
+Required properties:
+- compatible: should be "tfc,S9700RTWV43tr-01b"
+
+Optional properties:
+- power-supply: If there is one that can be controlled by the driver.
+   If the property is not present a dummy regulator is provided by the
+   framework.
+- enable-gpios: GPIO pin to enable or disable the panel, if there is one
+- backlight: phandle of the backlight device attached to the panel
+
+This binding is compatible with the simple-panel binding, which is specified
+in simple-panel.txt in this directory.
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
index 389508584f48..0c0ffe2cc823 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.txt
+++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
@@ -391,6 +391,7 @@  technexion	TechNexion
 technologic	Technologic Systems
 tempo	Tempo Semiconductor
 terasic	Terasic Inc.
+tfc	Three Five Corp
 thine	THine Electronics, Inc.
 ti	Texas Instruments
 tianma	Tianma Micro-electronics Co., Ltd.
diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c
index 9c69e739a524..cfa57ee78482 100644
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
@@ -2281,6 +2281,31 @@  static const struct panel_desc starry_kr122ea0sra = {
 	},
 };
 
+static const struct drm_display_mode tfc_s9700rtwv43tr_01b_mode = {
+	.clock = 30000,
+	.hdisplay = 800,
+	.hsync_start = 800 + 39,
+	.hsync_end = 800 + 39 + 47,
+	.htotal = 800 + 39 + 47 + 39,
+	.vdisplay = 480,
+	.vsync_start = 480 + 13,
+	.vsync_end = 480 + 13 + 2,
+	.vtotal = 480 + 13 + 2 + 29,
+	.vrefresh = 62,
+};
+
+static const struct panel_desc tfc_s9700rtwv43tr_01b = {
+	.modes = &tfc_s9700rtwv43tr_01b_mode,
+	.num_modes = 1,
+	.bpc = 8,
+	.size = {
+		.width = 155,
+		.height = 90,
+	},
+	.bus_format = MEDIA_BUS_FMT_RGB888_1X24,
+	.bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_POSEDGE,
+};
+
 static const struct display_timing tianma_tm070jdhg30_timing = {
 	.pixelclock = { 62600000, 68200000, 78100000 },
 	.hactive = { 1280, 1280, 1280 },
@@ -2718,6 +2743,9 @@  static const struct of_device_id platform_of_match[] = {
 	}, {
 		.compatible = "starry,kr122ea0sra",
 		.data = &starry_kr122ea0sra,
+	}, {
+		.compatible = "tfc,s9700rtwv43tr-01b",
+		.data = &tfc_s9700rtwv43tr_01b,
 	}, {
 		.compatible = "tianma,tm070jdhg30",
 		.data = &tianma_tm070jdhg30,