[PATCH 5/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable touchscreen

Cristian Cozzolino via B4 Relay posted 6 patches 1 month ago
There is a newer version of this series
[PATCH 5/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable touchscreen
Posted by Cristian Cozzolino via B4 Relay 1 month ago
From: Cristian Cozzolino <cristian_ci@protonmail.com>

This device uses a Goodix GT5688 touch controller, connected to i2c_3.
Add it to the device tree.

Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com>
---
 .../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 32 ++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts
index 7b2849405462..709ea6fc9fbb 100644
--- a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts
+++ b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts
@@ -94,6 +94,31 @@ &hsusb_phy {
 	status = "okay";
 };
 
+&i2c_3 {
+	status = "okay";
+
+	touchscreen@5d {
+		compatible = "goodix,gt5688";
+		reg = <0x5d>;
+
+		interrupts-extended = <&tlmm 65 IRQ_TYPE_LEVEL_LOW>;
+
+		pinctrl-0 = <&tsp_int_rst_default>;
+		pinctrl-names = "default";
+
+		irq-gpios = <&tlmm 65 GPIO_ACTIVE_HIGH>;
+		reset-gpios = <&tlmm 64 GPIO_ACTIVE_HIGH>;
+
+		VDDIO-supply = <&pm8953_l6>;
+		AVDD28-supply = <&pm8953_l10>;
+
+		touchscreen-size-x = <1080>;
+		touchscreen-size-y = <1920>;
+		touchscreen-inverted-x;
+		touchscreen-inverted-y;
+	};
+};
+
 &ibb {
 	qcom,discharge-resistor-kohms = <32>;
 };
@@ -324,6 +349,13 @@ mdss_sleep: mdss-sleep-state {
 		drive-strength = <2>;
 		bias-pull-down;
 	};
+
+	tsp_int_rst_default: tsp-int-rst-default-state {
+		pins = "gpio64", "gpio65";
+		function = "gpio";
+		drive-strength = <8>;
+		bias-pull-up;
+	};
 };
 
 &usb3 {

-- 
2.52.0
Re: [PATCH 5/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable touchscreen
Posted by Konrad Dybcio 1 month ago
On 3/8/26 4:52 PM, Cristian Cozzolino via B4 Relay wrote:
> From: Cristian Cozzolino <cristian_ci@protonmail.com>
> 
> This device uses a Goodix GT5688 touch controller, connected to i2c_3.
> Add it to the device tree.
> 
> Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com>
> ---
>  .../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 32 ++++++++++++++++++++++
>  1 file changed, 32 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts
> index 7b2849405462..709ea6fc9fbb 100644
> --- a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts
> +++ b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts
> @@ -94,6 +94,31 @@ &hsusb_phy {
>  	status = "okay";
>  };
>  
> +&i2c_3 {
> +	status = "okay";
> +
> +	touchscreen@5d {
> +		compatible = "goodix,gt5688";
> +		reg = <0x5d>;
> +
> +		interrupts-extended = <&tlmm 65 IRQ_TYPE_LEVEL_LOW>;

interrupts *and* irq-gpios sounds wrong.. and I think the driver doesn't
even consume the former. Trying to read through some of that, I think
it's on purpose since the IRQ GPIO is repurposed for setting the I2C addr
(which nota bene doesn't match between the comment in that driver and this
submission - perhaps that's just a SKU difference) during the reset
sequence

i.e., does the touch work any different if you drop the above?
does /proc/interrupts differ?

Konrad
Re: [PATCH 5/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable touchscreen
Posted by Dmitry Baryshkov 4 weeks, 1 day ago
On Tue, Mar 10, 2026 at 02:08:40PM +0100, Konrad Dybcio wrote:
> On 3/8/26 4:52 PM, Cristian Cozzolino via B4 Relay wrote:
> > From: Cristian Cozzolino <cristian_ci@protonmail.com>
> > 
> > This device uses a Goodix GT5688 touch controller, connected to i2c_3.
> > Add it to the device tree.
> > 
> > Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com>
> > ---
> >  .../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 32 ++++++++++++++++++++++
> >  1 file changed, 32 insertions(+)
> > 
> > diff --git a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts
> > index 7b2849405462..709ea6fc9fbb 100644
> > --- a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts
> > +++ b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts
> > @@ -94,6 +94,31 @@ &hsusb_phy {
> >  	status = "okay";
> >  };
> >  
> > +&i2c_3 {
> > +	status = "okay";
> > +
> > +	touchscreen@5d {
> > +		compatible = "goodix,gt5688";
> > +		reg = <0x5d>;
> > +
> > +		interrupts-extended = <&tlmm 65 IRQ_TYPE_LEVEL_LOW>;
> 
> interrupts *and* irq-gpios sounds wrong.. and I think the driver doesn't
> even consume the former. Trying to read through some of that, I think

I think you need both, take a look, there are enough users of
ts->gpiod_int.

> it's on purpose since the IRQ GPIO is repurposed for setting the I2C addr
> (which nota bene doesn't match between the comment in that driver and this
> submission - perhaps that's just a SKU difference) during the reset
> sequence
> 
> i.e., does the touch work any different if you drop the above?
> does /proc/interrupts differ?
> 
> Konrad

-- 
With best wishes
Dmitry
Re: [PATCH 5/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable touchscreen
Posted by Konrad Dybcio 4 weeks, 1 day ago
On 3/10/26 11:49 PM, Dmitry Baryshkov wrote:
> On Tue, Mar 10, 2026 at 02:08:40PM +0100, Konrad Dybcio wrote:
>> On 3/8/26 4:52 PM, Cristian Cozzolino via B4 Relay wrote:
>>> From: Cristian Cozzolino <cristian_ci@protonmail.com>
>>>
>>> This device uses a Goodix GT5688 touch controller, connected to i2c_3.
>>> Add it to the device tree.
>>>
>>> Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com>
>>> ---
>>>  .../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 32 ++++++++++++++++++++++
>>>  1 file changed, 32 insertions(+)
>>>
>>> diff --git a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts
>>> index 7b2849405462..709ea6fc9fbb 100644
>>> --- a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts
>>> +++ b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts
>>> @@ -94,6 +94,31 @@ &hsusb_phy {
>>>  	status = "okay";
>>>  };
>>>  
>>> +&i2c_3 {
>>> +	status = "okay";
>>> +
>>> +	touchscreen@5d {
>>> +		compatible = "goodix,gt5688";
>>> +		reg = <0x5d>;
>>> +
>>> +		interrupts-extended = <&tlmm 65 IRQ_TYPE_LEVEL_LOW>;
>>
>> interrupts *and* irq-gpios sounds wrong.. and I think the driver doesn't
>> even consume the former. Trying to read through some of that, I think
> 
> I think you need both, take a look, there are enough users of
> ts->gpiod_int.

I said irq-gpios was necessary, interrupts is not. The only retrieval
happens through:

if (soc_intel_is_cht() && ts->gpio_count == 2 && ts->gpio_int_idx != -1) {
	irq = acpi_dev_gpio_irq_get(ACPI_COMPANION(dev), 0);
	if (irq > 0 && irq != ts->client->irq) {
		dev_warn(dev, "Overriding IRQ %d -> %d\n", ts->client->irq, irq);
		ts->client->irq = irq;
	}
}

Konrad
Re: [PATCH 5/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable touchscreen
Posted by Dmitry Baryshkov 4 weeks, 1 day ago
On Wed, Mar 11, 2026 at 01:47:48PM +0100, Konrad Dybcio wrote:
> On 3/10/26 11:49 PM, Dmitry Baryshkov wrote:
> > On Tue, Mar 10, 2026 at 02:08:40PM +0100, Konrad Dybcio wrote:
> >> On 3/8/26 4:52 PM, Cristian Cozzolino via B4 Relay wrote:
> >>> From: Cristian Cozzolino <cristian_ci@protonmail.com>
> >>>
> >>> This device uses a Goodix GT5688 touch controller, connected to i2c_3.
> >>> Add it to the device tree.
> >>>
> >>> Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com>
> >>> ---
> >>>  .../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 32 ++++++++++++++++++++++
> >>>  1 file changed, 32 insertions(+)
> >>>
> >>> diff --git a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts
> >>> index 7b2849405462..709ea6fc9fbb 100644
> >>> --- a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts
> >>> +++ b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts
> >>> @@ -94,6 +94,31 @@ &hsusb_phy {
> >>>  	status = "okay";
> >>>  };
> >>>  
> >>> +&i2c_3 {
> >>> +	status = "okay";
> >>> +
> >>> +	touchscreen@5d {
> >>> +		compatible = "goodix,gt5688";
> >>> +		reg = <0x5d>;
> >>> +
> >>> +		interrupts-extended = <&tlmm 65 IRQ_TYPE_LEVEL_LOW>;
> >>
> >> interrupts *and* irq-gpios sounds wrong.. and I think the driver doesn't
> >> even consume the former. Trying to read through some of that, I think
> > 
> > I think you need both, take a look, there are enough users of
> > ts->gpiod_int.
> 
> I said irq-gpios was necessary, interrupts is not. The only retrieval
> happens through:
> 
> if (soc_intel_is_cht() && ts->gpio_count == 2 && ts->gpio_int_idx != -1) {
> 	irq = acpi_dev_gpio_irq_get(ACPI_COMPANION(dev), 0);
> 	if (irq > 0 && irq != ts->client->irq) {
> 		dev_warn(dev, "Overriding IRQ %d -> %d\n", ts->client->irq, irq);
> 		ts->client->irq = irq;
> 	}
> }

static int goodix_request_irq(struct goodix_ts_data *ts)
{
        if (!ts->client->irq)
                return 0;

        return devm_request_threaded_irq(&ts->client->dev, ts->client->irq,
                                         NULL, goodix_ts_irq_handler,
                                         ts->irq_flags, ts->client->name, ts);
}

I thought that i2c_client->irq is handled by the core.

> 
> Konrad

-- 
With best wishes
Dmitry
Re: [PATCH 5/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable touchscreen
Posted by Konrad Dybcio 4 weeks, 1 day ago
On 3/11/26 2:16 PM, Dmitry Baryshkov wrote:
> On Wed, Mar 11, 2026 at 01:47:48PM +0100, Konrad Dybcio wrote:
>> On 3/10/26 11:49 PM, Dmitry Baryshkov wrote:
>>> On Tue, Mar 10, 2026 at 02:08:40PM +0100, Konrad Dybcio wrote:
>>>> On 3/8/26 4:52 PM, Cristian Cozzolino via B4 Relay wrote:
>>>>> From: Cristian Cozzolino <cristian_ci@protonmail.com>
>>>>>
>>>>> This device uses a Goodix GT5688 touch controller, connected to i2c_3.
>>>>> Add it to the device tree.
>>>>>
>>>>> Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com>
>>>>> ---
>>>>>  .../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 32 ++++++++++++++++++++++
>>>>>  1 file changed, 32 insertions(+)
>>>>>
>>>>> diff --git a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts
>>>>> index 7b2849405462..709ea6fc9fbb 100644
>>>>> --- a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts
>>>>> +++ b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts
>>>>> @@ -94,6 +94,31 @@ &hsusb_phy {
>>>>>  	status = "okay";
>>>>>  };
>>>>>  
>>>>> +&i2c_3 {
>>>>> +	status = "okay";
>>>>> +
>>>>> +	touchscreen@5d {
>>>>> +		compatible = "goodix,gt5688";
>>>>> +		reg = <0x5d>;
>>>>> +
>>>>> +		interrupts-extended = <&tlmm 65 IRQ_TYPE_LEVEL_LOW>;
>>>>
>>>> interrupts *and* irq-gpios sounds wrong.. and I think the driver doesn't
>>>> even consume the former. Trying to read through some of that, I think
>>>
>>> I think you need both, take a look, there are enough users of
>>> ts->gpiod_int.
>>
>> I said irq-gpios was necessary, interrupts is not. The only retrieval
>> happens through:
>>
>> if (soc_intel_is_cht() && ts->gpio_count == 2 && ts->gpio_int_idx != -1) {
>> 	irq = acpi_dev_gpio_irq_get(ACPI_COMPANION(dev), 0);
>> 	if (irq > 0 && irq != ts->client->irq) {
>> 		dev_warn(dev, "Overriding IRQ %d -> %d\n", ts->client->irq, irq);
>> 		ts->client->irq = irq;
>> 	}
>> }
> 
> static int goodix_request_irq(struct goodix_ts_data *ts)
> {
>         if (!ts->client->irq)
>                 return 0;
> 
>         return devm_request_threaded_irq(&ts->client->dev, ts->client->irq,
>                                          NULL, goodix_ts_irq_handler,
>                                          ts->irq_flags, ts->client->name, ts);
> }
> 
> I thought that i2c_client->irq is handled by the core.

Ohhhh that explains things

Cristian, please ignore my request to remove it then

Konrad
Re: [PATCH 5/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable touchscreen
Posted by cristian_ci 4 weeks, 1 day ago



Cristian

Sent with Proton Mail secure email.

On Tuesday, March 10th, 2026 at 14:08, Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> wrote:

> On 3/8/26 4:52 PM, Cristian Cozzolino via B4 Relay wrote:
> > From: Cristian Cozzolino <cristian_ci@protonmail.com>
> >
> > This device uses a Goodix GT5688 touch controller, connected to i2c_3.
> > Add it to the device tree.
> >
> > Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com>
> > ---
> >  .../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 32 ++++++++++++++++++++++
> >  1 file changed, 32 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts
> > index 7b2849405462..709ea6fc9fbb 100644
> > --- a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts
> > +++ b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts
> > @@ -94,6 +94,31 @@ &hsusb_phy {
> >  	status = "okay";
> >  };
> >
> > +&i2c_3 {
> > +	status = "okay";
> > +
> > +	touchscreen@5d {
> > +		compatible = "goodix,gt5688";
> > +		reg = <0x5d>;
> > +
> > +		interrupts-extended = <&tlmm 65 IRQ_TYPE_LEVEL_LOW>;
> 
> interrupts *and* irq-gpios sounds wrong.. and I think the driver doesn't
> even consume the former. Trying to read through some of that, I think
> it's on purpose since the IRQ GPIO is repurposed for setting the I2C addr
> (which nota bene doesn't match between the comment in that driver and this
> submission - perhaps that's just a SKU difference) during the reset
> sequence
> 
> i.e., does the touch work any different if you drop the above?

Apparently, not. That works as expected.

> does /proc/interrupts differ?

When interrupts-extended is defined:

...
 50:        318          0          0          0          0          0          0          0  msmgpio  65 Edge      gt5688
...
 54:       3141          0          0          0          0          0          0          0 GIC-0  65 Level     gpu-irq
...

Instead, when interrupts-extended is removed/commented out, I see just:

...
 53:       2404          0          0          0          0          0          0          0 GIC-0  65 Level     gpu-irq
...

> Konrad
> 

Regards
Re: [PATCH 5/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable touchscreen
Posted by Konrad Dybcio 4 weeks, 1 day ago
On 3/10/26 5:20 PM, cristian_ci wrote:
> 
> 
> 
> 
> Cristian
> 
> Sent with Proton Mail secure email.
> 
> On Tuesday, March 10th, 2026 at 14:08, Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> wrote:
> 
>> On 3/8/26 4:52 PM, Cristian Cozzolino via B4 Relay wrote:
>>> From: Cristian Cozzolino <cristian_ci@protonmail.com>
>>>
>>> This device uses a Goodix GT5688 touch controller, connected to i2c_3.
>>> Add it to the device tree.
>>>
>>> Signed-off-by: Cristian Cozzolino <cristian_ci@protonmail.com>
>>> ---
>>>  .../arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts | 32 ++++++++++++++++++++++
>>>  1 file changed, 32 insertions(+)
>>>
>>> diff --git a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts
>>> index 7b2849405462..709ea6fc9fbb 100644
>>> --- a/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts
>>> +++ b/arch/arm64/boot/dts/qcom/msm8953-flipkart-rimob.dts
>>> @@ -94,6 +94,31 @@ &hsusb_phy {
>>>  	status = "okay";
>>>  };
>>>
>>> +&i2c_3 {
>>> +	status = "okay";
>>> +
>>> +	touchscreen@5d {
>>> +		compatible = "goodix,gt5688";
>>> +		reg = <0x5d>;
>>> +
>>> +		interrupts-extended = <&tlmm 65 IRQ_TYPE_LEVEL_LOW>;
>>
>> interrupts *and* irq-gpios sounds wrong.. and I think the driver doesn't
>> even consume the former. Trying to read through some of that, I think
>> it's on purpose since the IRQ GPIO is repurposed for setting the I2C addr
>> (which nota bene doesn't match between the comment in that driver and this
>> submission - perhaps that's just a SKU difference) during the reset
>> sequence
>>
>> i.e., does the touch work any different if you drop the above?
> 
> Apparently, not. That works as expected.
> 
>> does /proc/interrupts differ?
> 
> When interrupts-extended is defined:
> 
> ...
>  50:        318          0          0          0          0          0          0          0  msmgpio  65 Edge      gt5688
> ...
>  54:       3141          0          0          0          0          0          0          0 GIC-0  65 Level     gpu-irq
> ...
> 
> Instead, when interrupts-extended is removed/commented out, I see just:
> 
> ...
>  53:       2404          0          0          0          0          0          0          0 GIC-0  65 Level     gpu-irq
> ...

Hm, that's odd - I don't see the irq handler being registered anywhere,
or anything requesting that name. Do you have out-of-tree changes to that
driver?

Konrad
Re: [PATCH 5/6] arm64: dts: qcom: msm8953-flipkart-rimob: Enable touchscreen
Posted by cristian_ci 4 weeks ago
On Wednesday, March 11th, 2026 at 14:03, Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> wrote:
> >
> >> does /proc/interrupts differ?
> >
> > When interrupts-extended is defined:
> >
> > ...
> >  50:        318          0          0          0          0          0          0          0  msmgpio  65 Edge      gt5688
> > ...
> >  54:       3141          0          0          0          0          0          0          0 GIC-0  65 Level     gpu-irq
> > ...
> >
> > Instead, when interrupts-extended is removed/commented out, I see just:
> >
> > ...
> >  53:       2404          0          0          0          0          0          0          0 GIC-0  65 Level     gpu-irq
> > ...
> 
> Hm, that's odd - I don't see the irq handler being registered anywhere,
> or anything requesting that name. Do you have out-of-tree changes to that
> driver?

Tested on linux-next without changes to goodix.c.

> Konrad
>