linux/drivers/mfd
Andreas Kemnade 177edf2570 mfd: twl-core: Disable IRQ while suspended
[ Upstream commit 20bb907f7d ]

Since commit 6e2bd956936 ("i2c: omap: Use noirq system sleep pm ops to idle device for suspend")
on gta04 we have handle_twl4030_pih() called in situations where pm_runtime_get()
in i2c-omap.c returns -EACCES.

[   86.474365] Freezing remaining freezable tasks ... (elapsed 0.002 seconds) done.
[   86.485473] printk: Suspending console(s) (use no_console_suspend to debug)
[   86.555572] Disabling non-boot CPUs ...
[   86.555664] Successfully put all powerdomains to target state
[   86.563720] twl: Read failed (mod 1, reg 0x01 count 1)
[   86.563751] twl4030: I2C error -13 reading PIH ISR
[   86.563812] twl: Read failed (mod 1, reg 0x01 count 1)
[   86.563812] twl4030: I2C error -13 reading PIH ISR
[   86.563873] twl: Read failed (mod 1, reg 0x01 count 1)
[   86.563903] twl4030: I2C error -13 reading PIH ISR

This happens when we wakeup via something behing twl4030 (powerbutton or rtc
alarm). This goes on for minutes until the system is finally resumed.
Disable the irq on suspend and enable it on resume to avoid
having i2c access problems when the irq registers are checked.

