* [PATCH] Input: goodix - fix inverted Y coordinate on SUPI S10 @ 2025-12-30 22:16 Yajat Kumar 2026-01-11 21:30 ` Hans de Goede 0 siblings, 1 reply; 6+ messages in thread From: Yajat Kumar @ 2025-12-30 22:16 UTC (permalink / raw) To: Hans de Goede, Dmitry Torokhov, open list:GOODIX TOUCHSCREEN, open list Cc: Yajat Kumar The touchscreen on the SUPI S10 reports inverted Y coordinates, causing touch input to be mirrored vertically relative to the display. Add a DMI-based quirk to invert the Y coordinate on this device so that touch input matches the display orientation. Tested on SUPI S10 tablet with Goodix touchscreen controller. Signed-off-by: Yajat Kumar <yajatapps3@gmail.com> --- drivers/input/touchscreen/goodix.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c index f8798d11ec03..d675a85a9312 100644 --- a/drivers/input/touchscreen/goodix.c +++ b/drivers/input/touchscreen/goodix.c @@ -160,6 +160,22 @@ static const struct dmi_system_id inverted_x_screen[] = { {} }; +/* + * Those tablets have their y coordinate inverted + */ +static const struct dmi_system_id inverted_y_screen[] = { +#if defined(CONFIG_DMI) && defined(CONFIG_X86) + { + .ident = "SUPI S10", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "SUPI"), + DMI_MATCH(DMI_PRODUCT_NAME, "S10") + }, + }, +#endif + {} +}; + /** * goodix_i2c_read - read data from a register of the i2c slave device. * @@ -1212,6 +1228,12 @@ static int goodix_configure_dev(struct goodix_ts_data *ts) "Applying 'inverted x screen' quirk\n"); } + if (dmi_check_system(inverted_y_screen)) { + ts->prop.invert_y = true; + dev_dbg(&ts->client->dev, + "Applying 'inverted y screen' quirk\n"); + } + error = input_mt_init_slots(ts->input_dev, ts->max_touch_num, INPUT_MT_DIRECT | INPUT_MT_DROP_UNUSED); if (error) { -- 2.51.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] Input: goodix - fix inverted Y coordinate on SUPI S10 2025-12-30 22:16 [PATCH] Input: goodix - fix inverted Y coordinate on SUPI S10 Yajat Kumar @ 2026-01-11 21:30 ` Hans de Goede 2026-01-18 23:41 ` YAJAT APPS 2026-01-29 18:40 ` Hans de Goede 0 siblings, 2 replies; 6+ messages in thread From: Hans de Goede @ 2026-01-11 21:30 UTC (permalink / raw) To: Yajat Kumar, Dmitry Torokhov, open list:GOODIX TOUCHSCREEN, open list [-- Attachment #1: Type: text/plain, Size: 2373 bytes --] Hi Yajat, On 30-Dec-25 23:16, Yajat Kumar wrote: > The touchscreen on the SUPI S10 reports inverted Y coordinates, causing > touch input to be mirrored vertically relative to the display. > > Add a DMI-based quirk to invert the Y coordinate on this device so that > touch input matches the display orientation. > > Tested on SUPI S10 tablet with Goodix touchscreen controller. > > Signed-off-by: Yajat Kumar <yajatapps3@gmail.com> Thank you for your patch. This kind of quirks really belong in drivers/platform/x86/touchscreen_dmi.c instead of in individual touchscreen drivers. The inverted_x_screen[] DMI quirk is a left-over from before we moved these quirks to touchscreen_dmi.c and unfortunately we cannot move this because we've not been able to find someone to test this. I've attached a patch which should fix the issue using touchscreen_dmi.c . Note you may need to change the GDIX1001 in the patch to GDIX1002, see "ls /sys/bus/i2c/devices" to see which ACPI HID your touchscreen is using. Can you please test the attached patch ? Regards, Hans > --- > drivers/input/touchscreen/goodix.c | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c > index f8798d11ec03..d675a85a9312 100644 > --- a/drivers/input/touchscreen/goodix.c > +++ b/drivers/input/touchscreen/goodix.c > @@ -160,6 +160,22 @@ static const struct dmi_system_id inverted_x_screen[] = { > {} > }; > > +/* > + * Those tablets have their y coordinate inverted > + */ > +static const struct dmi_system_id inverted_y_screen[] = { > +#if defined(CONFIG_DMI) && defined(CONFIG_X86) > + { > + .ident = "SUPI S10", > + .matches = { > + DMI_MATCH(DMI_SYS_VENDOR, "SUPI"), > + DMI_MATCH(DMI_PRODUCT_NAME, "S10") > + }, > + }, > +#endif > + {} > +}; > + > /** > * goodix_i2c_read - read data from a register of the i2c slave device. > * > @@ -1212,6 +1228,12 @@ static int goodix_configure_dev(struct goodix_ts_data *ts) > "Applying 'inverted x screen' quirk\n"); > } > > + if (dmi_check_system(inverted_y_screen)) { > + ts->prop.invert_y = true; > + dev_dbg(&ts->client->dev, > + "Applying 'inverted y screen' quirk\n"); > + } > + > error = input_mt_init_slots(ts->input_dev, ts->max_touch_num, > INPUT_MT_DIRECT | INPUT_MT_DROP_UNUSED); > if (error) { [-- Attachment #2: 0001-platform-x86-touchscreen_dmi-Add-quirk-for-y-inverte.patch --] [-- Type: text/x-patch, Size: 2074 bytes --] From 5df9d895db2ff3b3ec58a6b0c9c3a09d3c852b29 Mon Sep 17 00:00:00 2001 From: Hans de Goede <johannes.goede@oss.qualcomm.com> Date: Sun, 11 Jan 2026 22:25:58 +0100 Subject: [PATCH] platform/x86: touchscreen_dmi: Add quirk for y-inverted Goodix touchscreen on SUPI S10 The touchscreen on the SUPI S10 tablet reports inverted Y coordinates, causing touch input to be mirrored vertically relative to the display. Add a quirk to set the "touchscreen-inverted-y" boolean device-property on the touchscreen device, so that the goodix_ts driver will fixup the coordinates. Reported-by: Yajat Kumar <yajatapps3@gmail.com> Closes: https://lore.kernel.org/linux-input/20251230221639.582406-1-yajatapps3@gmail.com/ Signed-off-by: Hans de Goede <johannes.goede@oss.qualcomm.com> --- drivers/platform/x86/touchscreen_dmi.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/drivers/platform/x86/touchscreen_dmi.c b/drivers/platform/x86/touchscreen_dmi.c index bdc19cd8d3ed..d83c387821ea 100644 --- a/drivers/platform/x86/touchscreen_dmi.c +++ b/drivers/platform/x86/touchscreen_dmi.c @@ -410,6 +410,16 @@ static const struct ts_dmi_data gdix1002_upside_down_data = { .properties = gdix1001_upside_down_props, }; +static const struct property_entry gdix1001_y_inverted_props[] = { + PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), + { } +}; + +static const struct ts_dmi_data gdix1001_y_inverted_data = { + .acpi_name = "GDIX1001", + .properties = gdix1001_y_inverted_props, +}; + static const struct property_entry gp_electronic_t701_props[] = { PROPERTY_ENTRY_U32("touchscreen-size-x", 960), PROPERTY_ENTRY_U32("touchscreen-size-y", 640), @@ -1658,6 +1668,14 @@ const struct dmi_system_id touchscreen_dmi_table[] = { DMI_MATCH(DMI_PRODUCT_SKU, "PN20170413488"), }, }, + { + /* SUPI S10 */ + .driver_data = (void *)&gdix1001_y_inverted_data, + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "SUPI"), + DMI_MATCH(DMI_PRODUCT_NAME, "S10"), + }, + }, { /* Techbite Arc 11.6 */ .driver_data = (void *)&techbite_arc_11_6_data, -- 2.52.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] Input: goodix - fix inverted Y coordinate on SUPI S10 2026-01-11 21:30 ` Hans de Goede @ 2026-01-18 23:41 ` YAJAT APPS 2026-01-29 18:40 ` Hans de Goede 1 sibling, 0 replies; 6+ messages in thread From: YAJAT APPS @ 2026-01-18 23:41 UTC (permalink / raw) To: Hans de Goede; +Cc: Dmitry Torokhov, open list:GOODIX TOUCHSCREEN, open list Subject: Re: [PATCH] touchscreen-dmi quirk for SUPI S10 Hi Hans, I’ve tested the attached patch on the SUPI S10. The touchscreen uses ACPI HID GDIX1001, so no change is needed there. With the patch applied, the Y axis is no longer inverted and touch input now matches the display orientation correctly. You can add: Tested-by: Yajat Kumar <yajatapps3@gmail.com> Thanks for the quick fix and explanation. Regards, Yajat Kumar On Sun, Jan 11, 2026 at 4:30 PM Hans de Goede <hansg@kernel.org> wrote: > > Hi Yajat, > > On 30-Dec-25 23:16, Yajat Kumar wrote: > > The touchscreen on the SUPI S10 reports inverted Y coordinates, causing > > touch input to be mirrored vertically relative to the display. > > > > Add a DMI-based quirk to invert the Y coordinate on this device so that > > touch input matches the display orientation. > > > > Tested on SUPI S10 tablet with Goodix touchscreen controller. > > > > Signed-off-by: Yajat Kumar <yajatapps3@gmail.com> > > Thank you for your patch. This kind of quirks really belong > in drivers/platform/x86/touchscreen_dmi.c instead of in individual > touchscreen drivers. > > The inverted_x_screen[] DMI quirk is a left-over from before we > moved these quirks to touchscreen_dmi.c and unfortunately we cannot > move this because we've not been able to find someone to test this. > > I've attached a patch which should fix the issue using > touchscreen_dmi.c . Note you may need to change the GDIX1001 in > the patch to GDIX1002, see "ls /sys/bus/i2c/devices" to see which > ACPI HID your touchscreen is using. > > Can you please test the attached patch ? > > Regards, > > Hans > > > > > --- > > drivers/input/touchscreen/goodix.c | 22 ++++++++++++++++++++++ > > 1 file changed, 22 insertions(+) > > > > diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c > > index f8798d11ec03..d675a85a9312 100644 > > --- a/drivers/input/touchscreen/goodix.c > > +++ b/drivers/input/touchscreen/goodix.c > > @@ -160,6 +160,22 @@ static const struct dmi_system_id inverted_x_screen[] = { > > {} > > }; > > > > +/* > > + * Those tablets have their y coordinate inverted > > + */ > > +static const struct dmi_system_id inverted_y_screen[] = { > > +#if defined(CONFIG_DMI) && defined(CONFIG_X86) > > + { > > + .ident = "SUPI S10", > > + .matches = { > > + DMI_MATCH(DMI_SYS_VENDOR, "SUPI"), > > + DMI_MATCH(DMI_PRODUCT_NAME, "S10") > > + }, > > + }, > > +#endif > > + {} > > +}; > > + > > /** > > * goodix_i2c_read - read data from a register of the i2c slave device. > > * > > @@ -1212,6 +1228,12 @@ static int goodix_configure_dev(struct goodix_ts_data *ts) > > "Applying 'inverted x screen' quirk\n"); > > } > > > > + if (dmi_check_system(inverted_y_screen)) { > > + ts->prop.invert_y = true; > > + dev_dbg(&ts->client->dev, > > + "Applying 'inverted y screen' quirk\n"); > > + } > > + > > error = input_mt_init_slots(ts->input_dev, ts->max_touch_num, > > INPUT_MT_DIRECT | INPUT_MT_DROP_UNUSED); > > if (error) { ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Input: goodix - fix inverted Y coordinate on SUPI S10 2026-01-11 21:30 ` Hans de Goede 2026-01-18 23:41 ` YAJAT APPS @ 2026-01-29 18:40 ` Hans de Goede 2026-02-17 5:07 ` [PATCH] touchscreen-dmi quirk for " Yajat Kumar 1 sibling, 1 reply; 6+ messages in thread From: Hans de Goede @ 2026-01-29 18:40 UTC (permalink / raw) To: Yajat Kumar, Dmitry Torokhov, open list:GOODIX TOUCHSCREEN, open list [-- Attachment #1: Type: text/plain, Size: 2680 bytes --] Hi Yajat, On 11-Jan-26 22:30, Hans de Goede wrote: > Hi Yajat, > > On 30-Dec-25 23:16, Yajat Kumar wrote: >> The touchscreen on the SUPI S10 reports inverted Y coordinates, causing >> touch input to be mirrored vertically relative to the display. >> >> Add a DMI-based quirk to invert the Y coordinate on this device so that >> touch input matches the display orientation. >> >> Tested on SUPI S10 tablet with Goodix touchscreen controller. >> >> Signed-off-by: Yajat Kumar <yajatapps3@gmail.com> > > Thank you for your patch. This kind of quirks really belong > in drivers/platform/x86/touchscreen_dmi.c instead of in individual > touchscreen drivers. > > The inverted_x_screen[] DMI quirk is a left-over from before we > moved these quirks to touchscreen_dmi.c and unfortunately we cannot > move this because we've not been able to find someone to test this. > > I've attached a patch which should fix the issue using > touchscreen_dmi.c . Note you may need to change the GDIX1001 in > the patch to GDIX1002, see "ls /sys/bus/i2c/devices" to see which > ACPI HID your touchscreen is using. > > Can you please test the attached patch ? Can you please confirm if the attached patch works, or at a minimum check if the touchscreen is listed as i2c-GDIX1001:* or i2c-GDIX1002:* under /sys/bus/i2c/devices ? Regards, Hans >> --- >> drivers/input/touchscreen/goodix.c | 22 ++++++++++++++++++++++ >> 1 file changed, 22 insertions(+) >> >> diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c >> index f8798d11ec03..d675a85a9312 100644 >> --- a/drivers/input/touchscreen/goodix.c >> +++ b/drivers/input/touchscreen/goodix.c >> @@ -160,6 +160,22 @@ static const struct dmi_system_id inverted_x_screen[] = { >> {} >> }; >> >> +/* >> + * Those tablets have their y coordinate inverted >> + */ >> +static const struct dmi_system_id inverted_y_screen[] = { >> +#if defined(CONFIG_DMI) && defined(CONFIG_X86) >> + { >> + .ident = "SUPI S10", >> + .matches = { >> + DMI_MATCH(DMI_SYS_VENDOR, "SUPI"), >> + DMI_MATCH(DMI_PRODUCT_NAME, "S10") >> + }, >> + }, >> +#endif >> + {} >> +}; >> + >> /** >> * goodix_i2c_read - read data from a register of the i2c slave device. >> * >> @@ -1212,6 +1228,12 @@ static int goodix_configure_dev(struct goodix_ts_data *ts) >> "Applying 'inverted x screen' quirk\n"); >> } >> >> + if (dmi_check_system(inverted_y_screen)) { >> + ts->prop.invert_y = true; >> + dev_dbg(&ts->client->dev, >> + "Applying 'inverted y screen' quirk\n"); >> + } >> + >> error = input_mt_init_slots(ts->input_dev, ts->max_touch_num, >> INPUT_MT_DIRECT | INPUT_MT_DROP_UNUSED); >> if (error) { [-- Attachment #2: 0001-platform-x86-touchscreen_dmi-Add-quirk-for-y-inverte.patch --] [-- Type: text/x-patch, Size: 2074 bytes --] From 43aae0a5451031943836516ff541c9ab1232e6b9 Mon Sep 17 00:00:00 2001 From: Hans de Goede <johannes.goede@oss.qualcomm.com> Date: Sun, 11 Jan 2026 22:25:58 +0100 Subject: [PATCH] platform/x86: touchscreen_dmi: Add quirk for y-inverted Goodix touchscreen on SUPI S10 The touchscreen on the SUPI S10 tablet reports inverted Y coordinates, causing touch input to be mirrored vertically relative to the display. Add a quirk to set the "touchscreen-inverted-y" boolean device-property on the touchscreen device, so that the goodix_ts driver will fixup the coordinates. Reported-by: Yajat Kumar <yajatapps3@gmail.com> Closes: https://lore.kernel.org/linux-input/20251230221639.582406-1-yajatapps3@gmail.com/ Signed-off-by: Hans de Goede <johannes.goede@oss.qualcomm.com> --- drivers/platform/x86/touchscreen_dmi.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/drivers/platform/x86/touchscreen_dmi.c b/drivers/platform/x86/touchscreen_dmi.c index bdc19cd8d3ed..d83c387821ea 100644 --- a/drivers/platform/x86/touchscreen_dmi.c +++ b/drivers/platform/x86/touchscreen_dmi.c @@ -410,6 +410,16 @@ static const struct ts_dmi_data gdix1002_upside_down_data = { .properties = gdix1001_upside_down_props, }; +static const struct property_entry gdix1001_y_inverted_props[] = { + PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), + { } +}; + +static const struct ts_dmi_data gdix1001_y_inverted_data = { + .acpi_name = "GDIX1001", + .properties = gdix1001_y_inverted_props, +}; + static const struct property_entry gp_electronic_t701_props[] = { PROPERTY_ENTRY_U32("touchscreen-size-x", 960), PROPERTY_ENTRY_U32("touchscreen-size-y", 640), @@ -1658,6 +1668,14 @@ const struct dmi_system_id touchscreen_dmi_table[] = { DMI_MATCH(DMI_PRODUCT_SKU, "PN20170413488"), }, }, + { + /* SUPI S10 */ + .driver_data = (void *)&gdix1001_y_inverted_data, + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "SUPI"), + DMI_MATCH(DMI_PRODUCT_NAME, "S10"), + }, + }, { /* Techbite Arc 11.6 */ .driver_data = (void *)&techbite_arc_11_6_data, -- 2.52.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] touchscreen-dmi quirk for SUPI S10 2026-01-29 18:40 ` Hans de Goede @ 2026-02-17 5:07 ` Yajat Kumar 2026-02-17 13:24 ` Hans de Goede 0 siblings, 1 reply; 6+ messages in thread From: Yajat Kumar @ 2026-02-17 5:07 UTC (permalink / raw) To: hansg, dmitry.torokhov, linux-input, linux-kernel; +Cc: Yajat Kumar Hi Hans, Sorry for the threading issue — Gmail broke my previous reply. Reposting confirmation below. I’ve tested the attached patch on the SUPI S10. The touchscreen uses ACPI HID GDIX1001, so no change is needed there. With the patch applied, the Y axis is no longer inverted and touch input now matches the display orientation correctly. You can add: Tested-by: Yajat Kumar <yajatapps3@gmail.com> Thanks for the quick fix and explanation. Regards, Yajat Kumar ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] touchscreen-dmi quirk for SUPI S10 2026-02-17 5:07 ` [PATCH] touchscreen-dmi quirk for " Yajat Kumar @ 2026-02-17 13:24 ` Hans de Goede 0 siblings, 0 replies; 6+ messages in thread From: Hans de Goede @ 2026-02-17 13:24 UTC (permalink / raw) To: Yajat Kumar, dmitry.torokhov, linux-input, linux-kernel Hi, On 17-Feb-26 06:07, Yajat Kumar wrote: > Hi Hans, > > Sorry for the threading issue — Gmail broke my previous reply. Reposting confirmation below. > > I’ve tested the attached patch on the SUPI S10. > > The touchscreen uses ACPI HID GDIX1001, so no change is needed there. > With the patch applied, the Y axis is no longer inverted and touch > input now matches the display orientation correctly. > You can add: > > Tested-by: Yajat Kumar <yajatapps3@gmail.com> > > Thanks for the quick fix and explanation. Thank you for testing. Now that its been confirmed this works I've posted the patch upstream: https://lore.kernel.org/platform-driver-x86/20260217132346.34535-1-johannes.goede@oss.qualcomm.com/ Regards, Hans ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-02-17 13:25 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-12-30 22:16 [PATCH] Input: goodix - fix inverted Y coordinate on SUPI S10 Yajat Kumar 2026-01-11 21:30 ` Hans de Goede 2026-01-18 23:41 ` YAJAT APPS 2026-01-29 18:40 ` Hans de Goede 2026-02-17 5:07 ` [PATCH] touchscreen-dmi quirk for " Yajat Kumar 2026-02-17 13:24 ` Hans de Goede
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox