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
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
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
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
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
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
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
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
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 >
© 2016 - 2026 Red Hat, Inc.