Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 281862
b: refs/heads/master
c: 259ee57
h: refs/heads/master
v: v3
  • Loading branch information
Santosh Shilimkar authored and Kevin Hilman committed Dec 8, 2011
1 parent 3662b4a commit b78d821
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ba9456ac9c72a7a5d4d59340aba4259351832521
refs/heads/master: 259ee57a8cda5760dd3e803c5271a6327e1f38ac
3 changes: 3 additions & 0 deletions trunk/arch/arm/mach-omap2/include/mach/omap-secure.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
#define FLAG_FIQ_ENABLE 0x1
#define NO_FLAG 0x0

/* Maximum Secure memory storage size */
#define OMAP_SECURE_RAM_STORAGE (88 * SZ_1K)

/* Secure low power HAL API index */
#define OMAP4_HAL_SAVESECURERAM_INDEX 0x1a
Expand All @@ -36,5 +38,6 @@
extern u32 omap_secure_dispatcher(u32 idx, u32 flag, u32 nargs,
u32 arg1, u32 arg2, u32 arg3, u32 arg4);
extern u32 omap_smc2(u32 id, u32 falg, u32 pargs);
extern phys_addr_t omap_secure_ram_mempool_base(void);

#endif /* OMAP_ARCH_OMAP_SECURE_H */
29 changes: 29 additions & 0 deletions trunk/arch/arm/mach-omap2/omap-secure.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,14 @@
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/io.h>
#include <linux/memblock.h>

#include <asm/cacheflush.h>

#include <mach/omap-secure.h>

static phys_addr_t omap_secure_memblock_base;

/**
* omap_sec_dispatcher: Routine to dispatch low power secure
* service routines
Expand Down Expand Up @@ -50,3 +53,29 @@ u32 omap_secure_dispatcher(u32 idx, u32 flag, u32 nargs, u32 arg1, u32 arg2,

return ret;
}

/* Allocate the memory to save secure ram */
int __init omap_secure_ram_reserve_memblock(void)
{
phys_addr_t paddr;
u32 size = OMAP_SECURE_RAM_STORAGE;

size = ALIGN(size, SZ_1M);
paddr = memblock_alloc(size, SZ_1M);
if (!paddr) {
pr_err("%s: failed to reserve %x bytes\n",
__func__, size);
return -ENOMEM;
}
memblock_free(paddr, size);
memblock_remove(paddr, size);

omap_secure_memblock_base = paddr;

return 0;
}

phys_addr_t omap_secure_ram_mempool_base(void)
{
return omap_secure_memblock_base;
}
3 changes: 3 additions & 0 deletions trunk/arch/arm/plat-omap/common.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
#include <plat/vram.h>
#include <plat/dsp.h>

#include <plat/omap-secure.h>


#define NO_LENGTH_CHECK 0xffffffff

Expand Down Expand Up @@ -66,6 +68,7 @@ void __init omap_reserve(void)
omapfb_reserve_sdram_memblock();
omap_vram_reserve_sdram_memblock();
omap_dsp_reserve_sdram_memblock();
omap_secure_ram_reserve_memblock();
}

void __init omap_init_consistent_dma_size(void)
Expand Down
13 changes: 13 additions & 0 deletions trunk/arch/arm/plat-omap/include/plat/omap-secure.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#ifndef __OMAP_SECURE_H__
#define __OMAP_SECURE_H__

#include <linux/types.h>

#ifdef CONFIG_ARCH_OMAP2PLUS
extern int omap_secure_ram_reserve_memblock(void);
#else
static inline void omap_secure_ram_reserve_memblock(void)
{ }
#endif

#endif /* __OMAP_SECURE_H__ */

0 comments on commit b78d821

Please sign in to comment.