[v2] arm64: dts: imx8mp: add imx8mp-venice-gw74xx-rpidsi overlay for display

Message ID 20230719152920.2173-1-tharvey@gateworks.com
State New
Headers
Series [v2] arm64: dts: imx8mp: add imx8mp-venice-gw74xx-rpidsi overlay for display |

Commit Message

Tim Harvey July 19, 2023, 3:29 p.m. UTC
  Add support for the following Raspberry Pi displays:
 - DFROBOT DRF0678 7in 800x480 TFT DSI capacitive touch
 - DFROBOT DRF0550 5in 800x480 TFT DSI capacitive touch

Both have the following hardware:
 - FocalTech FT5406 10pt touch controller (with no interrupt)
 - Powertip PH800480T013-IDF02 compatible panel
 - Toshiba TC358762 compatible DSI to DBI bridge
 - ATTINY based regulator used for backlight controller and panel enable

Support is added via a device-tree overlay. The touch controller is not
yet supported as polling mode is needed.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
---
v2:
 - add newline between properties and child nodes
---
 arch/arm64/boot/dts/freescale/Makefile        |  2 +
 .../imx8mp-venice-gw74xx-rpidsi.dtso          | 87 +++++++++++++++++++
 2 files changed, 89 insertions(+)
 create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-venice-gw74xx-rpidsi.dtso
  

Comments

Shawn Guo July 30, 2023, 12:24 p.m. UTC | #1
On Wed, Jul 19, 2023 at 08:29:20AM -0700, Tim Harvey wrote:
> Add support for the following Raspberry Pi displays:
>  - DFROBOT DRF0678 7in 800x480 TFT DSI capacitive touch
>  - DFROBOT DRF0550 5in 800x480 TFT DSI capacitive touch
> 
> Both have the following hardware:
>  - FocalTech FT5406 10pt touch controller (with no interrupt)
>  - Powertip PH800480T013-IDF02 compatible panel
>  - Toshiba TC358762 compatible DSI to DBI bridge
>  - ATTINY based regulator used for backlight controller and panel enable
> 
> Support is added via a device-tree overlay. The touch controller is not
> yet supported as polling mode is needed.
> 
> Signed-off-by: Tim Harvey <tharvey@gateworks.com>

Applied, thanks!
  
Marc Kleine-Budde Oct. 25, 2023, 2:33 p.m. UTC | #2
Hey Tim,

On 19.07.2023 08:29:20, Tim Harvey wrote:
> Add support for the following Raspberry Pi displays:
>  - DFROBOT DRF0678 7in 800x480 TFT DSI capacitive touch
>  - DFROBOT DRF0550 5in 800x480 TFT DSI capacitive touch
> 
> Both have the following hardware:
>  - FocalTech FT5406 10pt touch controller (with no interrupt)
>  - Powertip PH800480T013-IDF02 compatible panel
>  - Toshiba TC358762 compatible DSI to DBI bridge
>  - ATTINY based regulator used for backlight controller and panel enable
> 
> Support is added via a device-tree overlay. The touch controller is not
> yet supported as polling mode is needed.

I'm just integrating the 7in Raspberry Pi display for a customer on an
imx8mp. Do you have a (non-mainline) touch driver that works for the
Raspberry Pi display? I might fight some time in this project to work on
it.

regards,
Marc
  
Marc Kleine-Budde Oct. 25, 2023, 3:25 p.m. UTC | #3
On 25.10.2023 16:33:07, Marc Kleine-Budde wrote:
> Hey Tim,
> 
> On 19.07.2023 08:29:20, Tim Harvey wrote:
> > Add support for the following Raspberry Pi displays:
> >  - DFROBOT DRF0678 7in 800x480 TFT DSI capacitive touch
> >  - DFROBOT DRF0550 5in 800x480 TFT DSI capacitive touch
> > 
> > Both have the following hardware:
> >  - FocalTech FT5406 10pt touch controller (with no interrupt)
> >  - Powertip PH800480T013-IDF02 compatible panel
> >  - Toshiba TC358762 compatible DSI to DBI bridge
> >  - ATTINY based regulator used for backlight controller and panel enable
> > 
> > Support is added via a device-tree overlay. The touch controller is not
> > yet supported as polling mode is needed.
> 
> I'm just integrating the 7in Raspberry Pi display for a customer on an
> imx8mp. Do you have a (non-mainline) touch driver that works for the
> Raspberry Pi display? I might fight some time in this project to work on
> it.

