linux/arch/arm/mach-omap2
Santosh Shilimkar 7abdb0e23e ARM: OMAP5: Add basic cpuidle MPU CSWR support
Add OMAP5 CPUIDLE support.

This patch adds MPUSS low power states in cpuidle.

        C1 - CPU0 WFI + CPU1 WFI + MPU ON
        C2 - CPU0 RET + CPU1 RET + MPU CSWR

Modified from TI kernel tree commit 605967fd2205 ("ARM: DRA7: PM:
cpuidle MPU CSWR support") except enable cpuidle for omap5 instead
of dra7.

According to Nishanth Menon <nm@ti.com>, cpuidle on dra7 is not
supported properly in the hardware so we don't want to enable it.
However, for omap5 this adds some nice power savings. Note that
the TI 3.8 based tree has other cpuidle states that we may be able
to enable later on.

On omap5-uevm, the power consumption eventually settles down to about
920mW with ehci-omap and ohci-omap3 unloaded compared to about 1.7W
without these patches. Note that it seems to take few minutes after
booting for the idle power to go down to 920mW from 1.3W, no idea so
far what might be causing that.

Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
[ j-keerthy@ti.com rework on 3.14]
Signed-off-by: Keerthy <j-keerthy@ti.com>
[nm@ti.com: updates based on profiling]
[tony@atomide.com: dropped CPUIDLE_FLAG_TIME_VALID no longer used,
changed for omap5 only as requested by Nishanth, updated comments]
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
2016-11-07 16:52:14 -07:00
..
include/mach ARM: omap2: restore OMAP4 barrier behaviour 2015-07-25 15:28:16 +01:00
am33xx-restart.c
am33xx.h
board-flash.c ARM: OMAP2+: use IS_ENABLED() instead of checking for built-in or module 2016-08-26 08:42:35 -07:00
board-flash.h ARM: OMAP2+: use IS_ENABLED() instead of checking for built-in or module 2016-08-26 08:42:35 -07:00
board-generic.c ARM: OMAP2+: Set system_rev from ATAGS for n900 2016-02-10 16:17:15 -08:00
board-n8x0.c ARM: OMAP2+: use IS_ENABLED() instead of checking for built-in or module 2016-08-26 08:42:35 -07:00
clkt2xxx_dpll.c
clkt2xxx_dpllcore.c
clkt2xxx_virt_prcm_set.c ARM: omap2: use clkdev_create() 2015-05-06 11:58:58 +01:00
clock2xxx.h ARM: OMAP2: clock: remove unused apll code 2015-01-07 10:54:40 -08:00
clock3xxx.h
clock.c clk: ti: omap5+: dpll: implement errata i810 2015-11-30 11:34:17 -08:00
clock.h clk: ti: move low-level access and init code under clock driver 2015-06-02 12:31:46 +03:00
clockdomain.c ARM: OMAP2+: clockdomain: add usecounting support to autoidle APIs 2016-07-04 07:15:38 -07:00
clockdomain.h ARM: OMAP2+: clockdomain: add usecounting support to autoidle APIs 2016-07-04 07:15:38 -07:00
clockdomains2xxx_3xxx_data.c
clockdomains3xxx_data.c
clockdomains7xx_data.c ARM: DRA7: clockdomain: Implement timer workaround for errata i874 2016-04-10 11:43:57 -06:00
clockdomains33xx_data.c
clockdomains43xx_data.c
clockdomains44xx_data.c
clockdomains54xx_data.c
clockdomains81xx_data.c ARM: OMAP2+: Update 81xx clock and power domains for default, active and sgx 2015-12-22 16:23:08 -08:00
clockdomains2420_data.c
clockdomains2430_data.c
cm1_7xx.h
cm1_44xx.h
cm1_54xx.h
cm2_7xx.h
cm2_44xx.h
cm2_54xx.h
cm2xxx_3xxx.h
cm2xxx.c ARM: OMAP2+: CM: move SoC specific init calls within a generic API 2015-03-31 21:26:50 +03:00
cm2xxx.h ARM: OMAP2+: CM: move SoC specific init calls within a generic API 2015-03-31 21:26:50 +03:00
cm3xxx.c ARM: OMAP2+: Fix typo in cm3xxx.c 2016-06-10 04:14:37 -07:00
cm3xxx.h ARM: OMAP2+: CM: move SoC specific init calls within a generic API 2015-03-31 21:26:50 +03:00
cm33xx.c ARM: OMAP4+: CM: Remove redundant checks for clkctrl_offs of zero 2016-07-22 23:10:57 -07:00
cm33xx.h ARM: OMAP2+: CM: move SoC specific init calls within a generic API 2015-03-31 21:26:50 +03:00
cm44xx.h ARM: OMAP2+: CM: move SoC specific init calls within a generic API 2015-03-31 21:26:50 +03:00
cm81xx.h ARM: OMAP2+: Update 81xx clock and power domains for default, active and sgx 2015-12-22 16:23:08 -08:00
cm_common.c ARM: OMAP2+: clock: add low-level support for regmap 2015-03-31 21:26:55 +03:00
cm-regbits-7xx.h
cm-regbits-24xx.h
cm-regbits-33xx.h
cm-regbits-34xx.h
cm-regbits-44xx.h
cm-regbits-54xx.h
cm.h ARM: OMAP2+: CM: determine CM base address from device tree 2015-03-27 10:55:57 +02:00
cminst44xx.c ARM: OMAP4+: CM: Remove redundant checks for clkctrl_offs of zero 2016-07-22 23:10:57 -07:00
common-board-devices.c ARM: OMAP2+: use IS_ENABLED() instead of checking for built-in or module 2016-08-26 08:42:35 -07:00
common-board-devices.h
common.c Revert "ARM: OMAP4: remove dead kconfig option OMAP4_ERRATA_I688" 2015-07-25 15:28:14 +01:00
common.h ARM: OMAP5: Fix mpuss_early_init 2016-11-07 16:51:58 -07:00
control.c ARM: OMAP2+: Fix out of range register access with syscon_config.max_register 2016-02-22 09:22:38 -08:00
control.h ARM: OMAP3: Add support for configuring MMC pins as GPIO pins 2015-05-20 09:23:43 -07:00
cpuidle34xx.c ARM: OMAP3: Add cpuidle parameters table for omap3430 2016-02-19 10:35:39 -08:00
cpuidle44xx.c ARM: OMAP5: Add basic cpuidle MPU CSWR support 2016-11-07 16:52:14 -07:00
ctrl_module_wkup_44xx.h
devices.c ARM: OMAP2+: use IS_ENABLED() instead of checking for built-in or module 2016-08-26 08:42:35 -07:00
display.c ARM: OMAP2: Use the platform_data header for omapdss 2016-06-03 16:01:01 +03:00
display.h ARM/video: omap2: Move omap_display_init declaration to mach-omap2/display.h 2016-06-03 16:00:31 +03:00
dma.c ARM: OMAP2+: DMA: Provide dma_slave_map to omap-dma for legacy boot 2016-02-22 10:00:50 -08:00
drm.c ARM: OMAP2+: use IS_ENABLED() instead of checking for built-in or module 2016-08-26 08:42:35 -07:00
dss-common.c ARM: OMAP2: Use the platform_data header for omapdss 2016-06-03 16:01:01 +03:00
dss-common.h
fb.c ARM: OMAP2+: use IS_ENABLED() instead of checking for built-in or module 2016-08-26 08:42:35 -07:00
gpio.c
gpmc-nand.c mtd: nand: omap: Clean up device tree support 2016-04-15 11:53:36 +03:00
gpmc-onenand.c ARM: OMAP2+: Fix onenand initialization to avoid filesystem corruption 2016-02-22 09:24:10 -08:00
gpmc-smsc911x.c
gpmc-smsc911x.h ARM: OMAP2+: use IS_ENABLED() instead of checking for built-in or module 2016-08-26 08:42:35 -07:00
gpmc.h
hdq1w.c
hdq1w.h
hsmmc.c ARM: OMAP2+: use IS_ENABLED() instead of checking for built-in or module 2016-08-26 08:42:35 -07:00
hsmmc.h ARM: OMAP2+: use IS_ENABLED() instead of checking for built-in or module 2016-08-26 08:42:35 -07:00
i2c.c
i2c.h
id.c Revert "ARM: OMAP: Catch callers of revision information prior to it being populated" 2016-04-19 08:01:05 -07:00
id.h
io.c ARM: OMAP5: Fix mpuss_early_init 2016-11-07 16:51:58 -07:00
iomap.h ARM: DRA7: Provide proper IO map table 2015-07-16 00:06:05 -07:00
Kconfig Remove the last two legacy board-*.c files for omap3 for legacy 2016-09-02 18:30:29 +02:00
l3_2xxx.h
l3_3xxx.h
l4_2xxx.h
l4_3xxx.h
Makefile ARM: OMAP5: Fix build for PM code 2016-11-07 16:50:10 -07:00
mcbsp.c ARM: OMAP2+: McBSP: Remove the old iclk allow/deny idle code 2016-06-10 05:07:25 -07:00
mmc.h ARM: OMAP2: MMC: include mmc-omap platform header directly 2014-11-26 14:30:53 +01:00
msdi.c
mux34xx.c ARM: OMAP2+: Fix typo in mux34xx.c 2016-06-10 04:15:33 -07:00
mux34xx.h
mux.c ARM: OMAP2+: remove superfluous NULL pointer check 2015-03-26 10:33:25 -07:00
mux.h
omap2-restart.c ARM: OMAP2+: Change core_initcall levels to postcore_initcall 2015-12-03 11:38:09 -08:00
omap3-restart.c ARM: OMAP2+: sparse: add missing function declarations 2015-07-15 23:43:41 -06:00
omap4-common.c ARM: OMAP4+: Initialize SAR RAM base early for proper CPU1 reset for kexec 2016-06-22 22:55:47 -07:00
omap4-restart.c ARM: OMAP2+: sparse: add missing function declarations 2015-07-15 23:43:41 -06:00
omap4-sar-layout.h ARM: OMAP5: Fix mpuss_early_init 2016-11-07 16:51:58 -07:00
omap24xx.h
omap34xx.h [media] omap3isp: Replace many MMIO regions by two 2015-04-02 16:45:07 -03:00
omap44xx.h
omap54xx.h ARM: DRA7: Provide proper IO map table 2015-07-16 00:06:05 -07:00
omap_device.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-08-03 07:26:11 -04:00
omap_device.h
omap_hwmod_2xxx_3xxx_interconnect_data.c
omap_hwmod_2xxx_3xxx_ipblock_data.c
omap_hwmod_2xxx_interconnect_data.c
omap_hwmod_2xxx_ipblock_data.c ARM: OMAP2+: sparse: add missing static declaration 2015-07-15 23:42:12 -06:00
omap_hwmod_3xxx_data.c ARM: OMAP3: hwmod data: Add sysc information for DSI 2016-07-22 23:05:34 -07:00
omap_hwmod_7xx_data.c ARM: DRA7: hwmod: remove DSS addresses from hwmod 2016-06-10 05:10:52 -07:00
omap_hwmod_33xx_43xx_common_data.h ARM: AM335x/AM437x: hwmod: Remove eQEP, ePWM and eCAP hwmod entries 2016-06-10 05:02:34 -07:00
omap_hwmod_33xx_43xx_interconnect_data.c ARM: AM335x/AM437x: hwmod: Remove eQEP, ePWM and eCAP hwmod entries 2016-06-10 05:02:34 -07:00
omap_hwmod_33xx_43xx_ipblock_data.c ARM: OMAP2+: AM33XX: Add HWMOD_OMAP4_ZERO_CLKCTRL_OFFSET flag to rtc hwmod 2016-07-22 23:09:42 -07:00
omap_hwmod_33xx_data.c ARM: AM335x/AM437x: hwmod: Remove eQEP, ePWM and eCAP hwmod entries 2016-06-10 05:02:34 -07:00
omap_hwmod_43xx_data.c ARM: AM335x/AM437x: hwmod: Remove eQEP, ePWM and eCAP hwmod entries 2016-06-10 05:02:34 -07:00
omap_hwmod_44xx_data.c ARM: omap4: hwmod: Remove elm address space from hwmod data 2015-11-30 13:18:37 -08:00
omap_hwmod_54xx_data.c ARM: OMAP: Remove duplicated operand in OR operation 2015-10-20 01:29:40 -06:00
omap_hwmod_81xx_data.c ARM: OMAP: make ti81xx_rtc_hwmod static 2016-06-22 03:05:18 -07:00
omap_hwmod_2420_data.c
omap_hwmod_2430_data.c ARM: OMAP1/2+: MMC: separate platform data for mmc and mmc hs driver 2014-11-26 14:30:53 +01:00
omap_hwmod_common_data.c
omap_hwmod_common_data.h
omap_hwmod_common_ipblock_data.c
omap_hwmod_reset.c ARM: OMAP2+: hwmod: RTC: Add lock and unlock functions 2016-04-10 13:20:10 -06:00
omap_hwmod.c ARM: OMAP4+: Have _omap4_wait_target_* check for valid clkctrl_offs 2016-07-22 23:10:15 -07:00
omap_hwmod.h ARM: OMAP4+: hwmod: Add hwmod flag for HWMOD_OMAP4_ZERO_CLKCTRL_OFFSET 2016-07-22 23:08:58 -07:00
omap_opp_data.h
omap_phy_internal.c ARM: OMAP2+: Remove unused ti81xx platform init code 2015-01-14 17:21:00 -08:00
omap_twl.c
omap-headsmp.S ARM: OMAP2+: Fix build if CONFIG_SMP is not set 2016-06-27 23:30:02 -07:00
omap-hotplug.c ARM: OMAP4+: Allow kexec on SMP variants 2016-06-22 22:57:02 -07:00
omap-mpuss-lowpower.c ARM: OMAP4+: Fix bad fallthrough for cpuidle 2016-11-07 16:52:05 -07:00
omap-pm-noop.c ARM: OMAP2+: omap-pm-noop.c: Remove some unused functions 2015-01-07 09:53:51 -08:00
omap-pm.h ARM: OMAP2+: omap-pm-noop.c: Remove some unused functions 2015-01-07 09:53:51 -08:00
omap-secure.c
omap-secure.h ARM: OMAP5 / DRA7: Introduce workaround for 801819 2016-05-12 10:14:54 -07:00
omap-smc.S
omap-smp.c ARM: OMAP2+: clockdomain: add usecounting support to autoidle APIs 2016-07-04 07:15:38 -07:00
omap-wakeupgen.c ARM/OMAP/wakeupgen: Convert to hotplug state machine 2016-09-19 21:44:26 +02:00
omap-wakeupgen.h ARM: omap: convert wakeupgen to stacked domains 2015-03-15 00:56:13 +00:00
opp2xxx.h
opp3xxx_data.c
opp4xxx_data.c
opp2420_data.c
opp2430_data.c ARM: Show proper respect for Heinrich Hertz by using the correct unit for frequency 2015-05-14 16:22:05 +01:00
opp.c
pdata-quirks.c ARM: SoC driver updates for v4.8 2016-08-01 18:36:01 -04:00
pm24xx.c ARM: OMAP2+: Include clk.h 2015-07-20 10:52:36 -07:00
pm34xx.c ARM: OMAP3: Fix external abort on 36xx waking from off mode idle 2016-04-14 08:27:30 -07:00
pm44xx.c ARM: OMAP5: Add basic cpuidle MPU CSWR support 2016-11-07 16:52:14 -07:00
pm-debug.c
pm.c ARM: OMAP2+: clockdomain: add usecounting support to autoidle APIs 2016-07-04 07:15:38 -07:00
pm.h ARM: OMAP4+: PM: erratum is used by OMAP5 and DRA7 as well 2015-09-14 12:14:47 -07:00
pmu.c ARM: OMAP2+: Remove calls to deprecacted marco,PTR_RET in the files,fb.c and pmu.c 2015-05-20 10:43:37 -07:00
powerdomain-common.c
powerdomain.c ARM: SoC platform updates for v4.8 2016-08-01 18:27:08 -04:00
powerdomain.h ARM: OMAP2+: powerdomain.c: Remove some unused functions 2015-01-07 09:53:51 -08:00
powerdomains2xxx_3xxx_data.c
powerdomains2xxx_3xxx_data.h
powerdomains2xxx_data.c
powerdomains3xxx_data.c ARM: OMAP2+: Update 81xx clock and power domains for default, active and sgx 2015-12-22 16:23:08 -08:00
powerdomains7xx_data.c ARM: OMAP: DRA7: powerdomain data: Remove unused pwrsts_mem_ret 2016-06-13 01:04:01 -07:00
powerdomains33xx_data.c
powerdomains43xx_data.c
powerdomains44xx_data.c
powerdomains54xx_data.c
prcm43xx.h ARM: AM43XX: hwmod: Fix RSTST register offset for pruss 2016-06-22 02:55:44 -07:00
prcm44xx.h
prcm_mpu7xx.h
prcm_mpu44xx.c
prcm_mpu44xx.h
prcm_mpu54xx.h
prcm_mpu_44xx_54xx.h
prcm-common.h Merge branch 'dm814x-soc' into omap-for-v4.3/soc 2015-07-23 21:59:18 -07:00
prm2xxx_3xxx.c
prm2xxx_3xxx.h
prm2xxx.c ARM: OMAP2+: PRM: move SoC specific init calls within a generic API 2015-03-31 21:26:36 +03:00
prm2xxx.h ARM: OMAP2+: PRM: move SoC specific init calls within a generic API 2015-03-31 21:26:36 +03:00
prm3xxx.c ARM: OMAP2+: PRM: move SoC specific init calls within a generic API 2015-03-31 21:26:36 +03:00
prm3xxx.h ARM: OMAP2+: PRM: move SoC specific init calls within a generic API 2015-03-31 21:26:36 +03:00
prm7xx.h ARM: DRA7: hwmod: Add reset data for PCIe 2016-02-09 02:18:52 -07:00
prm33xx.c ARM: OMAP2+: PRM: move SoC specific init calls within a generic API 2015-03-31 21:26:36 +03:00
prm33xx.h ARM: dts: am43xx: Remove wrongly defined RSTST offset for PER Domain 2016-06-22 03:33:25 -07:00
prm44xx_54xx.h ARM: OMAP2+: PRM: move SoC specific init calls within a generic API 2015-03-31 21:26:36 +03:00
prm44xx.c ARM: OMAP4+: PRM: Add AM437x specific data 2015-07-23 06:08:24 -06:00
prm44xx.h ARM: OMAP2+: PRM: move SoC specific init calls within a generic API 2015-03-31 21:26:36 +03:00
prm54xx.h ARM: OMAP2+: PRM: move SoC specific init calls within a generic API 2015-03-31 21:26:36 +03:00
prm_common.c ARM: OMAP2+: Fix randconfig build warning for dm814_pllss_data 2015-12-22 17:01:02 -08:00
prm-regbits-24xx.h
prm-regbits-33xx.h
prm-regbits-34xx.h ARM: OMAP2+: Fix omap off idle power consumption creeping up 2015-05-04 08:54:41 -07:00
prm-regbits-44xx.h ARM: OMAP2+: Fix omap off idle power consumption creeping up 2015-05-04 08:54:41 -07:00
prm.h ARM: OMAP4+: PRM: get rid of cpu_is_omap44xx calls from interrupt init 2015-03-31 21:26:53 +03:00
prminst44xx.c ARM: OMAP4+: PRM: add support for passing status register/bit info to reset 2015-05-08 13:05:15 -06:00
prminst44xx.h ARM: OMAP4+: PRM: determine prm_device_inst based on DT compatibility 2015-03-31 21:26:44 +03:00
scrm44xx.h
scrm54xx.h
sdram-hynix-h8mbx00u0mer-0em.h
sdram-micron-mt46h32m32lf-6.h
sdram-nokia.c
sdram-nokia.h
sdram-numonyx-m65kxxxxam.h
sdram-qimonda-hyb18m512160af-6.h
sdrc2xxx.c ARM: Show proper respect for Heinrich Hertz by using the correct unit for frequency 2015-05-14 16:22:05 +01:00
sdrc.c
sdrc.h ARM: OMAP2+: Fix typo in sdrc.h 2016-06-10 04:17:07 -07:00
serial.c ARM: OMAP: serial: Rename DRIVER_NAME 2016-02-06 23:13:30 -08:00
serial.h
sleep24xx.S
sleep34xx.S ARM: OMAP2+: Fix l2_inv_api_params for rodata 2016-01-22 08:26:08 -08:00
sleep44xx.S ARM: OMAP2+: Fix ppa_zero_params and ppa_por_params for rodata 2016-01-22 08:26:08 -08:00
smartreflex-class3.c
soc.h ARM: SoC platform updates for v4.7 2016-05-18 12:35:46 -07:00
sr_device.c
sram242x.S ARM: Show proper respect for Heinrich Hertz by using the correct unit for frequency 2015-05-14 16:22:05 +01:00
sram243x.S ARM: Show proper respect for Heinrich Hertz by using the correct unit for frequency 2015-05-14 16:22:05 +01:00
sram.c ARM: OMAP3: clock: remove un-used core dpll re-program code 2015-10-14 12:35:27 -07:00
sram.h ARM: OMAP3: clock: remove un-used core dpll re-program code 2015-10-14 12:35:27 -07:00
ti81xx-restart.c ARM: OMAP2+: Fix reboot for 81xx 2015-01-14 17:37:16 -08:00
ti81xx.h
timer.c ARM: SoC platform updates for v4.8 2016-08-01 18:27:08 -04:00
twl-common.c ARM: OMAP2+: use IS_ENABLED() instead of checking for built-in or module 2016-08-26 08:42:35 -07:00
twl-common.h
usb-host.c
usb-musb.c ARM: OMAP2+: Remove unused ti81xx platform init code 2015-01-14 17:21:00 -08:00
usb-tusb6010.c ARM OMAP2+ GPMC: calculate GPMCFCLKDIVIDER based on WAITMONITORINGTIME 2015-03-06 12:39:48 +02:00
usb.h ARM: OMAP2+: Remove unused ti81xx platform init code 2015-01-14 17:21:00 -08:00
vc3xxx_data.c ARM: OMAP2+: Fix omap off idle power consumption creeping up 2015-05-04 08:54:41 -07:00
vc44xx_data.c ARM: OMAP2+: Fix omap off idle power consumption creeping up 2015-05-04 08:54:41 -07:00
vc.c ARM: OMAP3: vc: Remove unused macros 2015-10-12 10:56:36 -07:00
vc.h ARM: OMAP2+: Fix omap off idle power consumption creeping up 2015-05-04 08:54:41 -07:00
voltage.c ARM: OMAP2+: voltage: Remove some unused functions 2015-01-07 09:53:51 -08:00
voltage.h ARM: OMAP2+: voltage: Remove some unused functions 2015-01-07 09:53:51 -08:00
voltagedomains2xxx_data.c
voltagedomains3xxx_data.c ARM: appropriate __init annotation for const data 2015-07-28 13:55:27 +02:00
voltagedomains44xx_data.c ARM: appropriate __init annotation for const data 2015-07-28 13:55:27 +02:00
voltagedomains54xx_data.c ARM: appropriate __init annotation for const data 2015-07-28 13:55:27 +02:00
vp3xxx_data.c ARM: OMAP3+: PRM: add common APIs for prm_vp_check/clear_txdone 2015-03-25 11:03:39 +02:00
vp44xx_data.c ARM: OMAP3+: PRM: add common APIs for prm_vp_check/clear_txdone 2015-03-25 11:03:39 +02:00
vp.c
vp.h ARM: OMAP3+: PRM: add common APIs for prm_vp_check/clear_txdone 2015-03-25 11:03:39 +02:00
wd_timer.c
wd_timer.h