linux/arch/sh/include/asm
Magnus Damm 6a93dde1e8 sh: Runtime PM for SuperH Mobile platform bus devices
This patch is V3 of the SuperH Mobile Runtime PM platform bus
implentation matching Rafael's Runtime PM v16.

The code gets invoked from the SuperH specific Runtime PM
platform bus functions that override the weak symbols for:
 - platform_pm_runtime_suspend()
 - platform_pm_runtime_resume()
 - platform_pm_runtime_idle()

This Runtime PM implementation performs two levels of power
management. At the time of platform bus runtime suspend the
clock to the device is stopped instantly. Later on if all
devices within the power domain has their clocks stopped
then the device driver ->runtime_suspend() callbacks are
used to save hardware register state for each device.

Device driver ->runtime_suspend() calls are scheduled from
cpuidle context using platform_pm_runtime_suspend_idle().
When all devices have been fully suspended the processor
is allowed to enter deep sleep from cpuidle.

The runtime resume operation turns on clocks and also
restores registers if needed. It is worth noting that the
devices start in a suspended state and the device driver
is responsible for calling runtime resume before accessing
the actual hardware.

In this particular platform bus implementation runtime
resume is not allowed from interrupt context. Runtime
suspend is however allowed from interrupt context as
long as the synchronous functions are avoided.

[ updated for v17 -- PFM. ]