Fixes: 6e2bd956936 ("i2c: omap: Use noirq system sleep pm ops to idle device for suspend")
Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
Tested-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-05-08 07:21:48 +02:00
..
88pm80x.c
88pm800.c
88pm805.c
88pm860x-core.c
88pm860x-i2c.c mfd: 88pm860x-i2c: switch to i2c_lock_bus(..., I2C_LOCK_SEGMENT) 2018-07-13 00:09:36 +02:00
aat2870-core.c
ab3100-core.c
ab3100-otp.c
ab8500-core.c mfd: ab8500-core: Return zero in get_register_interruptible() 2019-02-27 10:08:51 +01:00
ab8500-debugfs.c treewide: devm_kzalloc() -> devm_kcalloc() 2018-06-12 16:19:22 -07:00
ab8500-gpadc.c
ab8500-sysctrl.c
abx500-core.c
ac100.c
act8945a.c
adp5520.c
altera-a10sr.c
arizona-core.c mfd: arizona: Don't use regmap_read_poll_timeout 2018-07-27 08:13:25 +01:00
arizona-i2c.c
arizona-irq.c
arizona-spi.c
arizona.h
as3711.c
as3722.c mfd: as3722: Disable auto-power-on when AC OK 2018-07-27 08:16:01 +01:00
asic3.c
atmel-flexcom.c
atmel-hlcdc.c headers: separate linux/mod_devicetable.h from linux/platform_device.h 2018-07-07 17:52:26 +02:00
atmel-smc.c
axp20x-i2c.c mfd: axp20x: Support AXP806 in I2C mode 2018-07-27 08:13:26 +01:00
axp20x-rsb.c
axp20x.c mfd: axp20x: Add supported cells for AXP803 2019-02-27 10:08:52 +01:00
bcm590xx.c
bd9571mwv.c mfd: bd9571mwv: Add volatile register to make DVFS work 2019-02-27 10:08:51 +01:00
cros_ec_dev.c mfd: cros_ec_dev: Add missing mfd_remove_devices() call in remove 2019-02-27 10:08:52 +01:00
cros_ec_dev.h
cros_ec.c - New Device Support 2018-06-11 07:20:17 -07:00
cs47l24-tables.c
cs47l35-tables.c
cs47l85-tables.c
cs47l90-tables.c
cs5535-mfd.c
da903x.c
da9052-core.c
da9052-i2c.c
da9052-irq.c
da9052-spi.c
da9055-core.c
da9055-i2c.c
da9062-core.c
da9063-core.c mfd: da9063: Register RTC only on DA9063L 2018-07-04 07:17:02 +01:00
da9063-i2c.c mfd: da9063: Add DA9063L support 2018-07-04 07:17:13 +01:00
da9063-irq.c mfd: da9063: Add custom IRQ map for DA9063L 2018-07-04 07:16:57 +01:00
da9150-core.c
davinci_voicecodec.c
db8500-prcmu.c mfd: db8500-prcmu: Fix some section annotations 2019-02-27 10:08:51 +01:00
dbx500-prcmu-regs.h
dln2.c mfd: dln2: Use irqsave() in USB's complete callback 2018-07-27 08:13:25 +01:00
dm355evm_msp.c
exynos-lpass.c
ezx-pcap.c
fsl-imx25-tsadc.c
hi655x-pmic.c mfd: hi655x: Fix regmap area declared size for hi655x 2018-07-27 08:13:25 +01:00
hi6421-pmic-core.c
htc-i2cpld.c treewide: devm_kzalloc() -> devm_kcalloc() 2018-06-12 16:19:22 -07:00
htc-pasic3.c
intel_msic.c
intel_quark_i2c_gpio.c
intel_soc_pmic_bxtwc.c
intel_soc_pmic_chtdc_ti.c
intel_soc_pmic_chtwc.c
intel_soc_pmic_core.c
intel_soc_pmic_core.h
intel_soc_pmic_crc.c
intel-lpss-acpi.c
intel-lpss-pci.c mfd: intel-lpss: Add Ice Lake PCI IDs 2018-07-27 08:13:24 +01:00
intel-lpss.c
intel-lpss.h
ipaq-micro.c
janz-cmodio.c
jz4740-adc.c
Kconfig mfd: bd71837: Core driver for ROHM BD71837 PMIC 2018-08-16 10:13:37 +01:00
kempld-core.c mfd: kempld-core: Constify variables that point to const structure 2018-07-27 08:13:24 +01:00
lm3533-core.c
lm3533-ctrlbank.c
lp873x.c
lp3943.c
lp8788-irq.c
lp8788.c
lp87565.c
lpc_ich.c
lpc_sch.c
madera-core.c
madera-i2c.c
madera-spi.c
madera.h
Makefile mfd: bd71837: Core driver for ROHM BD71837 PMIC 2018-08-16 10:13:37 +01:00
max8907.c
max8925-core.c
max8925-i2c.c
max8997-irq.c
max8997.c
max8998-irq.c
max8998.c
max14577.c
max77620.c
max77686.c
max77693.c
max77843.c
mc13xxx-core.c mfd: mc13xxx: Fix a missing check of a register-read failure 2019-02-27 10:08:52 +01:00
mc13xxx-i2c.c
mc13xxx-spi.c
mc13xxx.h
mcp-core.c
mcp-sa11x0.c
menelaus.c mfd: menelaus: Fix possible race condition and leak 2018-11-13 11:08:38 -08:00
menf21bmc.c
mfd-core.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
motorola-cpcap.c treewide: devm_kzalloc() -> devm_kcalloc() 2018-06-12 16:19:22 -07:00
mt6397-core.c mfd: mt6397: Do not call irq_domain_remove if PMIC unsupported 2019-02-27 10:08:51 +01:00
mxs-lradc.c
omap-usb-host.c mfd: omap-usb-host: Fix dts probe of children 2018-09-11 16:47:33 +01:00
omap-usb-tll.c
omap-usb.h
palmas.c
pcf50633-adc.c
pcf50633-core.c
pcf50633-gpio.c
pcf50633-irq.c
qcom_rpm.c mfd: qcom_rpm: write fw_version to CTRL_REG 2019-02-27 10:08:51 +01:00
qcom-pm8xxx.c
qcom-spmi-pmic.c
rave-sp.c mfd: rave-sp: Emulate CMD_GET_STATUS on device that don't support it 2018-07-27 08:13:25 +01:00
rc5t583-irq.c
rc5t583.c
rdc321x-southbridge.c
retu-mfd.c
rk808.c
rn5t618.c
rohm-bd718x7.c mfd: bd71837: Core driver for ROHM BD71837 PMIC 2018-08-16 10:13:37 +01:00
rt5033.c
sec-core.c mfd: sec-core: Export OF module alias table 2018-07-27 09:27:15 +01:00
sec-irq.c
si476x-cmd.c
si476x-i2c.c
si476x-prop.c
sky81452.c
sm501.c mfd: sm501: Fix potential NULL pointer dereference 2019-03-23 20:10:09 +01:00
smsc-ece1099.c
sprd-sc27xx-spi.c treewide: devm_kzalloc() -> devm_kcalloc() 2018-06-12 16:19:22 -07:00
ssbi.c
sta2x11-mfd.c
stm32-lptimer.c
stm32-timers.c
stmpe-i2c.c
stmpe-spi.c
stmpe.c
stmpe.h
stw481x.c
sun4i-gpadc.c
sun6i-prcm.c
syscon.c
t7l66xb.c
tc3589x.c
tc6387xb.c
tc6393xb.c
ti_am335x_tscadc.c mfd: ti_am335x_tscadc: Use PLATFORM_DEVID_AUTO while registering mfd cells 2019-02-27 10:08:50 +01:00
ti-lmu.c
timberdale.c Merge branch 'i2c/for-4.18' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2018-06-14 16:21:46 +09:00
timberdale.h
tmio_core.c
tps6105x.c
tps6507x.c
tps6586x.c mfd: tps6586x: Handle interrupts on suspend 2019-01-22 21:40:33 +01:00
tps65010.c
tps65086.c
tps65090.c
tps65217.c
tps65218.c mfd: tps65218: Use devm_regmap_add_irq_chip and clean up error path in probe() 2019-02-27 10:08:52 +01:00
tps65910.c
tps65911-comparator.c
tps65912-core.c
tps65912-i2c.c
tps65912-spi.c
tps68470.c
tps80031.c
twl-core.c mfd: twl-core: Disable IRQ while suspended 2019-05-08 07:21:48 +02:00
twl-core.h
twl4030-audio.c
twl4030-irq.c
twl4030-power.c
twl6030-irq.c
twl6040.c
ucb1x00-assabet.c
ucb1x00-core.c
ucb1x00-ts.c
ucb1400_core.c
vexpress-sysreg.c
viperboard.c
vx855.c
wl1273-core.c
wm97xx-core.c mfd: wm97xx-core: Platform data can be NULL 2018-06-11 09:11:03 +01:00
wm831x-auxadc.c
wm831x-core.c
wm831x-i2c.c
wm831x-irq.c
wm831x-otp.c
wm831x-spi.c
wm5102-tables.c
wm5110-tables.c mfd: wm5110: Add missing ASRC rate register 2019-02-27 10:08:51 +01:00
wm8350-core.c
wm8350-gpio.c
wm8350-i2c.c
wm8350-irq.c
wm8350-regmap.c
wm8400-core.c
wm8994-core.c mfd: wm8994: Allow to configure CS/ADDR Pulldown from dts 2018-07-27 08:13:25 +01:00
wm8994-irq.c
wm8994-regmap.c
wm8994.h
wm8997-tables.c
wm8998-tables.c