Message ID | 20230926173531.18715-3-balejk@matfyz.cz |
---|---|
State | New |
Headers | show |
Series | input: Imagis: add support for the IST3032C touchscreen | expand |
On 26/09/2023 19:35, Karel Balej wrote: > The downstream driver sets the regulator voltage to 3.1 V. Without this, > the touchscreen generates random touches even after it is no longer > being touched. It is unknown whether the same problem appears with other > chips of the IST30**C series. > > Co-developed-by: Duje Mihanović <duje.mihanovic@skole.hr> > Signed-off-by: Duje Mihanović <duje.mihanovic@skole.hr> > Signed-off-by: Karel Balej <balejk@matfyz.cz> > --- > .../bindings/input/touchscreen/imagis,ist30xxc.yaml | 1 + Bindings are always separate patches. Always. Please run scripts/checkpatch.pl and fix reported warnings. Some warnings can be ignored, but the code here looks like it needs a fix. Feel free to get in touch if the warning is not clear. Please use subject prefixes matching the subsystem. You can get them for example with `git log --oneline -- DIRECTORY_OR_FILE` on the directory your patch is touching. Best regards, Krzysztof
diff --git a/Documentation/devicetree/bindings/input/touchscreen/imagis,ist30xxc.yaml b/Documentation/devicetree/bindings/input/touchscreen/imagis,ist30xxc.yaml index 09bf3a6acc5e..d6f75bbfaec3 100644 --- a/Documentation/devicetree/bindings/input/touchscreen/imagis,ist30xxc.yaml +++ b/Documentation/devicetree/bindings/input/touchscreen/imagis,ist30xxc.yaml @@ -18,6 +18,7 @@ properties: compatible: enum: + - imagis,ist3032c - imagis,ist3038c reg: diff --git a/drivers/input/touchscreen/imagis.c b/drivers/input/touchscreen/imagis.c index 4456f1b4d527..df9a8fbf2c5f 100644 --- a/drivers/input/touchscreen/imagis.c +++ b/drivers/input/touchscreen/imagis.c @@ -30,6 +30,7 @@ #define IST30XXC_FINGER_COUNT_SHIFT 12 #define IST30XXC_FINGER_STATUS_MASK GENMASK(9, 0) +#define IST3032C_WHOAMI 0x32c #define IST3038C_WHOAMI 0x38c struct imagis_ts { @@ -295,6 +296,16 @@ static int imagis_probe(struct i2c_client *i2c) return -EINVAL; } + if (chip_id == IST3032C_WHOAMI) { + /* + * if the regulator voltage is not set like this, the touchscreen + * generates random touches without user interaction + */ + error = regulator_set_voltage(ts->supplies[0].consumer, 3100000, 3100000); + if (error) + dev_warn(dev, "failed to set regulator voltage\n"); + } + error = devm_request_threaded_irq(dev, i2c->irq, NULL, imagis_interrupt, IRQF_ONESHOT | IRQF_NO_AUTOEN, @@ -348,6 +359,7 @@ static DEFINE_SIMPLE_DEV_PM_OPS(imagis_pm_ops, imagis_suspend, imagis_resume); #ifdef CONFIG_OF static const struct of_device_id imagis_of_match[] = { + { .compatible = "imagis,ist3032c", .data = (void *)IST3032C_WHOAMI, }, { .compatible = "imagis,ist3038c", .data = (void *)IST3038C_WHOAMI, }, { }, }; @@ -355,6 +367,7 @@ MODULE_DEVICE_TABLE(of, imagis_of_match); #endif static const struct i2c_device_id imagis_ts_i2c_id[] = { + { "ist3032c", IST3032C_WHOAMI, }, { "ist3038c", IST3038C_WHOAMI, }, { }, };