linux-stable/drivers/extcon
Marek Vasut 581c848b61 extcon: usbc-tusb320: Update state on probe even if no IRQ pending
Currently this driver triggers extcon and typec state update in its
probe function, to read out current state reported by the chip and
report the correct state to upper layers. This synchronization is
performed correctly, but only in case the chip indicates a pending
interrupt in reg09 register.

This fails to cover the situation where all interrupts reported by
the chip were already handled by Linux before reboot, then the system
rebooted, and then Linux starts again. In this case, the TUSB320 no
longer reports any interrupts in reg09, and the state update does not
perform any update as it depends on that interrupt indication.

Fix this by turning tusb320_irq_handler() into a thin wrapper around
tusb320_state_update_handler(), where the later now contains the bulk
of the code of tusb320_irq_handler(), but adds new function parameter
"force_update". The "force_update" parameter can be used by the probe
function to assure that the state synchronization is always performed,
independent of the interrupt indicated in reg09. The interrupt handler
tusb320_irq_handler() callback uses force_update=false to avoid state
updates on potential spurious interrupts and retain current behavior.

Fixes: 06bc4ca115 ("extcon: Add driver for TI TUSB320")
Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Alvin Šipraga <alsi@bang-olufsen.dk>
Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Link: https://lore.kernel.org/r/20221120141509.81012-1-marex@denx.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-11-22 17:31:09 +01:00
..
devres.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
extcon-adc-jack.c extcon: adc-jack: Fix an error handling path in 'adc_jack_probe()' 2020-05-29 17:36:01 +09:00
extcon-axp288.c extcon: Fix extcon_get_extcon_dev() error handling 2022-05-13 17:03:40 +09:00
extcon-fsa9480.c extcon: fsa9480: Drop no-op remove function 2022-07-15 11:37:40 +09:00
extcon-gpio.c extconn: Clean-up few drivers by using managed work init 2021-03-23 15:22:40 +01:00
extcon-intel-cht-wc.c extcon: intel-cht-wc: Report RID_A for ACA adapters 2022-02-01 14:55:12 +01:00
extcon-intel-int3496.c extcon: int3496: Add support for controlling Vbus through a regulator 2022-05-13 17:03:40 +09:00
extcon-intel-mrfld.c extcon: intel-mrfld: Sync hardware and software state on init 2021-06-21 18:28:00 +09:00
extcon-intel.h extcon: intel: Split out some definitions to a common header 2019-04-05 10:21:41 +09:00
extcon-max3355.c extcon: max3355: Drop unused include 2021-10-27 14:13:37 +09:00
extcon-max8997.c Char / Misc driver updates for 5.14-rc1 2021-07-05 13:42:16 -07:00
extcon-max14577.c extcon: extcon-max14577: Fix potential work-queue cancellation race 2021-06-17 13:21:44 +02:00
extcon-max77693.c extcon: extcon-max77693.c: Fix potential work-queue cancellation race 2021-06-17 13:22:02 +02:00
extcon-max77843.c extcon: max77843: Return error code of extcon_dev_allocate() 2020-09-24 19:20:49 +09:00
extcon-palmas.c extcon: Remove extraneous space before a debug message 2022-07-15 11:37:40 +09:00
extcon-ptn5150.c extcon: ptn5150: Add usb role class support 2022-05-13 17:03:41 +09:00
extcon-qcom-spmi-misc.c Driver core changes for 5.13-rc1 2021-04-26 11:05:36 -07:00
extcon-rt8973a.c i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
extcon-rt8973a.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
extcon-sm5502.c extcon: sm5502: Drop useless mask_invert flag on irqchip 2022-07-15 11:37:41 +09:00
extcon-sm5502.h extcon: sm5502: Add support for SM5504 2021-06-21 18:28:01 +09:00
extcon-usb-gpio.c extcon: usb-gpio: Remove disable irq operation in system sleep 2022-05-13 17:03:40 +09:00
extcon-usbc-cros-ec.c extcon: usbc-cros-ec: Use struct_size() helper in kzalloc() 2022-05-13 17:03:40 +09:00
extcon-usbc-tusb320.c extcon: usbc-tusb320: Update state on probe even if no IRQ pending 2022-11-22 17:31:09 +01:00
extcon.c extcon: Add EXTCON_DISP_CVBS and EXTCON_DISP_EDP 2022-07-15 11:37:41 +09:00
extcon.h
Kconfig extcon: usbc-tusb320: Add USB TYPE-C support 2022-09-26 04:40:13 +09:00
Makefile ASoC/extcon: arizona: Move arizona jack code to sound/soc/codecs/arizona-jack.c 2021-03-18 11:46:15 +00:00