WSL2-Linux-Kernel/drivers/input/touchscreen
Douglas Anderson 648f303102 Input: elants_i2c - properly handle the reset GPIO when power is off
[ Upstream commit a85fbd6498 ]

As can be seen in elants_i2c_power_off(), we want the reset GPIO
asserted when power is off. The reset GPIO is active low so we need
the reset line logic low when power is off to avoid leakage.

We have a problem, though, at probe time. At probe time we haven't
powered the regulators on yet but we have:

  devm_gpiod_get(&client->dev, "reset", GPIOD_OUT_LOW);

While that _looks_ right, it turns out that it's not. The
GPIOD_OUT_LOW doesn't mean to init the GPIO to low. It means init the
GPIO to "not asserted". Since this is an active low GPIO that inits it
to be high.

Let's fix this to properly init the GPIO. Now after both probe and
power off the state of the GPIO is consistent (it's "asserted" or
level low).

Once we fix this, we can see that at power on time we no longer to
assert the reset GPIO as the first thing. The reset GPIO is _always_
asserted before powering on. Let's fix powering on to account for
this.

Fixes: afe10358e4 ("Input: elants_i2c - wire up regulator support")
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Link: https://lore.kernel.org/r/20221117123805.1.I9959ac561dd6e1e8e1ce7085e4de6167b27c574f@changeid
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-12-31 13:14:10 +01:00
..
88pm860x-ts.c
Kconfig Input: Fix spelling mistake in Kconfig "Modul" -> "Module" 2021-09-03 23:49:55 -07:00
Makefile Input: add driver for the Hycon HY46XX touchpanel series 2021-04-13 19:08:30 -07:00
ad7877.c Input: ad7877 - use new structure for SPI transfer delays 2020-12-10 23:39:15 -08:00
ad7879-i2c.c
ad7879-spi.c
ad7879.c Input: use input_device_enabled() 2020-12-02 22:10:33 -08:00
ad7879.h
ads7846.c Linux 5.11 2021-02-22 21:21:03 -08:00
ar1021_i2c.c Input: move to use request_irq by IRQF_NO_AUTOEN flag 2021-03-25 15:27:56 -07:00
atmel_mxt_ts.c Input: atmel_mxt_ts - fix double free in mxt_read_info_block 2021-12-29 12:28:52 +01:00
auo-pixcir-ts.c Input: use input_device_enabled() 2020-12-02 22:10:33 -08:00
bcm_iproc_tsc.c
bu21013_ts.c
bu21029_ts.c Input: move to use request_irq by IRQF_NO_AUTOEN flag 2021-03-25 15:27:56 -07:00
chipone_icn8318.c Input: use input_device_enabled() 2020-12-02 22:10:33 -08:00
chipone_icn8505.c
colibri-vf50-ts.c
cy8ctma140.c
cy8ctmg110_ts.c Input: cy8ctmg110_ts - switch to using gpiod API 2021-06-05 20:34:16 -07:00
cyttsp4_core.c Input: cyttsp4 - move 'cyttsp4_tch_abs_string' to the only file that references it 2020-11-08 22:35:48 -08:00
cyttsp4_core.h Input: cyttsp4 - move 'cyttsp4_tch_abs_string' to the only file that references it 2020-11-08 22:35:48 -08:00
cyttsp4_i2c.c
cyttsp4_spi.c
cyttsp_core.c Input: cyttsp - remove public header 2021-06-01 21:13:11 -07:00
cyttsp_core.h Input: cyttsp - remove public header 2021-06-01 21:13:11 -07:00
cyttsp_i2c.c Input: cyttsp - remove public header 2021-06-01 21:13:11 -07:00
cyttsp_i2c_common.c
cyttsp_spi.c Input: cyttsp - remove public header 2021-06-01 21:13:11 -07:00
da9034-ts.c
da9052_tsi.c
dynapro.c
edt-ft5x06.c Input: edt-ft5x06 - added case for EDT EP0110M09 2021-09-05 19:10:11 -07:00
eeti_ts.c Input: use input_device_enabled() 2020-12-02 22:10:33 -08:00
egalax_ts.c
egalax_ts_serial.c
ektf2127.c Input: use input_device_enabled() 2020-12-02 22:10:33 -08:00
elants_i2c.c Input: elants_i2c - properly handle the reset GPIO when power is off 2022-12-31 13:14:10 +01:00
elo.c Input: elo - fix an error code in elo_connect() 2021-02-18 14:39:42 -08:00
exc3000.c Input: exc3000 - fix return value check of wait_for_completion_timeout 2022-08-25 11:40:08 +02:00
fsl-imx25-tcq.c
fujitsu_ts.c
goodix.c Input: goodix - try resetting the controller when no config is set 2022-12-02 17:41:10 +01:00
goodix.h Input: goodix - try not to touch the reset-pin on x86/ACPI devices 2022-07-12 16:34:51 +02:00
gunze.c
hampshire.c
hideep.c Input: hideep - fix the uninitialized use in hideep_nvm_unlock() 2021-06-19 22:36:28 -07:00
hp680_ts_input.c
htcpen.c isa: Make the remove callback for isa drivers return void 2021-01-26 07:42:27 +01:00
hycon-hy46xx.c Input: add driver for the Hycon HY46XX touchpanel series 2021-04-13 19:08:30 -07:00
ili210x.c Input: ili210x - fix reset timing 2022-05-25 09:57:36 +02:00
ilitek_ts_i2c.c Input: Add support for ILITEK Lego Series 2021-04-09 23:23:01 -07:00
imx6ul_tsc.c Input: use input_device_enabled() 2020-12-02 22:10:33 -08:00
inexio.c
ipaq-micro-ts.c Input: use input_device_enabled() 2020-12-02 22:10:33 -08:00
iqs5xx.c Input: iqs5xx - make reset GPIO optional 2021-03-25 11:14:10 -07:00
jornada720_ts.c
lpc32xx_ts.c Input: lpc32xx_ts - convert to use BIT() 2021-03-20 19:48:37 -07:00
mainstone-wm97xx.c
max11801_ts.c
mc13783_ts.c
mcs5000_ts.c
melfas_mip4.c Input: melfas_mip4 - fix return value check in mip4_probe() 2022-10-05 10:39:42 +02:00
migor_ts.c
mk712.c
mms114.c Input: mms114 - support MMS134S 2021-09-06 23:33:26 -07:00
msg2638.c Input: add MStar MSG2638 touchscreen driver 2021-04-09 23:22:38 -07:00
mtouch.c
mxs-lradc-ts.c
pcap_ts.c
penmount.c
pixcir_i2c_ts.c Input: use input_device_enabled() 2020-12-02 22:10:33 -08:00
raspberrypi-ts.c input: raspberrypi-ts: Release firmware handle when not needed 2021-03-22 17:59:51 +01:00
raydium_i2c_ts.c Input: raydium_ts_i2c - fix memory leak in raydium_i2c_send() 2022-12-08 11:28:45 +01:00
resistive-adc-touch.c Input: resistive-adc-touch - fix division by zero error on z1 == 0 2021-10-15 22:11:03 -07:00
rohm_bu21023.c
s3c2410_ts.c ARM: s3c: adc: move header to linux/soc/samsung 2020-08-19 21:44:11 +02:00
s6sy761.c Input: s6sy761 - fix coordinate read bit shift 2021-03-07 15:14:25 -08:00
silead.c Input: silead - add workaround for x86 BIOS-es which bring the chip up in a stuck state 2021-04-09 22:42:20 -07:00
sis_i2c.c
st1232.c Input: st1232 - increase "wait ready" timeout 2021-11-18 19:17:01 +01:00
stmfts.c Input: stmfts - do not leave device disabled in stmfts_input_open 2022-06-09 10:23:13 +02:00
stmpe-ts.c Input: stmpe-ts - add description for 'prop' struct member 2021-01-19 19:03:18 -08:00
sun4i-ts.c
sur40.c Input: sur40 - fix an error code in sur40_probe() 2021-02-16 20:39:53 -08:00
surface3_spi.c Input: surface3_spi - remove set but unused variable 'timestamp' 2021-01-19 19:03:16 -08:00
sx8654.c
ti_am335x_tsc.c Input: ti_am335x_tsc - fix STEPCONFIG setup for Z2 2022-03-08 19:12:35 +01:00
touchit213.c
touchright.c
touchwin.c
tps6507x-ts.c
ts4800-ts.c
tsc40.c
tsc200x-core.c Input: tsc200x-core - use kobj_to_dev() 2021-06-19 22:36:23 -07:00
tsc200x-core.h
tsc2004.c
tsc2005.c
tsc2007.h Input: tsc2007 - convert to GPIO descriptors 2021-03-15 17:12:02 -07:00
tsc2007_core.c Input: tsc2007 - make use of device properties 2021-03-15 17:12:04 -07:00
tsc2007_iio.c
ucb1400_ts.c Input: use input_device_enabled() 2020-12-02 22:10:33 -08:00
usbtouchscreen.c Input: usbtouchscreen - fix control-request directions 2021-05-24 20:56:11 -07:00
wacom_i2c.c Input: wacom_i2c - switch to using managed resources 2021-03-25 11:14:09 -07:00
wacom_w8001.c
wdt87xx_i2c.c
wm97xx-core.c Input: use input_device_enabled() 2020-12-02 22:10:33 -08:00
wm831x-ts.c Input: move to use request_irq by IRQF_NO_AUTOEN flag 2021-03-25 15:27:56 -07:00
wm9705.c
wm9712.c
wm9713.c
zet6223.c
zforce_ts.c Input: use input_device_enabled() 2020-12-02 22:10:33 -08:00
zinitix.c Input: zinitix - do not report shadow fingers 2022-04-08 14:22:47 +02:00
zylonite-wm97xx.c