linux-stable/drivers/pinctrl
Łukasz Bartosik e986f0e602 pinctrl: intel: fix unexpected interrupt
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>
2022-01-24 16:30:13 +02:00
..
actions pinctrl: Get rid of duplicate of_node assignment in the drivers 2021-12-16 04:18:30 +01:00
aspeed pinctrl: aspeed: fix unmet dependencies on MFD_SYSCON for PINCTRL_ASPEED 2021-12-16 04:28:49 +01:00
bcm Pin control bulk changes for the v5.17 kernel cycle 2022-01-12 10:56:08 -08:00
berlin
cirrus pinctrl: Propagate firmware node from a parent device 2021-12-22 03:09:56 +01:00
freescale pinctrl: imx: fix assigning groups names 2022-01-02 07:33:51 +01:00
intel pinctrl: intel: fix unexpected interrupt 2022-01-24 16:30:13 +02:00
mediatek Pin control bulk changes for the v5.17 kernel cycle 2022-01-12 10:56:08 -08:00
meson pinctrl/meson: enable building as modules 2020-11-05 14:51:38 +01:00
mvebu pinctrl: armada-37xx: Switch to use devm_kasprintf_strarray() 2021-11-18 18:40:09 +02:00
nomadik pinctrl: nomadik: Kconfig: Remove repeated config dependency 2021-09-17 00:08:14 +02:00
nuvoton pinctrl: Bulk conversion to generic_handle_domain_irq() 2021-08-12 11:39:39 +01:00
pxa pinctrl: Introduce MODE group in enum pin_config_param 2021-04-22 02:03:01 +02:00
qcom pinctrl: Get rid of duplicate of_node assignment in the drivers 2021-12-16 04:18:30 +01:00
ralink pinctrl: ralink: include 'ralink_regs.h' in 'pinctrl-mt7620.c' 2021-11-16 02:19:14 +01:00
renesas pinctrl: renesas: Updates for v5.17 (take two) 2021-12-20 03:14:33 +01:00
samsung pinctrl: samsung: Use platform_get_irq_optional() to get the interrupt 2021-12-25 11:18:06 +01:00
spear pinctrl: Get rid of duplicate of_node assignment in the drivers 2021-12-16 04:18:30 +01:00
sprd pinctrl: sprd: Simplify bool comparison 2021-01-18 14:41:42 +01:00
stm32 pinctrl: stm32: consider the GPIO offset to expose all the GPIO lines 2021-12-16 04:14:56 +01:00
sunxi pinctrl-sunxi: don't call pinctrl_gpio_direction() 2021-12-16 03:44:08 +01:00
tegra pinctrl: tegra194: remove duplicate initializer again 2021-11-16 02:19:15 +01:00
ti pinctrl: ti: fix error return code of ti_iodelay_dt_node_to_map() 2021-04-08 15:57:14 +02:00
uniphier pinctrl: uniphier: Add UniPhier NX1 pinctrl driver 2021-10-13 02:13:47 +02:00
visconti gpio: visconti: Add Toshiba Visconti GPIO support 2021-02-15 11:43:26 +01:00
vt8500 pinctrl: Get rid of duplicate of_node assignment in the drivers 2021-12-16 04:18:30 +01:00
core.c Pin control changes for the v5.16 kernel cycle 2021-11-05 08:24:17 -07:00
core.h
devicetree.c pinctrl: devicetree: Keep deferring even on timeout 2020-09-12 18:19:53 +02:00
devicetree.h
Kconfig Pin control bulk changes for the v5.17 kernel cycle 2022-01-12 10:56:08 -08:00
Makefile pinctrl: Place correctly CONFIG_PINCTRL_ST in the Makefile 2022-01-24 16:30:13 +02:00
pinconf-generic.c pinctrl: pinconf-generic: Add support for "output-impedance-ohms" to be extracted from DT files 2021-11-15 10:13:36 +01:00
pinconf.c pinctrl: use to octal permissions for debugfs files 2021-03-10 14:41:58 +01:00
pinconf.h
pinctrl-amd.c pinctrl: Get rid of duplicate of_node assignment in the drivers 2021-12-16 04:18:30 +01:00
pinctrl-amd.h pinctrl: amd: Add irq field data 2021-09-17 00:48:45 +02:00
pinctrl-apple-gpio.c pinctrl: apple-gpio: fix flexible_array.cocci warnings 2021-12-02 02:34:45 +01:00
pinctrl-artpec6.c
pinctrl-as3722.c pinctrl: Propagate firmware node from a parent device 2021-12-22 03:09:56 +01:00
pinctrl-at91-pio4.c pinctrl: Get rid of duplicate of_node assignment in the drivers 2021-12-16 04:18:30 +01:00
pinctrl-at91.c pinctrl: Get rid of duplicate of_node assignment in the drivers 2021-12-16 04:18:30 +01:00
pinctrl-at91.h
pinctrl-axp209.c
pinctrl-bm1880.c pinctrl: pinctrl-bm1880: Rename ill documented struct attribute entries 2020-07-16 15:13:55 +02:00
pinctrl-da850-pupd.c
pinctrl-da9062.c pinctrl: Propagate firmware node from a parent device 2021-12-22 03:09:56 +01:00
pinctrl-digicolor.c pinctrl: Get rid of duplicate of_node assignment in the drivers 2021-12-16 04:18:30 +01:00
pinctrl-equilibrium.c pinctrl: equilibrium: Fix function addition in multiple groups 2021-10-25 00:20:01 +02:00
pinctrl-equilibrium.h
pinctrl-falcon.c pinctrl: falcon: add missing put_device() call in pinctrl_falcon_probe() 2020-12-04 09:17:51 +01:00
pinctrl-gemini.c pinctrl: gemini: fix typos 2021-10-14 01:22:58 +02:00
pinctrl-ingenic.c This is the bulk of pin control changes for the v5.15 kernel cycle, 2021-09-02 14:22:56 -07:00
pinctrl-k210.c pinctrl: k210: Fix k210_fpioa_probe() 2021-08-11 15:03:53 +02:00
pinctrl-keembay.c pinctrl: keembay: rework loops looking for groups names 2021-12-22 02:57:27 +01:00
pinctrl-lantiq.c pinctrl: fix several typos 2020-04-28 13:26:49 +02:00
pinctrl-lantiq.h
pinctrl-lpc18xx.c pinctrl: Introduce MODE group in enum pin_config_param 2021-04-22 02:03:01 +02:00
pinctrl-max77620.c pinctrl: Propagate firmware node from a parent device 2021-12-22 03:09:56 +01:00
pinctrl-mcp23s08.c pinctrl: Get rid of duplicate of_node assignment in the drivers 2021-12-16 04:18:30 +01:00
pinctrl-mcp23s08.h pinctrl: mcp23s08: Add optional reset GPIO 2021-06-12 01:58:10 +02:00
pinctrl-mcp23s08_i2c.c
pinctrl-mcp23s08_spi.c pinctrl: mcp23s08: Print error message when regmap init fails 2020-11-05 11:30:31 +01:00
pinctrl-microchip-sgpio.c pinctrl: microchip-sgpio: update to support regmap 2021-11-22 01:07:02 +01:00
pinctrl-ocelot.c pinctrl: Get rid of duplicate of_node assignment in the drivers 2021-12-16 04:18:30 +01:00
pinctrl-oxnas.c pinctrl: Get rid of duplicate of_node assignment in the drivers 2021-12-16 04:18:30 +01:00
pinctrl-palmas.c
pinctrl-pic32.c pinctrl: Get rid of duplicate of_node assignment in the drivers 2021-12-16 04:18:30 +01:00
pinctrl-pic32.h
pinctrl-pistachio.c pinctrl: Bulk conversion to generic_handle_domain_irq() 2021-08-12 11:39:39 +01:00
pinctrl-rk805.c pinctrl: Propagate firmware node from a parent device 2021-12-22 03:09:56 +01:00
pinctrl-rockchip.c pinctrl/rockchip: fix gpio device creation 2021-12-02 02:24:53 +01:00
pinctrl-rockchip.h pinctrl/rockchip: add a queue for deferred pin output settings on probe 2021-09-18 01:32:20 +02:00
pinctrl-single.c This is the bulk of pin control changes for the v5.15 kernel cycle, 2021-09-02 14:22:56 -07:00
pinctrl-st.c pinctrl: st: Switch to use devm_kasprintf_strarray() 2021-11-18 18:40:10 +02:00
pinctrl-starfive.c pinctrl: starfive: Add pinctrl driver for StarFive SoCs 2021-12-16 17:24:23 +01:00
pinctrl-stmfx.c pinctrl: Get rid of duplicate of_node assignment in the drivers 2021-12-16 04:18:30 +01:00
pinctrl-sx150x.c pinctrl: Get rid of duplicate of_node assignment in the drivers 2021-12-16 04:18:30 +01:00
pinctrl-tb10x.c
pinctrl-thunderbay.c pinctrl: Add Intel Thunder Bay pinctrl driver 2021-12-09 03:17:39 +01:00
pinctrl-utils.c pinctrl: use krealloc_array() 2020-12-15 12:13:37 -08:00
pinctrl-utils.h
pinctrl-xway.c pinctrl: Get rid of duplicate of_node assignment in the drivers 2021-12-16 04:18:30 +01:00
pinctrl-zynq.c pinctrl: pinctrl-zynq: Add support for 'power-source' parameter 2021-07-30 14:40:42 +02:00
pinctrl-zynqmp.c pinctrl: zynqmp: Unify pin naming 2021-11-19 10:38:16 +02:00
pinmux.c pinctrl: add one more "const" for generic function groups 2021-12-22 02:57:27 +01:00
pinmux.h pinctrl: add one more "const" for generic function groups 2021-12-22 02:57:27 +01:00