> On 30 Aug 2018, at 17:56, Sergei A. Trusov <sergei.a.trusov@xxxxx> wrote: > > 30.08.2018 23:03, Bastien Nocera wrote: >>> On Thu, 2018-08-30 at 22:46 +1000, Sergei A. Trusov wrote: >>> The touchscreen on the Cube I15-TC don't match the default display, >>> with 0,0 touches being reported when touching at the upper left of >>> the screen. >> >> But 0,0 is what's supposed to be at the top-left. Did you mean bottom- >> left? > > Oh, my bad. To be exact, we have started with this solution: > > xinput set-prop "pointer:Goodix Capacitive TouchScreen" "Evdev Axis Inversion" 1 0 > > then found an existing quirk for 180 degrees rotated screen and adapted it > for only x coordinate inverted. > > So it should be top-right, correct? Hmm, yes :) >> Also a couple of nits. > > Thank you. I must be precise. > >>> >>> Add a quirk to invert the x coordinate. >>> >>> Reported-and-tested-by: Arkadiy <arkan49@xxxxxxxxx> >>> Cc: Hans de Goede <hdegoede@xxxxxxxxxx> >>> Signed-off-by: Sergei A. Trusov <sergei.a.trusov@xxxxx> >>> --- >>> drivers/input/touchscreen/goodix.c | 24 ++++++++++++++++++++++++ >>> 1 file changed, 24 insertions(+) >>> >>> diff --git a/drivers/input/touchscreen/goodix.c >>> b/drivers/input/touchscreen/goodix.c >>> index f2d9c2c41885..00b6eb09cee3 100644 >>> --- a/drivers/input/touchscreen/goodix.c >>> +++ b/drivers/input/touchscreen/goodix.c >>> @@ -145,6 +145,24 @@ static const struct dmi_system_id >>> rotated_screen[] = { >>> {} >>> }; >>> >>> + >> >> Extra linefeed here. >> >>> +/* >>> + * Those tablets have their x coordinate inverted >>> + */ >>> +static const struct dmi_system_id inverted_x_screen[] = { >>> +#if defined(CONFIG_DMI) && defined(CONFIG_X86) >>> + { >>> + .ident = "Cube I15-TC", >>> + .matches = { >>> + DMI_MATCH(DMI_SYS_VENDOR, "Cube"), >>> + DMI_MATCH(DMI_PRODUCT_NAME, "I15-TC") >>> + }, >>> + }, >>> +#endif >>> + {} >>> +}; >>> + >>> + >> >> And here. >> >>> /** >>> * goodix_i2c_read - read data from a register of the i2c slave >>> device. >>> * >>> @@ -709,6 +727,12 @@ static int goodix_configure_dev(struct >>> goodix_ts_data *ts) >>> "Applying '180 degrees rotated screen' >>> quirk\n"); >>> } >>> >>> + if (dmi_check_system(inverted_x_screen)) { >>> + ts->prop.invert_x = true; >>> + dev_dbg(&ts->client->dev, >>> + "Applying 'inverted x screen' quirk\n"); >>> + } >>> + >>> error = input_mt_init_slots(ts->input_dev, ts->max_touch_num, >>> INPUT_MT_DIRECT | >>> INPUT_MT_DROP_UNUSED); >>> if (error) { >>