linux/arch/arm/plat-omap/include/mach
Kevin Hilman 4af4016c53 OMAP3: PM: UART: disable clocks when idle and off-mode support
This patch allows the UART clocks to be disabled when the OMAP UARTs
are inactive, thus permitting the chip to hit retention in idle.
After the expiration of an activity timer, each UART is allowed to
disable its clocks so the system can enter retention.  The activity
timer is (re)activated on any UART interrupt, UART wake event or any
IO pad wakeup.  The actual disable of the UART clocks is done in the
'prepare_idle' hook called from the OMAP idle loop.

While the activity timer is active, the smart-idle mode of the UART is
also disabled.  This is due to a "feature" of the UART module that
after a UART wakeup, the smart-idle mode may be entered before the
UART has communicated the interrupt, or upon TX, an idle mode may be
entered before the TX FIFOs are emptied.

Upon suspend, the 'prepare_suspend' hook cancels any pending activity
timers and allows the clocks to be disabled immediately.

In addition, upon disabling clocks the UART state is saved in case
of an off-mode transition while clocks are off.

Special thanks to Tero Kristo for the initial ideas and first versions
of UART idle support, and to Jouni Hogander for extra testing and
bugfixes.

Tested on OMAP3 (Beagle, RX51, SDP, EVM) and OMAP2 (n810)

Cc: Tero Kristo <tero.kristo@nokia.com>
Cc: Jouni Hogander <jouni.hogander@nokia.com>
Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
2009-05-28 10:59:06 -07:00
..
blizzard.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
board-ams-delta.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
board-sx1.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
board-voiceblue.h ARM: OMAP: Remove remaining board-*.h includes from hardware.h 2009-03-23 18:07:39 -07:00
board.h ARM: OMAP: get rid of OMAP_TAG_USB, v2 2009-03-23 18:51:20 -07:00
clkdev.h [ARM] omap: convert OMAP1 to use clkdev 2009-02-08 17:50:13 +00:00
clock.h OMAP2xxx clock: rename clk_init_one() to clk_preinit() 2009-05-12 17:50:30 -06:00
clockdomain.h [ARM] OMAP2/3 clockdomains: combine pwrdm, pwrdm_name into union in struct clockdomain 2009-02-08 17:50:28 +00:00
common.h OMAP3: PM: UART: disable clocks when idle and off-mode support 2009-05-28 10:59:06 -07:00
control.h OMAP3: PM: Add wake-up bit defintiions for CONTROL_PADCONF_X 2009-05-28 10:59:06 -07:00
cpu.h Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 into devel 2009-03-25 18:31:35 +00:00
debug-macro.S ARM: OMAP3: Add minimal omap3430 support 2008-10-09 17:51:41 +03:00
dma.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
dmtimer.h OMAP2/3 GPTIMER: allow system tick GPTIMER to be changed in board-*.c files 2009-04-23 21:11:10 -06:00
dsp_common.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
entry-macro.S ARM: OMAP2/3: Move define of OMAP2_VA_IC_BASE to be local to entry-macro.S 2009-05-25 11:26:45 -07:00
fpga.h [ARM] omap: make sure virtual mmio addresses are __iomem pointer-like 2008-09-05 17:02:32 +01:00
gpio-switch.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
gpio.h [OMAP850] Changes to base IO subsystem, v2 2009-03-23 18:07:40 -07:00
gpmc.h [ARM] OMAP2 SDRC: move mach-omap2/memory.h into mach/sdrc.h 2009-02-08 17:50:38 +00:00
hardware.h ARM: OMAP: Remove remaining board-*.h includes from hardware.h 2009-03-23 18:07:39 -07:00
hwa742.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
io.h [ARM] OMAP2 SDRC: add SDRAM timing parameter infrastructure 2009-02-08 17:50:39 +00:00
irda.h ARM: OMAP: Remove old dead gpio expander code 2009-04-23 11:10:40 -07:00
irqs.h OMAP: Add new function to check wether there is irq pending 2009-05-28 10:59:04 -07:00
keypad.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
lcd_mipid.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
led.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mailbox.h omap mailbox: add save_/restore_ctx() for PM 2009-03-23 18:07:26 -07:00
mcbsp.h [ARM] omap: mcbsp: convert to use fck/ick clocks directly 2009-02-08 17:50:19 +00:00
mcspi.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
memory.h [ARM] make page_to_dma() highmem aware 2009-03-15 21:01:21 -04:00
menelaus.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
mmc.h ARM: OMAP: MMC: Remove unused power_pin 2009-04-23 11:10:44 -07:00
mtd-xip.h ALSA: Correct Vladimir Barinov's e-mail address 2008-10-10 13:41:45 +02:00
mux.h ARM: OMAP3: Add more GPIO mux options 2009-03-23 18:51:21 -07:00
nand.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
omap-alsa.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
omap16xx.h ARM: OMAP2: Misc updates from linux-omap tree 2008-10-06 15:49:36 +03:00
omap24xx.h ARM: OMAP2/3: Remove OMAP_CM_REGADDR 2009-05-25 11:26:46 -07:00
omap34xx.h ARM: OMAP2/3: Remove OMAP_CM_REGADDR 2009-05-25 11:26:46 -07:00
omap730.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
omap850.h [OMAP850] Add base support for omap850 cpu 2009-03-23 18:07:39 -07:00
omap1510.h ARM: OMAP2: Misc updates from linux-omap tree 2008-10-06 15:49:36 +03:00
omapfb.h [ARM] omap: fix a pile of issues 2008-12-01 17:40:54 +00:00
onenand.h Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-08-12 11:28:00 +01:00
param.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
powerdomain.h [ARM] OMAP2/3 clockdomains: add CM and PRM clkdms 2009-02-08 17:50:29 +00:00
prcm.h [ARM] OMAP: Fix sparse, checkpatch warnings in OMAP2/3 PRCM/PM code 2009-02-08 17:50:24 +00:00
sdrc.h [ARM] OMAP2 SDRC: add SDRAM timing parameter infrastructure 2009-02-08 17:50:39 +00:00
serial.h OMAP3: PM: UART: disable clocks when idle and off-mode support 2009-05-28 10:59:06 -07:00
sram.h OMAP3 clock: only unlock SDRC DLL if SDRC clk < 83MHz 2009-05-12 17:27:10 -06:00
system.h Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 into devel 2009-03-25 18:31:35 +00:00
tc.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
timer-gp.h OMAP2/3 GPTIMER: allow system tick GPTIMER to be changed in board-*.c files 2009-04-23 21:11:10 -06:00
timex.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
uncompress.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
usb.h ARM: OMAP3: MUSB initialization for omap hw, v2 2009-03-23 18:51:24 -07:00
vmalloc.h [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00