tizen 2.4 release
[profile/mobile/platform/kernel/u-boot-tm1.git] / arch / arm / include / asm / arch-sc8810 / iram_mgr.h
1 #ifndef IRAM_MGR_H
2 #define IRAM_MGR_H
3
4 #include "sci_types.h"  
5
6 /*-----------------------------------------------------------------------------
7  * IRAM_AREA
8  */
9 typedef struct _IRAM_AREA {
10     uint32  iram_addr;
11     uint32  iram_length;
12     void    *data;
13     uint32  attri;
14 } IRAM_AREA;
15
16 /*-----------------------------------------------------------------------------
17  * IRAM attribute
18  */
19 #define IRAM_ATTRIBUTE_NORMAL           ((uint32)0x00000000)
20 #define IRAM_ATTRIBUTE_SAVE_CONTEXT     ((uint32)0x00000001) 
21 #define IRAM_ATTRIBUTE_ZI               ((uint32)0x00000002)
22
23 /*-----------------------------------------------------------------------------
24  * IRAM client handle
25  */
26 struct _IRAM_CLIENT;
27 typedef struct _IRAM_CLIENT *ICLIENT_HANDLE;
28
29 /*-----------------------------------------------------------------------------
30  * IRAM lock handle
31  */
32 struct _IRAM_LOCK;
33 typedef struct _IRAM_LOCK *ILOCK_HANDLE;
34
35 /*-----------------------------------------------------------------------------
36  * IRAM invalid handle
37  */
38 #define IRAM_INVALID_HANDLE             (NULL) 
39
40 /*-----------------------------------------------------------------------------
41  * IRAM wait option
42  */
43 #define IRAM_WAIT_FOR_EVER              (0xFFFFFFFF)
44 #define IRAM_NO_WAIT                    (0x00000000)
45
46 #ifdef __cplusplus
47 extern "C" {
48 #endif /* __cplusplus */
49
50 /*-----------------------------------------------------------------------------
51  * IRAM_Init
52  *      Initialize IRAM module.
53  *
54  * Parameters:
55  *      area -
56  *      count -
57  *
58  * Returns:
59  *      TRUE -
60  *      FLASE -
61  */
62 BOOLEAN IRAM_Init(const IRAM_AREA *area, int32 count);
63
64 /*-----------------------------------------------------------------------------
65  * IRAM_RegisterArea
66  *      Regsiter area.
67  *
68  * Parameters:
69  *      area - 
70  *      count -
71  *
72  * Returns:
73  *      NULL -
74  *      !NULL -
75  */
76 ICLIENT_HANDLE IRAM_RegisterArea(const IRAM_AREA *area, int32 count);
77
78 /*-----------------------------------------------------------------------------
79  * IRAM_UnregisterArea
80  *      Unregister area
81  *
82  * Parameters:
83  *      client - Handle returned by IRAM_RegsiterArea
84  *
85  * Returns:
86  *      TRUE -
87  *      FALSE -
88  */
89 BOOLEAN IRAM_UnregisterArea(ICLIENT_HANDLE client);
90
91 /*-----------------------------------------------------------------------------
92  * IRAM_LockArea
93  *      Lock area.
94  *
95  * Parameters:
96  *      area - 
97  *      count -
98  *      wait -
99  *
100  * Returns:
101  *      NULL -
102  *      !NULL -
103  */
104 ILOCK_HANDLE IRAM_LockArea(const IRAM_AREA *area, int32 count, uint32 wait);
105
106 /*-----------------------------------------------------------------------------
107  * IRAM_LockRegisteredArea
108  *      Lock registered area.
109  *
110  * Parameters:
111  *      client  - Handle returned by IRAM_RegisterArea
112  *      wait    -
113  *      forceZI -
114  *
115  * Returns:
116  *      NULL -
117  *      !NULL -
118  */
119 ILOCK_HANDLE IRAM_LockRegisteredArea(ICLIENT_HANDLE client, uint32 wait, BOOLEAN forceZI);
120
121 /*-----------------------------------------------------------------------------
122  * IRAM_UnlockArea
123  *      Unlock area.
124  *
125  * Parameters:
126  *      lock - Handle returned by IRAM_Lock*
127  *
128  * Returns:
129  *      TRUE -
130  *      FALSE -
131  */
132 BOOLEAN IRAM_UnlockArea(ILOCK_HANDLE lock);   
133
134 #ifdef __cplusplus
135 }
136 #endif /* __cplusplus */
137
138 #endif /* IRAM_MGR_H */