Replying to myself:

Have a look at drivers/input/touchscreen/edt-ft5x06.c

regards,
Marc
  
Tim Harvey Oct. 25, 2023, 4:06 p.m. UTC | #4
On Wed, Oct 25, 2023 at 8:25 AM Marc Kleine-Budde <mkl@pengutronix.de> wrote:
>
> On 25.10.2023 16:33:07, Marc Kleine-Budde wrote:
> > Hey Tim,
> >
> > On 19.07.2023 08:29:20, Tim Harvey wrote:
> > > Add support for the following Raspberry Pi displays:
> > >  - DFROBOT DRF0678 7in 800x480 TFT DSI capacitive touch
> > >  - DFROBOT DRF0550 5in 800x480 TFT DSI capacitive touch
> > >
> > > Both have the following hardware:
> > >  - FocalTech FT5406 10pt touch controller (with no interrupt)
> > >  - Powertip PH800480T013-IDF02 compatible panel
> > >  - Toshiba TC358762 compatible DSI to DBI bridge
> > >  - ATTINY based regulator used for backlight controller and panel enable
> > >
> > > Support is added via a device-tree overlay. The touch controller is not
> > > yet supported as polling mode is needed.
> >
> > I'm just integrating the 7in Raspberry Pi display for a customer on an
> > imx8mp. Do you have a (non-mainline) touch driver that works for the
> > Raspberry Pi display? I might fight some time in this project to work on
> > it.
>
> Replying to myself:
>
> Have a look at drivers/input/touchscreen/edt-ft5x06.c
>

Hi Marc,

The specific display I have is the one from DFROBOT which emulates the
original Rpi display as far as I know.

I came up with two different approaches, neither of which I got any
comments from. I haven't spent any additional time on it and have just
been carrying around a custom patch to support it.

You can find my patches here:
https://patchwork.kernel.org/project/linux-input/list/?series=596977&state=%2A&archive=both
- add support for DFROBOT touch controller
https://www.spinics.net/lists/linux-input/msg76457.html - proposal of
adding a new driver

There's possibly a newer version of the patch that adds a new driver
on a 6.1 kernel here:
https://github.com/Gateworks/linux-venice/commit/5bf0ffcf0352b45c29d33184e933a35dd53f27bb

Is this the same touch controller you are working with?

Best Regards,

Tim
  
Marc Kleine-Budde Oct. 25, 2023, 6:03 p.m. UTC | #5
On 25.10.2023 09:06:21, Tim Harvey wrote:
> On Wed, Oct 25, 2023 at 8:25 AM Marc Kleine-Budde <mkl@pengutronix.de> wrote:
> >
> > On 25.10.2023 16:33:07, Marc Kleine-Budde wrote:
> > > Hey Tim,
> > >
> > > On 19.07.2023 08:29:20, Tim Harvey wrote:
> > > > Add support for the following Raspberry Pi displays:
> > > >  - DFROBOT DRF0678 7in 800x480 TFT DSI capacitive touch
> > > >  - DFROBOT DRF0550 5in 800x480 TFT DSI capacitive touch
> > > >
> > > > Both have the following hardware:
> > > >  - FocalTech FT5406 10pt touch controller (with no interrupt)
> > > >  - Powertip PH800480T013-IDF02 compatible panel
> > > >  - Toshiba TC358762 compatible DSI to DBI bridge
> > > >  - ATTINY based regulator used for backlight controller and panel enable
> > > >
> > > > Support is added via a device-tree overlay. The touch controller is not
> > > > yet supported as polling mode is needed.
> > >
> > > I'm just integrating the 7in Raspberry Pi display for a customer on an
> > > imx8mp. Do you have a (non-mainline) touch driver that works for the
> > > Raspberry Pi display? I might fight some time in this project to work on
> > > it.
> >
> > Replying to myself:
> >
> > Have a look at drivers/input/touchscreen/edt-ft5x06.c
> 
> The specific display I have is the one from DFROBOT which emulates the
> original Rpi display as far as I know.
> 
> I came up with two different approaches, neither of which I got any
> comments from. I haven't spent any additional time on it and have just
> been carrying around a custom patch to support it.
> 
> You can find my patches here:
> https://patchwork.kernel.org/project/linux-input/list/?series=596977&state=%2A&archive=both
> - add support for DFROBOT touch controller
> https://www.spinics.net/lists/linux-input/msg76457.html - proposal of
> adding a new driver

