linux/drivers/mfd
Jon Hunter 35deff7eb2 mfd: as3722: Handle interrupts on suspend
The as3722 device is registered as an irqchip and the as3722-rtc interrupt
is one of it's interrupt sources. When using the as3722-rtc as a wake-up
device from suspend, the following is seen:

  PM: Syncing filesystems ... done.
  Freezing user space processes ... (elapsed 0.001 seconds) done.
  Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
  Suspending console(s) (use no_console_suspend to debug)
  PM: suspend of devices complete after 161.119 msecs
  PM: late suspend of devices complete after 1.048 msecs
  PM: noirq suspend of devices complete after 0.756 msecs
  Disabling non-boot CPUs ...
  CPU1: shutdown
  CPU2: shutdown
  CPU3: shutdown
  Entering suspend state LP1
  Enabling non-boot CPUs ...
  CPU1 is up
  CPU2 is up
  CPU3 is up
  PM: noirq resume of devices complete after 0.487 msecs
  as3722 4-0040: Failed to read IRQ status: -16
  as3722 4-0040: Failed to read IRQ status: -16
  as3722 4-0040: Failed to read IRQ status: -16
  as3722 4-0040: Failed to read IRQ status: -16
  ...

The reason why the as3722 interrupt status cannot be read is because the
as3722 interrupt is not masked during suspend and when the as3722-rtc
interrupt occurs, to wake-up the device, the interrupt is seen before the
i2c controller has been resumed in order to read the as3722 interrupt
status.

The as3722-rtc driver sets it's interrupt as a wake-up source during
suspend, which gets propagated to the parent as3722 interrupt. However,
the as3722-rtc driver cannot disable it's interrupt during suspend
otherwise we would never be woken up and so the as3722 must disable it's
interrupt instead.

