Message ID | 20230125105416.17406-4-hdegoede@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Input: touchscreen - settings module-param support | expand |
On Wed, Jan 25, 2023 at 11:54:16AM +0100, Hans de Goede wrote: > Add a settings module-parameter which can be allowed to specify/override > various device-properties. > > Usuually Goodix touchscreens on x86 devices (where there is no devicetree > to specify the properties) just work. But in some cases the touchscreen is > mounted 90 or 180 degrees rotated vs the display, requiring setting the > touchscreen-x/y-inverted or touchscreen-swapped-x-y properties. > > Being able to specify the necessary properties through a module parameter, > allows users of new device-models to help us with bringing up support for > new devices without them needing to do a local kernel-build just to modify > these settings. > > Reviewed-by: Bastien Nocera <hadess@hadess.net> > Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Jeff LaBundy <jeff@labundy.com> > --- > drivers/input/touchscreen/goodix.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c > index 620f5ec0962f..a105dee04156 100644 > --- a/drivers/input/touchscreen/goodix.c > +++ b/drivers/input/touchscreen/goodix.c > @@ -53,6 +53,10 @@ > #define ACPI_GPIO_SUPPORT > #endif > > +static char *settings; > +module_param(settings, charp, 0444); > +MODULE_PARM_DESC(settings, "Override touchscreen settings using a ; separated key=value list, e.g. \"touchscreen-fuzz-x=5;touchscreen-fuzz-y=5;touchscreen-swapped-x-y\""); > + > struct goodix_chip_id { > const char *id; > const struct goodix_chip_data *data; > @@ -1197,7 +1201,8 @@ static int goodix_configure_dev(struct goodix_ts_data *ts) > goodix_read_config(ts); > > /* Try overriding touchscreen parameters via device properties */ > - touchscreen_parse_properties(ts->input_dev, true, &ts->prop); > + touchscreen_parse_properties_with_settings(ts->input_dev, true, > + &ts->prop, settings); > > if (!ts->prop.max_x || !ts->prop.max_y || !ts->max_touch_num) { > if (!ts->reset_controller_at_probe && > -- > 2.39.0 >
diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c index 620f5ec0962f..a105dee04156 100644 --- a/drivers/input/touchscreen/goodix.c +++ b/drivers/input/touchscreen/goodix.c @@ -53,6 +53,10 @@ #define ACPI_GPIO_SUPPORT #endif +static char *settings; +module_param(settings, charp, 0444); +MODULE_PARM_DESC(settings, "Override touchscreen settings using a ; separated key=value list, e.g. \"touchscreen-fuzz-x=5;touchscreen-fuzz-y=5;touchscreen-swapped-x-y\""); + struct goodix_chip_id { const char *id; const struct goodix_chip_data *data; @@ -1197,7 +1201,8 @@ static int goodix_configure_dev(struct goodix_ts_data *ts) goodix_read_config(ts); /* Try overriding touchscreen parameters via device properties */ - touchscreen_parse_properties(ts->input_dev, true, &ts->prop); + touchscreen_parse_properties_with_settings(ts->input_dev, true, + &ts->prop, settings); if (!ts->prop.max_x || !ts->prop.max_y || !ts->max_touch_num) { if (!ts->reset_controller_at_probe &&