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? > 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) { >