Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
arm
mach-omap2
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
36
u32
omap_secure_dispatcher
(
u32
idx
,
u32
flag
,
u32
nargs,
u32
arg1
,
u32
arg2
,
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
*/
52
flush_cache_all
();
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 */
60
int
__init
omap_secure_ram_reserve_memblock
(
void
)
61
{
62
u32
size
=
OMAP_SECURE_RAM_STORAGE
;
63
64
size =
ALIGN
(size,
SECTION_SIZE
);
65
omap_secure_memblock_base =
arm_memblock_steal
(size,
SECTION_SIZE
);
66
67
return
0;
68
}
69
70
phys_addr_t
omap_secure_ram_mempool_base
(
void
)
71
{
72
return
omap_secure_memblock_base;
73
}
Generated on Thu Jan 10 2013 13:00:50 for Linux Kernel by
1.8.2