Signed-off-by: Magnus Damm <damm@igel.co.jp>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2009-08-23 18:03:17 +09:00
..
.gitignore sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
adc.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
addrspace.h sh: Support fixed 32-bit PMB mappings from bootloader. 2009-03-10 15:49:54 +09:00
atomic-grb.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
atomic-irq.h sh: Make the atomic functions safe for irqsoff tracing 2009-06-15 00:31:17 +09:00
atomic-llsc.h sh: Fix sh4a llsc-based cmpxchg() 2009-06-11 09:31:55 +03:00
atomic.h sh: Use generic atomic64_t implementation. 2009-06-17 10:43:13 +09:00
auxvec.h sh: Make sure AT_SYSINFO_EHDR is exposed to userspace in asm/auxvec.h. 2008-07-29 23:12:25 +09:00
bitops-grb.h sh: Convert to generic bitops for IRQ-toggling implementation. 2008-12-22 18:42:53 +09:00
bitops-llsc.h sh: Relax inline assembly constraints 2009-01-29 11:57:09 +09:00
bitops-op32.h sh: Provide optimized non-atomic bitops for SH-2A. 2008-12-22 18:42:54 +09:00
bitops.h sh: Provide optimized non-atomic bitops for SH-2A. 2008-12-22 18:42:54 +09:00
bitsperlong.h asm-generic: introduce asm/bitsperlong.h 2009-06-11 21:02:14 +02:00
bug.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
bugs.h sh: Add support for SH7201 CPU subtype. 2008-12-22 18:43:50 +09:00
byteorder.h byteorder: make swab.h include asm/swab.h like a regular header 2009-01-14 19:56:50 -08:00
cache.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
cacheflush.h sh: Handle shm_align_mask also for HAVE_ARCH_UNMAPPED_AREA_TOPDOWN. 2009-05-07 16:38:16 +09:00
checksum_32.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
checksum.h sh: Convert sh64 to use the generic checksum code. 2009-06-15 00:00:42 +09:00
clock.h sh: add enable()/disable()/set_rate() to div6 code 2009-06-11 09:12:58 +03:00
cmpxchg-grb.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
cmpxchg-irq.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
cmpxchg-llsc.h sh: Fix sh4a llsc-based cmpxchg() 2009-06-11 09:31:55 +03:00
cpu-features.h sh: Support for extended ASIDs on PTEAEX-capable SH-X3 cores. 2009-03-17 17:49:49 +09:00
cputime.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
current.h sh: Convert to asm-generic/current.h. 2009-06-14 21:34:26 +09:00
delay.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
device.h sh: Runtime PM for SuperH Mobile platform bus devices 2009-08-23 18:03:17 +09:00
div64.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
dma-mapping.h sh: Fix up more dma-mapping fallout. 2009-06-23 17:36:23 +09:00
dma-sh.h sh: Add SH7724 DMAC support. 2009-08-04 14:41:49 +09:00
dma.h sh: Convert to asm-generic/dma.h. 2009-06-14 21:45:06 +09:00
dmabrg.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
dwarf.h sh: Delete DWARF_ARCH_UNWIND_OFFSET 2009-08-14 05:00:21 +09:00
elf.h Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 2008-12-28 12:33:21 -08:00
emergency-restart.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
entry-macros.S sh: Setup the frame register in asm code 2009-08-14 01:59:55 +09:00
errno.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
fb.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
fcntl.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
fixmap.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
flat.h flat: fix data sections alignment 2009-05-29 08:40:02 -07:00
fpu.h sh: Add FPU registers to regset interface. 2008-09-21 19:04:55 +09:00
freq.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
ftrace.h sh: Function graph tracer support 2009-07-11 10:08:01 +09:00
futex-irq.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
futex.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
gpio.h sh: use gpiolib 2009-01-27 14:49:10 +09:00
hardirq.h sh: convert to asm-generic/hardirq.h 2009-08-05 17:56:07 +09:00
hd64461.h sh: mach-hp6xx: Fix up the hp6xx build for hd64461 changes. 2009-05-20 11:27:13 +09:00
heartbeat.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
hugetlb.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
hw_irq.h sh: Move the shared INTC code out to drivers/sh/ 2008-10-01 16:13:54 +09:00
hwblk.h sh: Runtime PM for SuperH Mobile platform bus devices 2009-08-23 18:03:17 +09:00
i2c-sh7760.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
ilsel.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
io_generic.h sh: More I/O routine overhauling. 2008-10-04 05:25:52 +09:00
io_trapped.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
io.h sh: Provide __read_{read,write}sl() definitions for sh64. 2009-05-09 14:44:30 +09:00
ioctl.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
ioctls.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
ipcbuf.h sh: Convert ipc/shm bits to their asm-generic versions. 2009-06-14 23:20:27 +09:00
irq_regs.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
irq.h sh: Tidy up duplication in irq/swab/timex.h. 2009-06-14 23:21:54 +09:00
irqflags_32.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
irqflags_64.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
irqflags.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
Kbuild byteorder: make swab.h include asm/swab.h like a regular header 2009-01-14 19:56:50 -08:00
kdebug.h sh: Wire up oops reporting in the die notifier chain. 2008-10-21 18:33:36 +09:00
kexec.h kexec jump: rename KEXEC_CONTROL_CODE_SIZE to KEXEC_CONTROL_PAGE_SIZE 2008-08-15 08:35:42 -07:00
kgdb.h sh: Generic kgdb stub support. 2008-12-22 18:44:04 +09:00
kmap_types.h kmap_types: make most arches use generic header file 2009-06-16 19:47:51 -07:00
kprobes.h sh: Rename opcode_t to insn_size_t. 2009-05-09 16:02:08 +09:00
linkage.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
lmb.h sh: Use bootmem ontop of lmb 2009-07-03 16:16:54 +09:00
local.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
machvec.h sh: boot word / mode pin support V2 2009-06-01 15:44:49 +09:00
mc146818rtc.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
mman.h sh: Switch to asm-generic versions for identical headers. 2009-06-14 23:26:48 +09:00
mmu_context_32.h sh: Support for extended ASIDs on PTEAEX-capable SH-X3 cores. 2009-03-17 17:49:49 +09:00
mmu_context_64.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
mmu_context.h sh: Conver to asm-generic/mmu_context.h. 2009-06-14 23:23:41 +09:00
mmu.h sh: Sanitize asm/mmu.h for assembly use. 2009-03-31 07:42:37 +09:00
mmzone.h sh: Fix up NUMA build error with se7722_defconfig. 2008-09-12 22:41:30 +09:00
module.h sh: Convert to asm-generic/module.h. 2009-06-14 23:24:14 +09:00
msgbuf.h sh: Convert ipc/shm bits to their asm-generic versions. 2009-06-14 23:20:27 +09:00
mutex-llsc.h sh: Fix up T-bit error handling in SH-4A mutex fastpath. 2009-01-29 11:56:03 +09:00
mutex.h sh: Add SH-4A optimized fastpath mutex implementation. 2008-12-22 18:42:55 +09:00
page.h asm-generic: rename page.h and uaccess.h 2009-06-11 21:02:17 +02:00
param.h sh: Switch to asm-generic versions for identical headers. 2009-06-14 23:26:48 +09:00
parport.h sh: Switch to asm-generic versions for identical headers. 2009-06-14 23:26:48 +09:00
pci.h Delete pcibios_select_root 2009-06-17 14:04:42 -07:00
percpu.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
perf_counter.h sh: define PERF_COUNTER_INDEX_OFFSET. 2009-07-03 13:08:28 +09:00
pgalloc.h mm: Remove duplicate definitions in MIPS and SH 2009-07-27 17:26:44 -07:00
pgtable_32.h sh: Provide _PAGE_SPECIAL for 32-bit. 2009-07-22 16:50:57 +09:00
pgtable_64.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
pgtable.h sh: Handle shm_align_mask also for HAVE_ARCH_UNMAPPED_AREA_TOPDOWN. 2009-05-07 16:38:16 +09:00
poll.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
posix_types_32.h sh: Convert to asm-generic/posix_types.h. 2009-06-14 23:16:27 +09:00
posix_types_64.h sh: Convert to asm-generic/posix_types.h. 2009-06-14 23:16:27 +09:00
posix_types.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
processor_32.h sh: Fix up DSP context save/restore. 2009-04-04 11:48:11 -04:00
processor_64.h SH: fix start_thread and user_stack_pointer macros 2009-01-29 15:41:15 +09:00
processor.h sh: rework mode pin code 2009-06-11 09:08:53 +03:00
ptrace.h sh: Add in some ptrace definitions from GDB. 2009-05-09 00:06:03 +09:00
push-switch.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
resource.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
rtc.h sh: rtc-generic support. 2009-04-27 17:34:39 +09:00
rwsem.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
scatterlist.h sh: Convert to asm-generic/scatterlist.h. 2009-06-14 23:25:04 +09:00
seccomp.h sh: seccomp support. 2008-08-02 04:39:32 +09:00
sections.h sh: dwarf unwinder support. 2009-08-14 01:58:43 +09:00
segment.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
sembuf.h sh: Convert ipc/shm bits to their asm-generic versions. 2009-06-14 23:20:27 +09:00
serial.h sh: Switch to asm-generic versions for identical headers. 2009-06-14 23:26:48 +09:00
setup.h sh: Derive COMMAND_LINE_SIZE from asm-generic/setup.h. 2009-06-14 23:27:41 +09:00
sfp-machine.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
sh7760fb.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
sh_bios.h sh: Kill off sh_bios_in_gdb_mode(). 2008-12-22 18:44:44 +09:00
sh_eth.h [netdrvr] sh_eth: Add SH7619 support 2008-08-07 02:20:57 -04:00
sh_keysc.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
shmbuf.h sh: Convert ipc/shm bits to their asm-generic versions. 2009-06-14 23:20:27 +09:00
shmparam.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
sigcontext.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
siginfo.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
signal.h sh: Convert to asm-generic/signal.h. 2009-06-14 23:25:57 +09:00
sizes.h sh: Add a few more definitions to asm/sizes.h. 2008-09-21 10:31:57 +09:00
smc37c93x.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
smp.h cpumask: arch_send_call_function_ipi_mask: sh 2009-06-14 18:24:14 +09:00
socket.h sh: Switch to asm-generic versions for identical headers. 2009-06-14 23:26:48 +09:00
sockios.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
sparsemem.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
spi.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
spinlock_types.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
spinlock.h sh: Fix sh4a llsc-based cmpxchg() 2009-06-11 09:31:55 +03:00
stacktrace.h sh: Use the generalized stacktrace ops 2009-08-13 11:50:08 +09:00
stat.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
statfs.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
string_32.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
string_64.h sh: Add SH-5 optimized memcpy()/memset()/strcpy()/strlen(). 2008-12-22 18:44:05 +09:00
string.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
suspend.h sh: cpuidle for SuperH Mobile using hwblk 2009-07-05 00:29:54 +09:00
swab.h sh: Tidy up duplication in irq/swab/timex.h. 2009-06-14 23:21:54 +09:00
syscall_32.h sh: Add ftrace syscall tracing support 2009-07-06 20:16:33 +09:00
syscall_64.h sh: Fix up spurious syscall restarting. 2009-01-29 11:56:03 +09:00
syscall.h sh: Provide the asm/syscall.h interface, needed by tracehook. 2008-09-12 22:13:13 +09:00
syscalls_32.h [CVE-2009-0029] Remove __attribute__((weak)) from sys_pipe/sys_pipe2 2009-01-14 14:15:15 +01:00
syscalls_64.h sh: fixup many sparse errors. 2008-09-08 10:35:04 +09:00
syscalls.h sh: fixup many sparse errors. 2008-09-08 10:35:04 +09:00
system_32.h sh: Rename opcode_t to insn_size_t. 2009-05-09 16:02:08 +09:00
system_64.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
system.h sh: Provide cpu_idle_wait() to fix up cpuidle/SMP build. 2009-06-23 17:30:17 +09:00
termbits.h sh: Convert to asm-generic/termbits.h and termios.h. 2009-06-14 23:17:57 +09:00
termios.h sh: Convert to asm-generic/termbits.h and termios.h. 2009-06-14 23:17:57 +09:00
thread_info.h Merge branches 'sh/ftrace' and 'sh/stable-updates' 2009-07-11 10:08:33 +09:00
timex.h sh: Tidy up duplication in irq/swab/timex.h. 2009-06-14 23:21:54 +09:00
tlb_64.h sh: Fix up broken kerneldoc comments. 2008-08-04 12:51:06 +09:00
tlb.h mm: Pass virtual address to [__]p{te,ud,md}_free_tlb() 2009-07-27 12:10:38 -07:00
tlbflush.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
topology.h cpumask: remove the now-obsoleted pcibus_to_cpumask(): sh 2009-06-14 18:24:13 +09:00
types.h sh: Convert to asm-generic/types.h. 2009-06-14 23:25:27 +09:00
uaccess_32.h sh: Proper __put_user_asm() size mismatch fix. 2008-07-29 09:16:33 +09:00
uaccess_64.h sh: sh_ksyms_64 needs __strncpy_from_user() definition. 2008-09-29 19:45:16 +09:00
uaccess.h sh: Proper __put_user_asm() size mismatch fix. 2008-07-29 09:16:33 +09:00
ubc.h sh: Fix UBC setup and registers for SH2A 2009-05-09 00:09:21 +09:00
ucontext.h sh: Switch to asm-generic versions for identical headers. 2009-06-14 23:26:48 +09:00
unaligned-sh4a.h sh: 16-bit get_unaligned() sh4a fix 2009-06-04 20:20:24 +09:00
unaligned.h sh: Convert to asm-generic/unaligned.h. 2009-06-14 23:24:43 +09:00
unistd_32.h sh: Wire up sys_perf_counter_open. 2009-06-12 01:33:22 +03:00
unistd_64.h sh: Wire up sys_perf_counter_open. 2009-06-12 01:33:22 +03:00
unistd.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
unwinder.h sh: Allow multiple stack unwinders to be setup 2009-08-13 19:49:03 +09:00
user.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
vga.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
vmlinux.lds.h sh: dwarf unwinder support. 2009-08-14 01:58:43 +09:00
watchdog.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00
xor.h sh: migrate to arch/sh/include/ 2008-07-29 08:09:44 +09:00