Thanks for the links to the patches.

> There's possibly a newer version of the patch that adds a new driver
> on a 6.1 kernel here:
> https://github.com/Gateworks/linux-venice/commit/5bf0ffcf0352b45c29d33184e933a35dd53f27bb
> 
> Is this the same touch controller you are working with?

I'm working with the original 7" RPi display. Currently it's for
development use for the customer. Not sure which display they will use
in the final product.

regards,
Marc
  

Patch

diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
index 454b07ed09fc..60a69e114442 100644
--- a/arch/arm64/boot/dts/freescale/Makefile
+++ b/arch/arm64/boot/dts/freescale/Makefile
@@ -156,6 +156,7 @@  imx8mm-venice-gw73xx-0x-rpidsi-dtbs	:= imx8mm-venice-gw73xx-0x.dtb imx8mm-venice
 imx8mm-venice-gw73xx-0x-rs232-rts-dtbs	:= imx8mm-venice-gw73xx-0x.dtb imx8mm-venice-gw73xx-0x-rs232-rts.dtbo
 imx8mm-venice-gw73xx-0x-rs422-dtbs	:= imx8mm-venice-gw73xx-0x.dtb imx8mm-venice-gw73xx-0x-rs422.dtbo
 imx8mm-venice-gw73xx-0x-rs485-dtbs	:= imx8mm-venice-gw73xx-0x.dtb imx8mm-venice-gw73xx-0x-rs485.dtbo
+imx8mp-venice-gw74xx-rpidsi-dtbs	:= imx8mp-venice-gw74xx.dtb imx8mp-venice-gw74xx-rpidsi.dtbo
 
 dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw72xx-0x-imx219.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw72xx-0x-rpidsi.dtb
@@ -167,6 +168,7 @@  dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw73xx-0x-rpidsi.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw73xx-0x-rs232-rts.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw73xx-0x-rs422.dtb
 dtb-$(CONFIG_ARCH_MXC) += imx8mm-venice-gw73xx-0x-rs485.dtb
+dtb-$(CONFIG_ARCH_MXC) += imx8mp-venice-gw74xx-rpidsi.dtb
 
 dtb-$(CONFIG_ARCH_S32) += s32g274a-evb.dtb
 dtb-$(CONFIG_ARCH_S32) += s32g274a-rdb2.dtb
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-venice-gw74xx-rpidsi.dtso b/arch/arm64/boot/dts/freescale/imx8mp-venice-gw74xx-rpidsi.dtso
new file mode 100644
index 000000000000..6a39f43435c2
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx8mp-venice-gw74xx-rpidsi.dtso
@@ -0,0 +1,87 @@ 
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2023 Gateworks Corporation
+ */
+
+/dts-v1/;
+/plugin/;
+
+&{/} {
+	compatible = "gateworks,imx8mp-gw74xx", "fsl,imx8mp";
+
+	panel {
+		compatible = "powertip,ph800480t013-idf02";
+		power-supply = <&attiny>;
+		backlight = <&attiny>;
+
+		port {
+			panel_in: endpoint {
+				remote-endpoint = <&bridge_out>;
+			};
+		};
+	};
+};
+
+&i2c4 {
+	#address-cells = <1>;
+	#size-cells = <0>;
+
+	attiny: regulator@45 {
+		compatible = "raspberrypi,7inch-touchscreen-panel-regulator";
+		reg = <0x45>;
+	};
+};
+
+&lcdif1 {
+	status = "okay";
+};
+
+&mipi_dsi {
+	samsung,burst-clock-frequency = <891000000>;
+	samsung,esc-clock-frequency = <54000000>;
+	samsung,pll-clock-frequency = <27000000>;
+	#address-cells = <1>;
+	#size-cells = <0>;
+	status = "okay";
+
+	bridge@0 {
+		compatible = "toshiba,tc358762";
+		reg = <0>;
+		vddc-supply = <&attiny>;
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			port@0 {
+				reg = <0>;
+
+				bridge_in: endpoint {
+					remote-endpoint = <&dsi_out>;
+				};
+			};
+
+			port@1 {
+				reg = <1>;
+
+				bridge_out: endpoint {
+					remote-endpoint = <&panel_in>;
+				};
+			};
+		};
+	};
+
+	ports {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		port@1 {
+			reg = <1>;
+
+			dsi_out: endpoint {
+				data-lanes = <1 2>;
+				remote-endpoint = <&bridge_in>;
+			};
+		};
+	};
+};