linux-uconsole/drivers/pinctrl/intel
Łukasz Bartosik 752d9eafc6 pinctrl: intel: fix unexpected interrupt
commit e986f0e602 upstream.

ASUS Chromebook C223 with Celeron N3350 crashes sometimes during
cold booot. Inspection of the kernel log showed that it gets into
an inifite loop logging the following message:

->handle_irq():  000000009cdb51e8, handle_bad_irq+0x0/0x251
->irq_data.chip(): 000000005ec212a7, 0xffffa043009d8e7
->action(): 00000
   IRQ_NOPROBE set
unexpected IRQ trap at vector 7c

The issue happens during cold boot but only if cold boot happens
at most several dozen seconds after Chromebook is powered off. For
longer intervals between power off and power on (cold boot) the issue
does not reproduce. The unexpected interrupt is sourced from INT3452
GPIO pin which is used for SD card detect. Investigation relevealed
that when the interval between power off and power on (cold boot)
is less than several dozen seconds then values of INT3452 GPIO interrupt
enable and interrupt pending registers survive power off and power
on sequence and interrupt for SD card detect pin is enabled and pending
during probe of SD controller which causes the unexpected IRQ message.
"Intel Pentium and Celeron Processor N- and J- Series" volume 3 doc
mentions that GPIO interrupt enable and status registers default
value is 0x0.
The fix clears INT3452 GPIO interrupt enabled and interrupt pending
registers in its probe function.

Fixes: 7981c0015a ("pinctrl: intel: Add Intel Sunrisepoint pin controller and GPIO support")
Signed-off-by: Łukasz Bartosik <lb@semihalf.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-02-08 18:30:39 +01:00
..
Kconfig pinctrl: cherryview: Switch to use intel_pinctrl_get_soc_data() 2020-08-20 12:37:07 +03:00
Makefile pinctrl: intel: Add Intel Emmitsburg pin controller support 2020-07-21 11:44:21 +03:00
pinctrl-baytrail.c pinctrl: baytrail: Avoid clearing debounce value when turning it off 2020-11-16 12:07:57 +02:00
pinctrl-broxton.c
pinctrl-cannonlake.c pinctrl: cannonlake: Modify COMMUNITY macros to be consistent 2020-09-30 11:43:56 +02:00
pinctrl-cedarfork.c
pinctrl-cherryview.c pinctrl: cherryview: Preserve CHV_PADCTRL1_INVRXTX_TXDATA flag on GPIOs 2020-09-07 11:57:19 +03:00
pinctrl-denverton.c
pinctrl-emmitsburg.c pinctrl: intel: Add Intel Emmitsburg pin controller support 2020-07-21 11:44:21 +03:00
pinctrl-geminilake.c
pinctrl-icelake.c
pinctrl-intel.c pinctrl: intel: fix unexpected interrupt 2022-02-08 18:30:39 +01:00
pinctrl-intel.h pinctrl: intel: Update header block to reflect direct dependencies 2020-08-20 12:37:07 +03:00
pinctrl-jasperlake.c pinctrl: jasperlake: Fix HOSTSW_OWN offset 2020-11-16 12:07:57 +02:00
pinctrl-lewisburg.c pinctrl: lewisburg: Update number of pins in community 2021-04-28 13:39:59 +02:00
pinctrl-lynxpoint.c pinctrl: lynxpoint: Drop no-op ACPI_PTR() call 2020-06-22 13:55:36 +03:00
pinctrl-merrifield.c pinctrl: merrifield: Set default bias in case no particular value given 2020-11-16 12:07:57 +02:00
pinctrl-sunrisepoint.c pinctrl: sunrisepoint: Modify COMMUNITY macros to be consistent 2020-09-30 11:43:56 +02:00
pinctrl-tigerlake.c pinctrl: tigerlake: Fix GPIO mapping for newer version of software 2021-08-18 08:59:09 +02:00