diff options
author | Philippe Langlais <philippe.langlais@linaro.org> | 2011-03-28 13:18:24 +0200 |
---|---|---|
committer | Philippe Langlais <philippe.langlais@stericsson.com> | 2012-05-22 10:59:41 +0200 |
commit | 7ef0b5717dd7edcae9f2602cc69e48cf148ec87f (patch) | |
tree | 0fc18f9c80be604dd0f7916363ce1c1caeb41122 | |
parent | 89f1289bab27aafdbabd88571218603895064d3a (diff) |
ux500-ARM : make backup RAM as an executable area
On the v1.0/ED boards, during the deep sleep resume, it is
required to make the backup RAM area as "executable" in order
manage MMU settings for a single core mode. As a result, the
rom code requires such a condition for aligning SMP strategy
for different per-core MMU configuration. This patch makes
the backup RAM configuration area as executable by adding
a new memory type.
*This change will not be needed for U8500 v2.0 as the
rom code would (hopefully as discussions are showing) be updated
with a minor API change*
This patch is a part of patches for the deep sleep feature
for the U8500 and FIDO_IR_ER: 258539
This patch *must* be re-visisted during u8500 v2.0 cut
or mainlining the deep sleep to community
Signed-off-by: Sundar R Iyer <sundar.iyer@stericsson.com>
Acked-By: Biju C Das <biju.das@stericsson.com>
Signed-off-by: Mian Yousaf Kaukab <mian.yousaf.kaukab@stericsson.com>
Change-Id: Id4d8215ca1e9aaf8f327ff3f55f3f9ca1e68aef5
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/2190
Reviewed-by: Jonas ABERG <jonas.aberg@stericsson.com>
-rw-r--r-- | arch/arm/include/asm/io.h | 6 | ||||
-rw-r--r-- | arch/arm/mm/mmu.c | 14 |
2 files changed, 20 insertions, 0 deletions
diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h index 9af5563dd3e..d9a9a19cb68 100644 --- a/arch/arm/include/asm/io.h +++ b/arch/arm/include/asm/io.h @@ -63,6 +63,12 @@ extern void __raw_readsl(const void __iomem *addr, void *data, int longlen); #define MT_DEVICE_CACHED 2 #define MT_DEVICE_WC 3 /* + * NOTE : U8500 v1.0/ED cut specific hack. + * look at the commit message for more details + */ +#define MT_BACKUP_RAM 4 + +/* * types 4 onwards can be found in asm/mach/map.h and are undefined * for ioremap */ diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index aa78de8bfdd..4ecd1f8bbb5 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c @@ -288,6 +288,20 @@ static struct mem_type mem_types[] = { PMD_SECT_UNCACHED | PMD_SECT_XN, .domain = DOMAIN_KERNEL, }, + /* NOTE : this is only a temporary hack!!! + * The U8500 ED/V1.0 cuts require such a + * memory type for deep sleep resume. + * This is expected to be solved in cut v2.0 + * and we clean this up then. for more details + * look @ the commit message please + */ + [MT_BACKUP_RAM] = { + .prot_pte = PROT_PTE_DEVICE | L_PTE_MT_DEV_SHARED | + L_PTE_SHARED, + .prot_l1 = PMD_TYPE_TABLE, + .prot_sect = PROT_SECT_DEVICE | PMD_SECT_S, + .domain = DOMAIN_IO, + }, }; const struct mem_type *get_mem_type(unsigned int type) |