Fix this by disabling the as3722 interrupt during suspend. To ensure that
a wake-up event from the as3722 is not missing, enable the as3722 interrupt
as a wake-up source before disabling the interrupt on entering suspend.

Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
2015-12-04 08:45:44 +00:00
..
88pm80x.c mfd: 88pm80x: Add 88pm860 chip type support 2015-10-26 14:48:56 +00:00
88pm800.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
88pm805.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
88pm860x-core.c mfd: Kill off set_irq_flags usage 2015-08-11 15:09:01 +01:00
88pm860x-i2c.c mfd: 88pm860x-i2c: Fix variable length array Sparse warning 2014-09-26 08:15:45 +01:00
aat2870-core.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
ab3100-core.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
ab3100-otp.c mfd: drop owner assignment from platform_drivers 2014-10-20 16:20:53 +02:00
ab8500-core.c mfd: Kill off set_irq_flags usage 2015-08-11 15:09:01 +01:00
ab8500-debugfs.c mfd: ab8500-debugfs: Pass the IRQF_ONESHOT flag 2015-06-22 12:25:27 +01:00
ab8500-gpadc.c mfd: ab8500-gpadc: Pass the IRQF_ONESHOT flag 2015-06-22 12:25:28 +01:00
ab8500-sysctrl.c mfd: ab8500: Decrement the power supply's device reference counter 2015-03-13 23:15:54 +01:00
abx500-core.c mfd: abx500-core: Remove unused function abx500_dump_all_banks() 2014-06-03 08:11:51 +01:00
adp5520.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
arizona-core.c mfd: arizona: Signedness bug in arizona_runtime_suspend() 2015-10-30 18:56:58 +00:00
arizona-i2c.c mfd: arizona: Use correct type ID for device tree config 2015-10-30 17:20:30 +00:00
arizona-irq.c mfd: arizona: Fix typo in arizona_irq_map 2015-10-26 14:49:05 +00:00
arizona-spi.c - New Device Support 2015-11-06 10:23:50 -08:00
arizona.h mfd: arizona: Add support for WM8998 and WM1814 2015-08-11 15:08:42 +01:00
as3711.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
as3722.c mfd: as3722: Handle interrupts on suspend 2015-12-04 08:45:44 +00:00
asic3.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
atmel-flexcom.c mfd: atmel-flexcom: Add a driver for Atmel Flexible Serial Communication Unit 2015-10-30 17:19:49 +00:00
atmel-hlcdc.c mfd: atmel-hlcdc: Fix module autoload for OF platform driver 2015-10-26 14:48:59 +00:00
axp20x.c mfd: axp20x: Add a cell for the power button part of the, axp288 PMICs 2015-10-30 17:20:39 +00:00
bcm590xx.c mfd: bcm590xx: Remove unnecessary MODULE_ALIAS() 2015-10-26 14:49:09 +00:00
cros_ec_i2c.c mfd: cros_ec_i2c: Add OF match table 2015-10-26 14:48:55 +00:00
cros_ec_spi.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
cros_ec.c mfd: cros_ec: Staticise some newly introduced structures 2015-06-22 12:23:02 +01:00
cs5535-mfd.c mfd: Delete non-required instances of include <linux/init.h> 2014-03-19 08:58:07 +00:00
da903x.c mfd: da903x: Simplify function return logic 2015-10-30 17:19:45 +00:00
da9052-core.c mfd: da9053: Addition of extra registers for GPIOs 8-13 2015-10-30 17:19:49 +00:00
da9052-i2c.c mfd: da9052: Simplify function return logic 2015-10-30 17:19:46 +00:00
da9052-irq.c mfd: Constify regmap and irq configuration data 2015-06-22 12:25:01 +01:00
da9052-spi.c - New Device Support 2015-11-06 10:23:50 -08:00
da9055-core.c mfd: Constify regmap and irq configuration data 2015-06-22 12:25:01 +01:00
da9055-i2c.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
da9062-core.c mfd: da9062-core: Rename get_device_type to da9062_get_device_type 2015-10-30 17:19:51 +00:00
da9063-core.c mfd: da9063: Add support for OnKey driver 2015-06-22 12:25:20 +01:00
da9063-i2c.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
da9063-irq.c mfd: da9063: Fix missing DA9063_M_DVC_RDY mask bit 2015-08-11 15:08:51 +01:00
da9150-core.c mfd: da9150: Use DEFINE_RES_IRQ_NAMED() help macro for IRQ resource 2015-10-13 11:28:36 +01:00
davinci_voicecodec.c mfd: davinci_voicecodec: Constify struct regmap_config 2015-01-22 15:56:24 +00:00
db8500-prcmu.c mfd: Kill off set_irq_flags usage 2015-08-11 15:09:01 +01:00
dbx500-prcmu-regs.h
dln2.c mfd: dln2: Use msecs_to_jiffies for time conversion 2015-03-26 14:20:18 +00:00
dm355evm_msp.c mfd: dm355evm_msp: Fix checkpatch error: insert space after ',' 2014-07-22 13:17:06 +01:00
ezx-pcap.c Merge remote-tracking branches 'spi/topic/omap-100k', 'spi/topic/omap-uwire', 'spi/topic/owner', 'spi/topic/pxa' and 'spi/topic/pxa2xx' into spi-next 2015-11-04 11:02:12 +00:00
hi6421-pmic-core.c mfd: hi6421-pmic: Fix module autoload for OF platform driver 2015-10-26 14:49:00 +00:00
htc-egpio.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
htc-i2cpld.c mfd: htc-i2cpld: Remove unneded ret variable 2015-10-30 17:19:41 +00:00
htc-pasic3.c mfd: Constify struct mfd_cell where possible 2014-01-06 09:13:29 +00:00
intel_msic.c mfd: drop owner assignment from platform_drivers 2014-10-20 16:20:53 +02:00
intel_quark_i2c_gpio.c mfd: intel_quark_i2c_gpio: support devices behind i2c bus 2015-10-26 15:25:55 +01:00
intel_soc_pmic_bxtwc.c mfd: intel_soc_pmic_bxtwc: 64 bit bug in bxtwc_val_store() 2015-10-30 17:19:47 +00:00
intel_soc_pmic_core.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-09-04 15:49:32 -07:00
intel_soc_pmic_core.h mfd: Constify regmap and irq configuration data 2015-06-22 12:25:01 +01:00
intel_soc_pmic_crc.c mfd: intel_soc_pmic_crc: Add PWM cell device for Crystalcove PMIC 2015-07-21 09:22:08 +02:00
intel-lpss-acpi.c mfd: lpss: Add Broxton ACPI IDs 2015-10-30 18:57:33 +00:00
intel-lpss-pci.c mfd: lpss: Add Intel Broxton PCI IDs 2015-10-30 18:57:34 +00:00
intel-lpss.c asm-generic cleanups 2015-11-06 14:22:15 -08:00
intel-lpss.h mfd: intel-lpss: Fix build error when !CONFIG_PM_SLEEP 2015-10-01 16:31:33 +01:00
ipaq-micro.c mfd: ipaq-micro: Convert to built-in platform driver 2015-08-11 15:09:00 +01:00
janz-cmodio.c can: janz-ican3: add support for CAL/CANopen firmware 2015-05-06 08:03:20 +02:00
jz4740-adc.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
Kconfig mfd: Make TPS6105X select REGMAP_I2C 2015-10-30 17:20:12 +00:00
kempld-core.c mfd: kempld-core: Simplify function return logic 2015-10-30 17:19:43 +00:00
lm3533-core.c mfd: lm3533: Fix unused variable build warning 2015-10-30 17:19:52 +00:00
lm3533-ctrlbank.c
lp3943.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
lp8788-irq.c mfd: Kill off set_irq_flags usage 2015-08-11 15:09:01 +01:00
lp8788.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
lpc_ich.c mfd: lpc_ich: Intel device IDs for PCH 2015-11-24 11:10:46 +00:00
lpc_sch.c mfd: lpc_sch: Enable WDT for Intel Quark X1000 2015-01-22 15:55:56 +00:00
Makefile mfd: wm8994: Ensure that the whole MFD is built into a single module 2015-11-24 11:11:18 +00:00
max8907.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
max8925-core.c mfd: Kill off set_irq_flags usage 2015-08-11 15:09:01 +01:00
max8925-i2c.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
max8997-irq.c mfd: max899x: Avoid redundant irq_data lookup 2015-08-11 15:09:08 +01:00
max8997.c mfd: max8997: Fix module autoload for OF platform driver 2015-10-26 14:49:01 +00:00
max8998-irq.c mfd: max899x: Avoid redundant irq_data lookup 2015-08-11 15:09:08 +01:00
max8998.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
max14577.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
max77686.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
max77693.c - New Device Support 2015-09-04 11:35:03 -07:00
max77843.c mfd: max77843: Fix max77843_chg_init() return on error 2015-10-01 16:31:42 +01:00
mc13xxx-core.c mfd: mc13xxx-core: Pass the IRQF_ONESHOT flag 2015-06-22 12:25:24 +01:00
mc13xxx-i2c.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
mc13xxx-spi.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
mc13xxx.h mfd: mc13xxx: Use regmap irq framework for interrupts 2014-07-09 14:58:10 +01:00
mcp-core.c mfd: mcp-core: Fix 'blank line after declarations' warning 2014-07-22 13:17:02 +01:00
mcp-sa11x0.c mfd: drop owner assignment from platform_drivers 2014-10-20 16:20:53 +02:00
menelaus.c mfd: menelaus: Use macro for magic number 2015-03-30 10:06:55 +01:00
menf21bmc.c mfd: menf21bmc: Introduce MEN 14F021P00 BMC MFD Core driver 2014-09-24 13:30:16 +01:00
mfd-core.c mfd: core: redo ACPI matching of the children devices 2015-10-26 15:25:53 +01:00
mt6397-core.c mfd: mt6397: Implement wake handler and suspend/resume to handle wake up event 2015-08-11 15:09:11 +01:00
omap-usb-host.c mfd: omap-usb-host: Remove some unused functions 2015-01-22 16:03:53 +00:00
omap-usb-tll.c mfd: drop owner assignment from platform_drivers 2014-10-20 16:20:53 +02:00
omap-usb.h
palmas.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
pcf50633-adc.c mfd: Delete non-required instances of include <linux/init.h> 2014-03-19 08:58:07 +00:00
pcf50633-core.c mfd: pcf50633: Constify struct regmap_config 2015-01-22 15:56:21 +00:00
pcf50633-gpio.c
pcf50633-irq.c mfd: pcf50633: Remove unneded ret variable 2015-10-30 17:19:42 +00:00
pm8921-core.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
qcom_rpm.c mfd: qcom_rpm: Drop use of IRQF_NO_SUSPEND flag 2015-10-30 17:19:40 +00:00
qcom-spmi-pmic.c mfd: qcom-spmi-pmic: Add specific compatible strings for Qualcomm's SPMI PMIC's 2015-03-30 10:07:08 +01:00
rc5t583-irq.c mfd: Kill off set_irq_flags usage 2015-08-11 15:09:01 +01:00
rc5t583.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
rdc321x-southbridge.c mfd: rdc321x: Fix off-by-one for ngpio setting 2014-06-03 08:11:17 +01:00
retu-mfd.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
rk808.c mfd: Constify of_device_id array 2015-03-26 14:20:18 +00:00
rn5t618.c mfd: Add Ricoh RN5T618 PMIC core driver 2014-09-26 08:15:51 +01:00
rt5033.c mfd: rt5033: Add RT5033 Flash led sub device 2015-10-30 18:57:35 +00:00
rtl8411.c mfd: rtsx: Using pcr_dbg replace dev_dbg 2015-03-03 16:41:21 +00:00
rts5209.c mfd: rtsx: Simplify function return logic 2015-10-30 17:19:44 +00:00
rts5227.c mfd: rtsx: Add support for rts522A 2015-10-30 17:19:51 +00:00
rts5229.c mfd: rtsx: Simplify function return logic 2015-10-30 17:19:44 +00:00
rts5249.c mfd: rtsx: Simplify function return logic 2015-10-30 17:19:44 +00:00
rtsx_pcr.c mfd: avoid newly introduced compiler warning 2015-11-06 10:47:12 -08:00
rtsx_pcr.h mfd: rtsx: Add support for rts522A 2015-10-30 17:19:51 +00:00
rtsx_usb.c mfd: rtsx_usb: Prevent DMA from stack 2015-03-12 09:27:41 +00:00
sec-core.c mfd: sec-core: Rename MFD and regulator names differently 2015-11-24 11:11:16 +00:00
sec-irq.c mfd: sec: Add support for S2MPS15 PMIC 2015-11-23 10:33:16 +00:00
si476x-cmd.c mfd: si476x-cmd: Remedy checkpatch style complains 2014-07-25 15:31:44 +01:00
si476x-i2c.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
si476x-prop.c
sky81452.c mfd: Add support for Skyworks SKY81452 driver 2015-03-12 09:08:12 +00:00
sm501.c mfd: sm501: Fix module autoload for OF platform driver 2015-10-26 14:49:02 +00:00
smsc-ece1099.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
ssbi.c mfd: drop owner assignment from platform_drivers 2014-10-20 16:20:53 +02:00
sta2x11-mfd.c mfd: drop owner assignment from platform_drivers 2014-10-20 16:20:53 +02:00
stmpe-i2c.c - New Device Support 2015-09-04 11:35:03 -07:00
stmpe-spi.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
stmpe.c mfd: stmpe: PWM on 24xx has altfunc 1 2015-10-26 14:48:57 +00:00
stmpe.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2014-12-30 16:59:59 -08:00
stw481x.c mfd: stw481x: Export I2C module alias information 2015-08-11 15:09:09 +01:00
sun6i-prcm.c mfd: sun6i-prcm: Add support for the ir-clk 2015-01-22 15:55:49 +00:00
syscon.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
t7l66xb.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
tc3589x.c mfd: Kill off set_irq_flags usage 2015-08-11 15:09:01 +01:00
tc6387xb.c mfd: tc6387xb: prepare/unprepare clocks 2014-11-25 16:18:58 +00:00
tc6393xb.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
ti_am335x_tscadc.c mfd: ti_am335x_tscadc: Remove unwanted reg_se_cache save 2015-03-03 16:41:15 +00:00
timberdale.c mfd: timberdale: Use pci_enable_msix_exact() instead of pci_enable_msix() 2014-03-19 08:58:34 +00:00
timberdale.h
tmio_core.c
tps6105x.c mfd: tps6105x: Fix possible NULL pointer access 2015-10-30 17:19:40 +00:00
tps6507x.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
tps6586x.c mfd: Kill off set_irq_flags usage 2015-08-11 15:09:01 +01:00
tps65010.c mfd: tps65010: Remove incorrect __exit markups 2015-04-09 10:26:40 +01:00
tps65090.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
tps65217.c mfd: tps65217: Add battery charger as subdevice 2015-10-26 14:49:08 +00:00
tps65218.c mfd: Export OF module alias information in missing drivers 2015-08-11 15:09:10 +01:00
tps65910.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
tps65911-comparator.c mfd: drop owner assignment from platform_drivers 2014-10-20 16:20:53 +02:00
tps65912-core.c mfd: Delete non-required instances of include <linux/init.h> 2014-03-19 08:58:07 +00:00
tps65912-i2c.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
tps65912-irq.c mfd: Kill off set_irq_flags usage 2015-08-11 15:09:01 +01:00
tps65912-spi.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
tps80031.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
twl4030-audio.c mfd: drop owner assignment from platform_drivers 2014-10-20 16:20:53 +02:00
twl4030-irq.c mfd: Kill off set_irq_flags usage 2015-08-11 15:09:01 +01:00
twl4030-power.c mfd: twl4030-power: Fix pmic for boards that need AC charger disabled 2015-06-22 12:25:04 +01:00
twl6030-irq.c mfd: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc 2015-08-11 15:09:06 +01:00
twl6040.c mfd: twl6040: Fix deferred probe handling for clk32k 2015-10-26 14:48:56 +00:00
twl-core.c twl4030_charger: use runtime_pm to keep usb phy active while charging. 2015-08-05 05:10:06 +02:00
twl-core.h
ucb1x00-assabet.c
ucb1x00-core.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
ucb1x00-ts.c
ucb1400_core.c
vexpress-sysreg.c mfd: vexpress: Remove non-DT code 2015-03-03 16:41:14 +00:00
viperboard.c mfd: Use mfd_add_hotplug_devices() helper 2014-11-25 16:18:42 +00:00
vx855.c mfd: Remove DEFINE_PCI_DEVICE_TABLE macro 2014-01-21 08:27:45 +00:00
wl1273-core.c
wm831x-auxadc.c mfd: wm831x-auxadc: Pass the IRQF_ONESHOT flag 2015-06-22 12:25:25 +01:00
wm831x-core.c mfd: wm831x: Fix possible NULL pointer dereference 2015-10-26 14:49:04 +00:00
wm831x-i2c.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
wm831x-irq.c mfd: Kill off set_irq_flags usage 2015-08-11 15:09:01 +01:00
wm831x-otp.c
wm831x-spi.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
wm5102-tables.c sound updates for 4.3-rc1 2015-09-04 11:46:02 -07:00
wm5110-tables.c mfd: arizona: Add register bits to support the ANC block 2015-10-26 14:49:06 +00:00
wm8350-core.c mfd: wm8350-core: Pass the IRQF_ONESHOT flag 2015-06-22 12:25:26 +01:00
wm8350-gpio.c
wm8350-i2c.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
wm8350-irq.c mfd: Kill off set_irq_flags usage 2015-08-11 15:09:01 +01:00
wm8350-regmap.c
wm8400-core.c mfd: Drop owner assignment from i2c_drivers 2015-08-11 15:08:48 +01:00
wm8994-core.c sound updates for 4.3-rc1 2015-09-04 11:46:02 -07:00
wm8994-irq.c mfd: wm8994: Fix NULL pointer exception on missing pdata 2015-08-11 15:09:13 +01:00
wm8994-regmap.c mfd: wm8994-regmap: Constify reg_default tables 2015-08-11 15:08:47 +01:00
wm8994.h
wm8997-tables.c sound updates for 4.3-rc1 2015-09-04 11:46:02 -07:00
wm8998-tables.c mfd: wm8998: Fixup register defaults/readables 2015-10-26 14:49:07 +00:00