ARM: shmobile: Rework sh7372 sleep code to use virt_to_phys()
Instead of having a hard coded virt-to-phys address conversion code in sleep-sh7372.S, rework the code to do the conversion in C using virt_to_phys(). This removes the need for PLAT_PHYS_OFFSET which in turn is needed for ARCH_MULTIPLATFORM. Signed-off-by: Magnus Damm <damm@opensource.se> [horms+renesas@verge.net.au: squashed in build fix posted as "ARM: shmobile: sh7372 build fix for SUSPEND=n && CPU_IDLE=n"] Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
This commit is contained in:
parent
4f309d272f
commit
e26f406740
|
@ -75,6 +75,8 @@ extern void sh7372_intcs_resume(void);
|
|||
extern void sh7372_intca_suspend(void);
|
||||
extern void sh7372_intca_resume(void);
|
||||
|
||||
extern unsigned long sh7372_cpu_resume;
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
extern void __init sh7372_init_pm_domains(void);
|
||||
#else
|
||||
|
|
|
@ -351,6 +351,9 @@ static void sh7372_enter_a4s_common(int pllc0_on)
|
|||
|
||||
static void sh7372_pm_setup_smfram(void)
|
||||
{
|
||||
/* pass physical address of cpu_resume() to assembly resume code */
|
||||
sh7372_cpu_resume = virt_to_phys(cpu_resume);
|
||||
|
||||
memcpy((void *)SMFRAM, sh7372_resume_core_standby_sysc, 0x100);
|
||||
}
|
||||
#else
|
||||
|
|
|
@ -40,7 +40,10 @@
|
|||
.global sh7372_resume_core_standby_sysc
|
||||
sh7372_resume_core_standby_sysc:
|
||||
ldr pc, 1f
|
||||
1: .long cpu_resume - PAGE_OFFSET + PLAT_PHYS_OFFSET
|
||||
|
||||
.globl sh7372_cpu_resume
|
||||
sh7372_cpu_resume:
|
||||
1: .space 4
|
||||
|
||||
#define SPDCR 0xe6180008
|
||||
|
||||
|
|
Loading…
Reference in New Issue