[v2,1/3] ARM: dts: imx7d-remarkable2: Enable the cyttsp5

Message ID 20221220112927.440506-2-alistair@alistair23.me
State New
Headers
Series imx7d-remarkable2: Enable cyttsp5 and rohm,bd71815 |

Commit Message

Alistair Francis Dec. 20, 2022, 11:29 a.m. UTC
  Add support for the cyttsp5 touchscreen controller for the reMarkable 2.

Signed-off-by: Alistair Francis <alistair@alistair23.me>
---
 arch/arm/boot/dts/imx7d-remarkable2.dts | 98 +++++++++++++++++++++++++
 1 file changed, 98 insertions(+)
  

Comments

Marco Felsch Dec. 20, 2022, 1:20 p.m. UTC | #1
Hi Alistair,                                                                                                                            

thanks for your patch, please see below.

On 22-12-20, Alistair Francis wrote:
> Add support for the cyttsp5 touchscreen controller for the reMarkable 2.
> 
> Signed-off-by: Alistair Francis <alistair@alistair23.me>
> ---
>  arch/arm/boot/dts/imx7d-remarkable2.dts | 98 +++++++++++++++++++++++++
>  1 file changed, 98 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/imx7d-remarkable2.dts b/arch/arm/boot/dts/imx7d-remarkable2.dts
> index 8b2f11e85e05..a138b292ec6a 100644
> --- a/arch/arm/boot/dts/imx7d-remarkable2.dts
> +++ b/arch/arm/boot/dts/imx7d-remarkable2.dts
> @@ -8,6 +8,7 @@
>  /dts-v1/;
>  
>  #include "imx7d.dtsi"
> +#include <dt-bindings/input/linux-event-codes.h>
>  
>  / {
>  	model = "reMarkable 2.0";
> @@ -69,6 +70,18 @@ reg_digitizer: regulator-digitizer {
>  		startup-delay-us = <100000>; /* 100 ms */
>  	};
>  
> +	reg_touch: regulator-touch {
> +		compatible = "regulator-fixed";
> +		regulator-name = "VDD_3V3_TOUCH";
> +		regulator-min-microvolt = <3300000>;
> +		regulator-max-microvolt = <3300000>;
> +		pinctrl-names = "default", "sleep";
> +		pinctrl-0 = <&pinctrl_touch_reg>;
> +		pinctrl-1 = <&pinctrl_touch_reg>;

Why do we need a "sleep" state here?

> +		gpio = <&gpio1 11 GPIO_ACTIVE_HIGH>;
> +		enable-active-high;
> +	};
> +
>  	wifi_pwrseq: wifi_pwrseq {
>  		compatible = "mmc-pwrseq-simple";
>  		pinctrl-names = "default";
> @@ -106,6 +119,68 @@ wacom_digitizer: digitizer@9 {
>  	};
>  };
>  
> +&i2c3 {
> +	clock-frequency = <100000>;

This can be set to 400kHz, the driver handle the quirks internal.

Regards,
  Marco

> +	pinctrl-names = "default";
> +	pinctrl-0 = <&pinctrl_i2c3>;
> +	status = "okay";
> +
> +	touchscreen@24 {
> +		compatible = "cypress,tt21000";
> +		reg = <0x24>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_touch>;
> +		interrupt-parent = <&gpio1>;
> +		interrupts = <14 IRQ_TYPE_EDGE_FALLING>;
> +		reset-gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
> +		vdd-supply = <&reg_touch>;
> +		touchscreen-size-x = <880>;
> +		touchscreen-size-y = <1280>;
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		button@0 {
> +			reg = <0>;
> +			linux,keycodes = <KEY_HOMEPAGE>;
> +		};
> +
> +		button@1 {
> +			reg = <1>;
> +			linux,keycodes = <KEY_MENU>;
> +		};
> +
> +		button@2 {
> +			reg = <2>;
> +			linux,keycodes = <KEY_BACK>;
> +		};
> +
> +		button@3 {
> +			reg = <3>;
> +			linux,keycodes = <KEY_SEARCH>;
> +		};
> +
> +		button@4 {
> +			reg = <4>;
> +			linux,keycodes = <KEY_VOLUMEDOWN>;
> +		};
> +
> +		button@5 {
> +			reg = <5>;
> +			linux,keycodes = <KEY_VOLUMEUP>;
> +		};
> +
> +		button@6 {
> +			reg = <6>;
> +			linux,keycodes = <KEY_CAMERA>;
> +		};
> +
> +		button@7 {
> +			reg = <7>;
> +			linux,keycodes = <KEY_POWER>;
> +		};
> +	};
> +};
> +
>  &i2c4 {
>  	clock-frequency = <100000>;
>  	pinctrl-names = "default", "sleep";
> @@ -232,6 +307,15 @@ MX7D_PAD_ENET1_RGMII_TXC__GPIO7_IO11	0x00000014
>  		>;
>  	};
>  
> +	pinctrl_touch: touchgrp {
> +		fsl,pins = <
> +			/* CYTTSP interrupt */
> +			MX7D_PAD_GPIO1_IO14__GPIO1_IO14		0x54
> +			/* CYTTSP reset */
> +			MX7D_PAD_GPIO1_IO13__GPIO1_IO13		0x04
> +		>;
> +	};
> +
>  	pinctrl_i2c1: i2c1grp {
>  		fsl,pins = <
>  			MX7D_PAD_I2C1_SDA__I2C1_SDA		0x4000007f
> @@ -239,6 +323,13 @@ MX7D_PAD_I2C1_SCL__I2C1_SCL		0x4000007f
>  		>;
>  	};
>  
> +	pinctrl_i2c3: i2c3grp {
> +		fsl,pins = <
> +			MX7D_PAD_I2C3_SDA__I2C3_SDA		0x4000007f
> +			MX7D_PAD_I2C3_SCL__I2C3_SCL		0x4000007f
> +		>;
> +	};
> +
>  	pinctrl_i2c4: i2c4grp {
>  		fsl,pins = <
>  			MX7D_PAD_I2C4_SDA__I2C4_SDA		0x4000007f
> @@ -246,6 +337,13 @@ MX7D_PAD_I2C4_SCL__I2C4_SCL		0x4000007f
>  		>;
>  	};
>  
> +	pinctrl_touch_reg: touchreggrp {
> +		fsl,pins = <
> +			/* TOUCH_PWR_EN */
> +			MX7D_PAD_GPIO1_IO11__GPIO1_IO11		0x14
> +		>;
> +	};
> +
>  	pinctrl_uart1: uart1grp {
>  		fsl,pins = <
>  			MX7D_PAD_UART1_TX_DATA__UART1_DCE_TX	0x79
> -- 
> 2.38.1
> 
> 
>
  
Ahmad Fatoum Dec. 20, 2022, 4:50 p.m. UTC | #2
Hello Alistair,
Hello Marco,

On 20.12.22 14:20, Marco Felsch wrote:
> Hi Alistair,                                                                                                                            
> 
> thanks for your patch, please see below.
> 
> On 22-12-20, Alistair Francis wrote:
>> Add support for the cyttsp5 touchscreen controller for the reMarkable 2.
>>
>> Signed-off-by: Alistair Francis <alistair@alistair23.me>
>> ---
>>  arch/arm/boot/dts/imx7d-remarkable2.dts | 98 +++++++++++++++++++++++++
>>  1 file changed, 98 insertions(+)
>>
>> diff --git a/arch/arm/boot/dts/imx7d-remarkable2.dts b/arch/arm/boot/dts/imx7d-remarkable2.dts
>> index 8b2f11e85e05..a138b292ec6a 100644
>> --- a/arch/arm/boot/dts/imx7d-remarkable2.dts
>> +++ b/arch/arm/boot/dts/imx7d-remarkable2.dts
>> @@ -8,6 +8,7 @@
>>  /dts-v1/;
>>  
>>  #include "imx7d.dtsi"
>> +#include <dt-bindings/input/linux-event-codes.h>
>>  
>>  / {
>>  	model = "reMarkable 2.0";
>> @@ -69,6 +70,18 @@ reg_digitizer: regulator-digitizer {
>>  		startup-delay-us = <100000>; /* 100 ms */
>>  	};
>>  
>> +	reg_touch: regulator-touch {
>> +		compatible = "regulator-fixed";
>> +		regulator-name = "VDD_3V3_TOUCH";
>> +		regulator-min-microvolt = <3300000>;
>> +		regulator-max-microvolt = <3300000>;
>> +		pinctrl-names = "default", "sleep";
>> +		pinctrl-0 = <&pinctrl_touch_reg>;
>> +		pinctrl-1 = <&pinctrl_touch_reg>;
> 
> Why do we need a "sleep" state here?
> 
>> +		gpio = <&gpio1 11 GPIO_ACTIVE_HIGH>;
>> +		enable-active-high;
>> +	};
>> +
>>  	wifi_pwrseq: wifi_pwrseq {
>>  		compatible = "mmc-pwrseq-simple";
>>  		pinctrl-names = "default";
>> @@ -106,6 +119,68 @@ wacom_digitizer: digitizer@9 {
>>  	};
>>  };
>>  
>> +&i2c3 {
>> +	clock-frequency = <100000>;
> 
> This can be set to 400kHz, the driver handle the quirks internal.

I would either leave this at 100kHz or increase to the maximum of
384 kHz. DT is supposed to describe the hardware and if 400 kHz
isn't a safe frequency, it should be avoided, even if the Linux
driver handles it gracefully.

Cheers,
Ahmad

> 
> Regards,
>   Marco
> 
>> +	pinctrl-names = "default";
>> +	pinctrl-0 = <&pinctrl_i2c3>;
>> +	status = "okay";
>> +
>> +	touchscreen@24 {
>> +		compatible = "cypress,tt21000";
>> +		reg = <0x24>;
>> +		pinctrl-names = "default";
>> +		pinctrl-0 = <&pinctrl_touch>;
>> +		interrupt-parent = <&gpio1>;
>> +		interrupts = <14 IRQ_TYPE_EDGE_FALLING>;
>> +		reset-gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
>> +		vdd-supply = <&reg_touch>;
>> +		touchscreen-size-x = <880>;
>> +		touchscreen-size-y = <1280>;
>> +		#address-cells = <1>;
>> +		#size-cells = <0>;
>> +
>> +		button@0 {
>> +			reg = <0>;
>> +			linux,keycodes = <KEY_HOMEPAGE>;
>> +		};
>> +
>> +		button@1 {
>> +			reg = <1>;
>> +			linux,keycodes = <KEY_MENU>;
>> +		};
>> +
>> +		button@2 {
>> +			reg = <2>;
>> +			linux,keycodes = <KEY_BACK>;
>> +		};
>> +
>> +		button@3 {
>> +			reg = <3>;
>> +			linux,keycodes = <KEY_SEARCH>;
>> +		};
>> +
>> +		button@4 {
>> +			reg = <4>;
>> +			linux,keycodes = <KEY_VOLUMEDOWN>;
>> +		};
>> +
>> +		button@5 {
>> +			reg = <5>;
>> +			linux,keycodes = <KEY_VOLUMEUP>;
>> +		};
>> +
>> +		button@6 {
>> +			reg = <6>;
>> +			linux,keycodes = <KEY_CAMERA>;
>> +		};
>> +
>> +		button@7 {
>> +			reg = <7>;
>> +			linux,keycodes = <KEY_POWER>;
>> +		};
>> +	};
>> +};
>> +
>>  &i2c4 {
>>  	clock-frequency = <100000>;
>>  	pinctrl-names = "default", "sleep";
>> @@ -232,6 +307,15 @@ MX7D_PAD_ENET1_RGMII_TXC__GPIO7_IO11	0x00000014
>>  		>;
>>  	};
>>  
>> +	pinctrl_touch: touchgrp {
>> +		fsl,pins = <
>> +			/* CYTTSP interrupt */
>> +			MX7D_PAD_GPIO1_IO14__GPIO1_IO14		0x54
>> +			/* CYTTSP reset */
>> +			MX7D_PAD_GPIO1_IO13__GPIO1_IO13		0x04
>> +		>;
>> +	};
>> +
>>  	pinctrl_i2c1: i2c1grp {
>>  		fsl,pins = <
>>  			MX7D_PAD_I2C1_SDA__I2C1_SDA		0x4000007f
>> @@ -239,6 +323,13 @@ MX7D_PAD_I2C1_SCL__I2C1_SCL		0x4000007f
>>  		>;
>>  	};
>>  
>> +	pinctrl_i2c3: i2c3grp {
>> +		fsl,pins = <
>> +			MX7D_PAD_I2C3_SDA__I2C3_SDA		0x4000007f
>> +			MX7D_PAD_I2C3_SCL__I2C3_SCL		0x4000007f
>> +		>;
>> +	};
>> +
>>  	pinctrl_i2c4: i2c4grp {
>>  		fsl,pins = <
>>  			MX7D_PAD_I2C4_SDA__I2C4_SDA		0x4000007f
>> @@ -246,6 +337,13 @@ MX7D_PAD_I2C4_SCL__I2C4_SCL		0x4000007f
>>  		>;
>>  	};
>>  
>> +	pinctrl_touch_reg: touchreggrp {
>> +		fsl,pins = <
>> +			/* TOUCH_PWR_EN */
>> +			MX7D_PAD_GPIO1_IO11__GPIO1_IO11		0x14
>> +		>;
>> +	};
>> +
>>  	pinctrl_uart1: uart1grp {
>>  		fsl,pins = <
>>  			MX7D_PAD_UART1_TX_DATA__UART1_DCE_TX	0x79
>> -- 
>> 2.38.1
>>
>>
>>
> 
>
  
Alistair Francis Jan. 6, 2023, 12:44 p.m. UTC | #3
On Wed, Dec 21, 2022 at 2:51 AM Ahmad Fatoum <a.fatoum@pengutronix.de> wrote:
>
> Hello Alistair,
> Hello Marco,
>
> On 20.12.22 14:20, Marco Felsch wrote:
> > Hi Alistair,
> >
> > thanks for your patch, please see below.
> >
> > On 22-12-20, Alistair Francis wrote:
> >> Add support for the cyttsp5 touchscreen controller for the reMarkable 2.
> >>
> >> Signed-off-by: Alistair Francis <alistair@alistair23.me>
> >> ---
> >>  arch/arm/boot/dts/imx7d-remarkable2.dts | 98 +++++++++++++++++++++++++
> >>  1 file changed, 98 insertions(+)
> >>
> >> diff --git a/arch/arm/boot/dts/imx7d-remarkable2.dts b/arch/arm/boot/dts/imx7d-remarkable2.dts
> >> index 8b2f11e85e05..a138b292ec6a 100644
> >> --- a/arch/arm/boot/dts/imx7d-remarkable2.dts
> >> +++ b/arch/arm/boot/dts/imx7d-remarkable2.dts
> >> @@ -8,6 +8,7 @@
> >>  /dts-v1/;
> >>
> >>  #include "imx7d.dtsi"
> >> +#include <dt-bindings/input/linux-event-codes.h>
> >>
> >>  / {
> >>      model = "reMarkable 2.0";
> >> @@ -69,6 +70,18 @@ reg_digitizer: regulator-digitizer {
> >>              startup-delay-us = <100000>; /* 100 ms */
> >>      };
> >>
> >> +    reg_touch: regulator-touch {
> >> +            compatible = "regulator-fixed";
> >> +            regulator-name = "VDD_3V3_TOUCH";
> >> +            regulator-min-microvolt = <3300000>;
> >> +            regulator-max-microvolt = <3300000>;
> >> +            pinctrl-names = "default", "sleep";
> >> +            pinctrl-0 = <&pinctrl_touch_reg>;
> >> +            pinctrl-1 = <&pinctrl_touch_reg>;
> >
> > Why do we need a "sleep" state here?

Removed

> >
> >> +            gpio = <&gpio1 11 GPIO_ACTIVE_HIGH>;
> >> +            enable-active-high;
> >> +    };
> >> +
> >>      wifi_pwrseq: wifi_pwrseq {
> >>              compatible = "mmc-pwrseq-simple";
> >>              pinctrl-names = "default";
> >> @@ -106,6 +119,68 @@ wacom_digitizer: digitizer@9 {
> >>      };
> >>  };
> >>
> >> +&i2c3 {
> >> +    clock-frequency = <100000>;
> >
> > This can be set to 400kHz, the driver handle the quirks internal.
>
> I would either leave this at 100kHz or increase to the maximum of
> 384 kHz. DT is supposed to describe the hardware and if 400 kHz
> isn't a safe frequency, it should be avoided, even if the Linux
> driver handles it gracefully.

I'm going to leave this at 100kHz then. Let me know if you want me to
bump it to 384kHz instead.

Alistair

>
> Cheers,
> Ahmad
>
> >
> > Regards,
> >   Marco
> >
> >> +    pinctrl-names = "default";
> >> +    pinctrl-0 = <&pinctrl_i2c3>;
> >> +    status = "okay";
> >> +
> >> +    touchscreen@24 {
> >> +            compatible = "cypress,tt21000";
> >> +            reg = <0x24>;
> >> +            pinctrl-names = "default";
> >> +            pinctrl-0 = <&pinctrl_touch>;
> >> +            interrupt-parent = <&gpio1>;
> >> +            interrupts = <14 IRQ_TYPE_EDGE_FALLING>;
> >> +            reset-gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
> >> +            vdd-supply = <&reg_touch>;
> >> +            touchscreen-size-x = <880>;
> >> +            touchscreen-size-y = <1280>;
> >> +            #address-cells = <1>;
> >> +            #size-cells = <0>;
> >> +
> >> +            button@0 {
> >> +                    reg = <0>;
> >> +                    linux,keycodes = <KEY_HOMEPAGE>;
> >> +            };
> >> +
> >> +            button@1 {
> >> +                    reg = <1>;
> >> +                    linux,keycodes = <KEY_MENU>;
> >> +            };
> >> +
> >> +            button@2 {
> >> +                    reg = <2>;
> >> +                    linux,keycodes = <KEY_BACK>;
> >> +            };
> >> +
> >> +            button@3 {
> >> +                    reg = <3>;
> >> +                    linux,keycodes = <KEY_SEARCH>;
> >> +            };
> >> +
> >> +            button@4 {
> >> +                    reg = <4>;
> >> +                    linux,keycodes = <KEY_VOLUMEDOWN>;
> >> +            };
> >> +
> >> +            button@5 {
> >> +                    reg = <5>;
> >> +                    linux,keycodes = <KEY_VOLUMEUP>;
> >> +            };
> >> +
> >> +            button@6 {
> >> +                    reg = <6>;
> >> +                    linux,keycodes = <KEY_CAMERA>;
> >> +            };
> >> +
> >> +            button@7 {
> >> +                    reg = <7>;
> >> +                    linux,keycodes = <KEY_POWER>;
> >> +            };
> >> +    };
> >> +};
> >> +
> >>  &i2c4 {
> >>      clock-frequency = <100000>;
> >>      pinctrl-names = "default", "sleep";
> >> @@ -232,6 +307,15 @@ MX7D_PAD_ENET1_RGMII_TXC__GPIO7_IO11    0x00000014
> >>              >;
> >>      };
> >>
> >> +    pinctrl_touch: touchgrp {
> >> +            fsl,pins = <
> >> +                    /* CYTTSP interrupt */
> >> +                    MX7D_PAD_GPIO1_IO14__GPIO1_IO14         0x54
> >> +                    /* CYTTSP reset */
> >> +                    MX7D_PAD_GPIO1_IO13__GPIO1_IO13         0x04
> >> +            >;
> >> +    };
> >> +
> >>      pinctrl_i2c1: i2c1grp {
> >>              fsl,pins = <
> >>                      MX7D_PAD_I2C1_SDA__I2C1_SDA             0x4000007f
> >> @@ -239,6 +323,13 @@ MX7D_PAD_I2C1_SCL__I2C1_SCL             0x4000007f
> >>              >;
> >>      };
> >>
> >> +    pinctrl_i2c3: i2c3grp {
> >> +            fsl,pins = <
> >> +                    MX7D_PAD_I2C3_SDA__I2C3_SDA             0x4000007f
> >> +                    MX7D_PAD_I2C3_SCL__I2C3_SCL             0x4000007f
> >> +            >;
> >> +    };
> >> +
> >>      pinctrl_i2c4: i2c4grp {
> >>              fsl,pins = <
> >>                      MX7D_PAD_I2C4_SDA__I2C4_SDA             0x4000007f
> >> @@ -246,6 +337,13 @@ MX7D_PAD_I2C4_SCL__I2C4_SCL             0x4000007f
> >>              >;
> >>      };
> >>
> >> +    pinctrl_touch_reg: touchreggrp {
> >> +            fsl,pins = <
> >> +                    /* TOUCH_PWR_EN */
> >> +                    MX7D_PAD_GPIO1_IO11__GPIO1_IO11         0x14
> >> +            >;
> >> +    };
> >> +
> >>      pinctrl_uart1: uart1grp {
> >>              fsl,pins = <
> >>                      MX7D_PAD_UART1_TX_DATA__UART1_DCE_TX    0x79
> >> --
> >> 2.38.1
> >>
> >>
> >>
> >
> >
>
> --
> Pengutronix e.K.                           |                             |
> Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
> 31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
> Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |
>
  

Patch

diff --git a/arch/arm/boot/dts/imx7d-remarkable2.dts b/arch/arm/boot/dts/imx7d-remarkable2.dts
index 8b2f11e85e05..a138b292ec6a 100644
--- a/arch/arm/boot/dts/imx7d-remarkable2.dts
+++ b/arch/arm/boot/dts/imx7d-remarkable2.dts
@@ -8,6 +8,7 @@ 
 /dts-v1/;
 
 #include "imx7d.dtsi"
+#include <dt-bindings/input/linux-event-codes.h>
 
 / {
 	model = "reMarkable 2.0";
@@ -69,6 +70,18 @@  reg_digitizer: regulator-digitizer {
 		startup-delay-us = <100000>; /* 100 ms */
 	};
 
+	reg_touch: regulator-touch {
+		compatible = "regulator-fixed";
+		regulator-name = "VDD_3V3_TOUCH";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		pinctrl-names = "default", "sleep";
+		pinctrl-0 = <&pinctrl_touch_reg>;
+		pinctrl-1 = <&pinctrl_touch_reg>;
+		gpio = <&gpio1 11 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+	};
+
 	wifi_pwrseq: wifi_pwrseq {
 		compatible = "mmc-pwrseq-simple";
 		pinctrl-names = "default";
@@ -106,6 +119,68 @@  wacom_digitizer: digitizer@9 {
 	};
 };
 
+&i2c3 {
+	clock-frequency = <100000>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_i2c3>;
+	status = "okay";
+
+	touchscreen@24 {
+		compatible = "cypress,tt21000";
+		reg = <0x24>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_touch>;
+		interrupt-parent = <&gpio1>;
+		interrupts = <14 IRQ_TYPE_EDGE_FALLING>;
+		reset-gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
+		vdd-supply = <&reg_touch>;
+		touchscreen-size-x = <880>;
+		touchscreen-size-y = <1280>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		button@0 {
+			reg = <0>;
+			linux,keycodes = <KEY_HOMEPAGE>;
+		};
+
+		button@1 {
+			reg = <1>;
+			linux,keycodes = <KEY_MENU>;
+		};
+
+		button@2 {
+			reg = <2>;
+			linux,keycodes = <KEY_BACK>;
+		};
+
+		button@3 {
+			reg = <3>;
+			linux,keycodes = <KEY_SEARCH>;
+		};
+
+		button@4 {
+			reg = <4>;
+			linux,keycodes = <KEY_VOLUMEDOWN>;
+		};
+
+		button@5 {
+			reg = <5>;
+			linux,keycodes = <KEY_VOLUMEUP>;
+		};
+
+		button@6 {
+			reg = <6>;
+			linux,keycodes = <KEY_CAMERA>;
+		};
+
+		button@7 {
+			reg = <7>;
+			linux,keycodes = <KEY_POWER>;
+		};
+	};
+};
+
 &i2c4 {
 	clock-frequency = <100000>;
 	pinctrl-names = "default", "sleep";
@@ -232,6 +307,15 @@  MX7D_PAD_ENET1_RGMII_TXC__GPIO7_IO11	0x00000014
 		>;
 	};
 
+	pinctrl_touch: touchgrp {
+		fsl,pins = <
+			/* CYTTSP interrupt */
+			MX7D_PAD_GPIO1_IO14__GPIO1_IO14		0x54
+			/* CYTTSP reset */
+			MX7D_PAD_GPIO1_IO13__GPIO1_IO13		0x04
+		>;
+	};
+
 	pinctrl_i2c1: i2c1grp {
 		fsl,pins = <
 			MX7D_PAD_I2C1_SDA__I2C1_SDA		0x4000007f
@@ -239,6 +323,13 @@  MX7D_PAD_I2C1_SCL__I2C1_SCL		0x4000007f
 		>;
 	};
 
+	pinctrl_i2c3: i2c3grp {
+		fsl,pins = <
+			MX7D_PAD_I2C3_SDA__I2C3_SDA		0x4000007f
+			MX7D_PAD_I2C3_SCL__I2C3_SCL		0x4000007f
+		>;
+	};
+
 	pinctrl_i2c4: i2c4grp {
 		fsl,pins = <
 			MX7D_PAD_I2C4_SDA__I2C4_SDA		0x4000007f
@@ -246,6 +337,13 @@  MX7D_PAD_I2C4_SCL__I2C4_SCL		0x4000007f
 		>;
 	};
 
+	pinctrl_touch_reg: touchreggrp {
+		fsl,pins = <
+			/* TOUCH_PWR_EN */
+			MX7D_PAD_GPIO1_IO11__GPIO1_IO11		0x14
+		>;
+	};
+
 	pinctrl_uart1: uart1grp {
 		fsl,pins = <
 			MX7D_PAD_UART1_TX_DATA__UART1_DCE_TX	0x79