Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: 7818/1: feroceon: Add suspend/resume operation

Add support for suspend/resume operations. The implemented procedures
are identical to the ones for ARM926.

Signed-off-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>

authored by

Ezequiel Garcia and committed by
Russell King
19a0519d da0ec6f7

+27 -1
+1 -1
arch/arm/Kconfig
··· 2240 2240 2241 2241 config ARCH_SUSPEND_POSSIBLE 2242 2242 depends on !ARCH_S5PC100 2243 - depends on CPU_ARM920T || CPU_ARM926T || CPU_SA1100 || \ 2243 + depends on CPU_ARM920T || CPU_ARM926T || CPU_FEROCEON || CPU_SA1100 || \ 2244 2244 CPU_V6 || CPU_V6K || CPU_V7 || CPU_XSC3 || CPU_XSCALE || CPU_MOHAWK 2245 2245 def_bool y 2246 2246
+26
arch/arm/mm/proc-feroceon.S
··· 514 514 #endif 515 515 mov pc, lr 516 516 517 + /* Suspend/resume support: taken from arch/arm/mm/proc-arm926.S */ 518 + .globl cpu_feroceon_suspend_size 519 + .equ cpu_feroceon_suspend_size, 4 * 3 520 + #ifdef CONFIG_ARM_CPU_SUSPEND 521 + ENTRY(cpu_feroceon_do_suspend) 522 + stmfd sp!, {r4 - r6, lr} 523 + mrc p15, 0, r4, c13, c0, 0 @ PID 524 + mrc p15, 0, r5, c3, c0, 0 @ Domain ID 525 + mrc p15, 0, r6, c1, c0, 0 @ Control register 526 + stmia r0, {r4 - r6} 527 + ldmfd sp!, {r4 - r6, pc} 528 + ENDPROC(cpu_feroceon_do_suspend) 529 + 530 + ENTRY(cpu_feroceon_do_resume) 531 + mov ip, #0 532 + mcr p15, 0, ip, c8, c7, 0 @ invalidate I+D TLBs 533 + mcr p15, 0, ip, c7, c7, 0 @ invalidate I+D caches 534 + ldmia r0, {r4 - r6} 535 + mcr p15, 0, r4, c13, c0, 0 @ PID 536 + mcr p15, 0, r5, c3, c0, 0 @ Domain ID 537 + mcr p15, 0, r1, c2, c0, 0 @ TTB address 538 + mov r0, r6 @ control register 539 + b cpu_resume_mmu 540 + ENDPROC(cpu_feroceon_do_resume) 541 + #endif 542 + 517 543 .type __feroceon_setup, #function 518 544 __feroceon_setup: 519 545 mov r0, #0