diff options
author | Michel JAOUEN <michel.jaouen@stericsson.com> | 2012-01-26 10:20:53 +0100 |
---|---|---|
committer | Philippe Langlais <philippe.langlais@stericsson.com> | 2012-05-22 10:59:30 +0200 |
commit | 2c82676cdc339dc5d70b94771c700db4fd3aad36 (patch) | |
tree | 416894d5b0fe9806cf1cd0386ef55b43a341f1c8 /arch/arm/mach-ux500/pm/context.c | |
parent | d39f09f691568bfad8fd652834258617a7c2f5ef (diff) |
mach-ux500 : 9540 prcmu dump, context
ST-Ericsson ID: 409625
Signed-off-by: Guillaume Kouadio Carry <guillaume.kouadio-carry@stericsson.com>
Signed-off-by: Alex MACRO <alex.macro@stericsson.com>
Signed-off-by: David Paris <david.paris@stericsson.com>
Signed-off-by: Michel JAOUEN <michel.jaouen@stericsson.com>
Diffstat (limited to 'arch/arm/mach-ux500/pm/context.c')
-rw-r--r-- | arch/arm/mach-ux500/pm/context.c | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/arch/arm/mach-ux500/pm/context.c b/arch/arm/mach-ux500/pm/context.c index ffd73f3ed52..e63fd4fbe8c 100644 --- a/arch/arm/mach-ux500/pm/context.c +++ b/arch/arm/mach-ux500/pm/context.c @@ -43,6 +43,7 @@ #define U8500_BACKUPRAM_SIZE SZ_64K #define U8500_PUBLIC_BOOT_ROM_BASE (U8500_BOOT_ROM_BASE + 0x17000) +#define U9540_PUBLIC_BOOT_ROM_BASE (U9540_BOOT_ROM_BASE + 0x17000) #define U5500_PUBLIC_BOOT_ROM_BASE (U5500_BOOT_ROM_BASE + 0x18000) /* @@ -598,6 +599,8 @@ void context_vape_save(void) u5500_context_save_icn(); if (cpu_is_u8500()) u8500_context_save_icn(); + if (cpu_is_u9540()) + u9540_context_save_icn(); save_stm_ape(); @@ -621,6 +624,8 @@ void context_vape_restore(void) u5500_context_restore_icn(); if (cpu_is_u8500()) u8500_context_restore_icn(); + if (cpu_is_u9540()) + u9540_context_restore_icn(); atomic_notifier_call_chain(&context_ape_notifier_list, CONTEXT_APE_RESTORE, NULL); @@ -906,13 +911,21 @@ static int __init context_init(void) context_gic_dist_common.base = ioremap(U5500_GIC_DIST_BASE, SZ_4K); per_cpu(context_gic_cpu, 0).base = ioremap(U5500_GIC_CPU_BASE, SZ_4K); - } else if (cpu_is_u8500()) { + } else if (cpu_is_u8500() || cpu_is_u9540()) { /* Give logical address to backup RAM. For both CPUs */ - writel(IO_ADDRESS(U8500_PUBLIC_BOOT_ROM_BASE), - IO_ADDRESS(U8500_CPU0_BACKUPRAM_ADDR_PUBLIC_BOOT_ROM_LOG_ADDR)); - - writel(IO_ADDRESS(U8500_PUBLIC_BOOT_ROM_BASE), - IO_ADDRESS(U8500_CPU1_BACKUPRAM_ADDR_PUBLIC_BOOT_ROM_LOG_ADDR)); + if (cpu_is_u9540()) { + writel(IO_ADDRESS_DB9540_ROM(U9540_PUBLIC_BOOT_ROM_BASE), + IO_ADDRESS(U8500_CPU0_BACKUPRAM_ADDR_PUBLIC_BOOT_ROM_LOG_ADDR)); + + writel(IO_ADDRESS_DB9540_ROM(U9540_PUBLIC_BOOT_ROM_BASE), + IO_ADDRESS(U8500_CPU1_BACKUPRAM_ADDR_PUBLIC_BOOT_ROM_LOG_ADDR)); + } else { + writel(IO_ADDRESS(U8500_PUBLIC_BOOT_ROM_BASE), + IO_ADDRESS(U8500_CPU0_BACKUPRAM_ADDR_PUBLIC_BOOT_ROM_LOG_ADDR)); + + writel(IO_ADDRESS(U8500_PUBLIC_BOOT_ROM_BASE), + IO_ADDRESS(U8500_CPU1_BACKUPRAM_ADDR_PUBLIC_BOOT_ROM_LOG_ADDR)); + } context_tpiu.base = ioremap(U8500_TPIU_BASE, SZ_4K); context_stm_ape.base = ioremap(U8500_STM_REG_BASE, SZ_4K); @@ -952,6 +965,8 @@ static int __init context_init(void) u8500_context_init(); } else if (cpu_is_u5500()) { u5500_context_init(); + } else if (cpu_is_u9540()) { + u9540_context_init(); } else { printk(KERN_ERR "context: unknown hardware!\n"); return -EINVAL; |