linux/arch/arm/mach-imx
Martin Kaiser 9b454d16e5 ARM: imx: avic: set low-power interrupt mask for imx25
imx25 contains two registers (LPIMR0 and 1) to define which interrupts
are enabled in low-power mode. As of today, those two registers are
configured to enable all interrupts. Before going to low-power mode, the
AVIC's INTENABLEH and INTENABLEL registers are configured to enable only
those interrupts which are used as wakeup sources.

It turned out that this approach is not sufficient if we want the imx25
to go into stop mode during suspend-to-ram. (Stop mode is the low-power
mode that consumes the least power. The peripheral master clock is
switched off in this mode). For stop mode to work, the LPIMR0 and 1
registers have to be configured with the set of interrupts that are
allowed in low-power mode. Fortunately, the bits in the LPIMR registers
are assigned to the same interrupts as the bits in INTENABLEH and
INTENABLEL. However, LPIMR uses 1 to mask an interrupt whereas the
INTENABLE registers use 1 to enable an interrupt.

This patch sets the LPIMR registers to the inverted bitmask of the
INTENABLE registers during suspend and goes back to "all interrupts
masked" when we wake up again. We also make this the default at startup.

As far as I know, the other supported imx architectures have no similar
mechanism. Since the LPIMR registers are part of the CCM module, we
query the device tree for an imx25 ccm node in order to detect if we're
running on imx25.

