Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
omap-secure.c
Go to the documentation of this file.
1 /*
2  * OMAP Secure API infrastructure.
3  *
4  * Copyright (C) 2011 Texas Instruments, Inc.
5  * Santosh Shilimkar <[email protected]>
6  *
7  *
8  * This program is free software,you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License version 2 as
10  * published by the Free Software Foundation.
11  */
12 
13 #include <linux/kernel.h>
14 #include <linux/init.h>
15 #include <linux/io.h>
16 #include <linux/memblock.h>
17 
18 #include <asm/cacheflush.h>
19 #include <asm/memblock.h>
20 
21 #include <plat/omap-secure.h>
22 #include "omap-secure.h"
23 
24 static phys_addr_t omap_secure_memblock_base;
25 
37  u32 arg3, u32 arg4)
38 {
39  u32 ret;
40  u32 param[5];
41 
42  param[0] = nargs;
43  param[1] = arg1;
44  param[2] = arg2;
45  param[3] = arg3;
46  param[4] = arg4;
47 
48  /*
49  * Secure API needs physical address
50  * pointer for the parameters
51  */
53  outer_clean_range(__pa(param), __pa(param + 5));
54  ret = omap_smc2(idx, flag, __pa(param));
55 
56  return ret;
57 }
58 
59 /* Allocate the memory to save secure ram */
61 {
63 
64  size = ALIGN(size, SECTION_SIZE);
65  omap_secure_memblock_base = arm_memblock_steal(size, SECTION_SIZE);
66 
67  return 0;
68 }
69 
71 {
72  return omap_secure_memblock_base;
73 }