summaryrefslogtreecommitdiff
path: root/lib/errseq.c
diff options
context:
space:
mode:
authorMarek Vasut <marex@denx.de>2022-11-20 17:15:09 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-11-22 19:31:09 +0300
commit581c848b610dbf3fe1ed4d85fd53d0743c61faba (patch)
tree51cda7332edf6500bc2184b8fe7443a576a18bd5 /lib/errseq.c
parent3205054dc6fe2425ff24827a51fdf7cbbb528680 (diff)
downloadlinux-581c848b610dbf3fe1ed4d85fd53d0743c61faba.tar.xz
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: 06bc4ca115cdd ("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>
Diffstat (limited to 'lib/errseq.c')
0 files changed, 0 insertions, 0 deletions