Signed-off-by: Martin Kaiser <martin@kaiser.cx>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
2018-02-28 08:55:01 +08:00
..
devices License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
3ds_debugboard.c ARM: imx: 3ds-debugboard: Include "3ds_debugboard.h" header file 2017-10-13 14:44:02 +08:00
3ds_debugboard.h
anatop.c ARM: imx: Improve the soc revision calculation flow 2018-02-12 13:13:02 +08:00
avic.c ARM: imx: avic: set low-power interrupt mask for imx25 2018-02-28 08:55:01 +08:00
board-mx31lilly.h
board-mx31lite.h
board-mx31moboard.h
common.h ARM: imx: remove unused imx3 pm definitions 2017-12-26 16:30:20 +08:00
cpu-imx5.c ARM: imx: remove last call to cpu_is_mx5* 2016-06-28 10:26:42 +08:00
cpu-imx25.c ARM: mx25: Retrieve IIM base from dt 2015-03-13 22:06:35 +08:00
cpu-imx27.c ARM: imx: use endian-safe readl/readw/writel/writew 2016-02-02 13:24:17 +08:00
cpu-imx31.c ARM: imx: use endian-safe readl/readw/writel/writew 2016-02-02 13:24:17 +08:00
cpu-imx35.c ARM: imx: use endian-safe readl/readw/writel/writew 2016-02-02 13:24:17 +08:00
cpu.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
cpuidle-imx5.c ARM: imx: cpuidle-imx5: Include "cpuidle.h" header file 2017-10-13 14:44:05 +08:00
cpuidle-imx6q.c ARM: imx: rename imx6q_set_int_mem_clk_lpm() function 2016-08-29 22:39:27 +08:00
cpuidle-imx6sl.c ARM: imx6: set initial power mode in pm function 2015-06-03 14:44:31 +08:00
cpuidle-imx6sx.c ARM: imx: add timer stop flag to ARM power off state 2018-02-12 13:13:02 +08:00
cpuidle.h ARM: imx: support arm power off in cpuidle for i.mx6sx 2015-01-05 21:34:29 +08:00
crmregs-imx3.h
devices-imx21.h ARM: imx: move platform device code into mach-imx 2012-10-15 09:18:15 +08:00
devices-imx27.h ARM : i.MX27 : split code for allocation of ressources of camera and eMMA 2012-11-16 16:21:48 +01:00
devices-imx31.h ARM: imx: move platform device code into mach-imx 2012-10-15 09:18:15 +08:00
devices-imx35.h ARM: imx: prepare for removal of flexcan_platform_data 2013-06-27 15:15:08 +02:00
ehci-imx27.c ARM: imx: move EHCI platform defines out of platform_data header 2014-07-18 16:10:04 +08:00
ehci-imx31.c ARM: imx: move EHCI platform defines out of platform_data header 2014-07-18 16:10:04 +08:00
ehci-imx35.c ARM: imx: move EHCI platform defines out of platform_data header 2014-07-18 16:10:04 +08:00
ehci.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
gpc.c ARM: Convert to using %pOF instead of full_name 2017-08-16 22:25:30 +02:00
hardware.h ARM: imx: (trivial) fix typo and grammar 2016-09-05 10:36:19 +08:00
headsmp.S ARM: imx: enable big endian mode 2016-02-02 13:31:19 +08:00
hotplug.c ARM: imx: do not return from imx_cpu_die() call 2013-10-21 09:37:31 +08:00
iim.h ARM: imx: include iim.h rather than mach/iim.h 2012-10-15 10:03:10 +08:00
imx27-dt.c ARM: imx: rework mx27_pm_init() call 2016-06-28 10:26:40 +08:00
imx31-dt.c ARM: clk: imx31: properly init clocks for machines with DT 2016-11-01 16:44:46 +08:00
imx35-dt.c ARM: i.MX: Do not explicitly call l2x0_of_init() 2016-06-21 20:40:47 +08:00
iomux-imx31.c ARM: imx: use endian-safe readl/readw/writel/writew 2016-02-02 13:24:17 +08:00
iomux-mx2x.h ARM: imx: move iomux drivers and headers into mach-imx 2012-10-15 09:18:14 +08:00
iomux-mx3.h ARM: i.MX31 iomux: remove duplicates with alternate name 2016-08-08 21:41:17 +08:00
iomux-mx21.h ARM: imx: move iomux drivers and headers into mach-imx 2012-10-15 09:18:14 +08:00
iomux-mx27.h ARM: imx: move iomux drivers and headers into mach-imx 2012-10-15 09:18:14 +08:00
iomux-mx35.h ARM: imx: move iomux drivers and headers into mach-imx 2012-10-15 09:18:14 +08:00
iomux-v1.c ARM: imx: use endian-safe readl/readw/writel/writew 2016-02-02 13:24:17 +08:00
iomux-v1.h ARM: imx: move iomux drivers and headers into mach-imx 2012-10-15 09:18:14 +08:00
iomux-v3.c ARM: imx: use endian-safe readl/readw/writel/writew 2016-02-02 13:24:17 +08:00
iomux-v3.h ARM: imx: Fix trivial typo in comments 2015-03-03 12:05:46 +08:00
irq-common.c ARM: i.MX: Fix FIQ interrupt handling for TZIC 2016-06-21 15:57:05 +08:00
irq-common.h ARM: imx: drop support for irq priorisation 2013-12-09 13:18:25 +08:00
Kconfig ARM: imx: Remove epit support 2018-02-12 13:13:02 +08:00
mach-armadillo5x0.c ARM: imx legacy: armadillo5x0: move peripheral initialization to .init_late 2016-09-20 22:35:08 +08:00
mach-bug.c ARM: i.MX: Setup IRQ handler from IRQ driver 2014-05-12 22:58:51 +08:00
mach-imx1.c ARM: i.MX: remove map_io callback 2017-01-02 14:02:09 +08:00
mach-imx6q.c cpufreq: imx6q: Move speed grading check to cpufreq driver 2017-10-18 10:08:21 +08:00
mach-imx6sl.c ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-imx6sx.c ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-imx6ul.c ARM: imx: mach-imx6ul: add imx6ull support 2016-11-15 08:58:43 +08:00
mach-imx7d.c ARM: SoC platform updates for v4.8 2016-08-01 18:27:08 -04:00
mach-imx25.c ARM: i.MX25: globally disable supervisor protect 2017-04-04 21:11:16 +08:00
mach-imx27_visstrim_m10.c dma-coherent: remove the DMA_MEMORY_MAP and DMA_MEMORY_IO flags 2017-09-01 11:59:17 +02:00
mach-imx50.c ARM: imx: Use IRQCHIP_DECLARE for TZIC 2016-06-12 19:47:18 +08:00
mach-imx51.c ARM: SoC platform updates for v4.8 2016-08-01 18:27:08 -04:00
mach-imx53.c ARM: SoC cleanups for v4.8 2016-08-01 18:21:13 -04:00
mach-kzm_arm11_01.c ARM: SoC platform updates for v4.9 2016-10-07 21:18:42 -07:00
mach-ls1021a.c ARM: imx: Add Freescale LS1021A SMP support 2014-11-23 14:56:21 +08:00
mach-mx21ads.c ARM: imx legacy: mx21ads: move peripheral initialization to .init_late 2016-09-20 22:39:06 +08:00
mach-mx27_3ds.c ARM: mach-mx27_3ds: Remove camera support 2017-01-03 13:52:38 +08:00
mach-mx27ads.c ARM: imx legacy: mx27ads: move peripheral initialization to .init_late 2016-09-20 22:39:07 +08:00
mach-mx31_3ds.c ARM: imx: set correct chip_select in platform setup 2017-03-20 15:38:56 +08:00
mach-mx31ads.c ARM: imx legacy: mx31ads: move peripheral initialization to .init_late 2016-09-20 22:34:51 +08:00
mach-mx31lilly.c ARM: imx legacy: mx31lilly: move peripheral initialization to .init_late 2016-09-20 22:34:54 +08:00
mach-mx31lite.c ARM: imx: mach-mx31lite: Make mx31lite_map_io static 2017-10-13 14:44:08 +08:00
mach-mx31moboard.c ARM: imx: mx31moboard: Remove unused 'dma' variable 2017-09-04 17:33:11 +02:00
mach-mx35_3ds.c ARM: mach-mx35_3ds: Remove camera support 2017-01-03 13:52:31 +08:00
mach-pca100.c ARM: imx legacy: pca100: move peripheral initialization to .init_late 2016-09-20 22:39:07 +08:00
mach-pcm037_eet.c ARM: imx: set correct chip_select in platform setup 2017-03-20 15:38:56 +08:00
mach-pcm037.c ARM: mach-pcm037: Remove camera support 2017-01-03 13:52:34 +08:00
mach-pcm043.c ARM: imx legacy: pcm043: move peripheral initialization to .init_late 2016-09-20 22:39:06 +08:00
mach-qong.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
mach-vf610.c ARM: vf610: enable Cortex-M4 configuration on Vybrid SoC 2015-05-20 23:10:14 +02:00
mach-vpr200.c ARM: imx legacy: vpr200: move peripheral initialization to .init_late 2016-09-20 22:35:14 +08:00
Makefile ARM: imx: Remove epit support 2018-02-12 13:13:02 +08:00
Makefile.boot ARM: vf610: enable Cortex-M4 configuration on Vybrid SoC 2015-05-20 23:10:14 +02:00
mm-imx3.c ARM: imx: deconstruct mx3_idle 2016-06-28 10:26:37 +08:00
mm-imx21.c ARM: imx: move clk_prepare() out from mxc_restart() 2013-06-17 15:45:10 +08:00
mm-imx27.c ARM: imx: rework mx27_pm_init() call 2016-06-28 10:26:40 +08:00
mmdc.c ARM: imx: don't abort MMDC probe if power saving status doesn't match 2017-12-26 16:25:25 +08:00
mx2x.h ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
mx3x.h ARM: imx: move revision definitions and declarations into a header 2015-06-03 14:44:30 +08:00
mx21.h ARM: imx: include hardware.h rather than mach/hardware.h 2012-10-15 10:05:43 +08:00
mx27.h ARM: imx: move revision definitions and declarations into a header 2015-06-03 14:44:30 +08:00
mx31.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mx31lilly-db.c ARM: imx legacy: mx31lilly: move peripheral initialization to .init_late 2016-09-20 22:34:54 +08:00
mx31lite-db.c ARM: imx legacy: mx31lite: move peripheral initialization to .init_late 2016-09-20 22:34:47 +08:00
mx31moboard-devboard.c ARM: imx: imx31moboard: Include "board-mx31moboard.h" header file 2017-10-13 14:43:56 +08:00
mx31moboard-marxbot.c ARM: imx: imx31moboard: Include "board-mx31moboard.h" header file 2017-10-13 14:43:56 +08:00
mx31moboard-smartbot.c ARM: mx31moboard-smartbot: Remove camera support 2017-01-03 13:52:28 +08:00
mx35.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mxc.h ARM: imx: Add MXC_CPU_IMX6ULL and cpu_is_imx6ull 2017-06-07 11:38:15 +08:00
pcm037.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
platsmp.c ARM: 8641/1: treewide: Replace uses of virt_to_phys with __pa_symbol 2017-02-28 11:06:10 +00:00
pm-imx5.c ARM: imx: use endian-safe readl/readw/writel/writew 2016-02-02 13:24:17 +08:00
pm-imx6.c ARM: imx6ull: Make suspend/resume work like on 6ul 2017-06-07 11:38:40 +08:00
pm-imx25.c ARM: mx25: Add basic suspend/resume support 2016-02-14 11:24:18 +08:00
pm-imx27.c ARM: imx: rework mx27_pm_init() call 2016-06-28 10:26:40 +08:00
src.c ARM: 8641/1: treewide: Replace uses of virt_to_phys with __pa_symbol 2017-02-28 11:06:10 +00:00
ssi-fiq-ksym.c Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
ssi-fiq.S Revert "arm: move exports to definitions" 2016-11-23 10:00:03 +00:00
suspend-imx6.S ARM: imx: add suspend/resume support for i.mx6ul 2015-09-17 08:54:35 +08:00
suspend-imx53.S ARM: imx53: Set DDR pins to high impedance when in suspend to RAM. 2015-06-03 14:49:36 +08:00
system.c ARM: imx: remove cpu_is_mx1 check 2016-06-28 10:26:20 +08:00
tzic.c ARM: SoC platform updates for v4.8 2016-08-01 18:27:08 -04:00
ulpi.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00