2 #include <mach/m4u_reg.h>
4 #include <linux/m4u_profile.h>
7 int m4u_dump_reg(int m4u_index
)
11 int m4u_power_on(int m4u_index
)
16 int m4u_power_off(int m4u_index
)
22 int m4u_query_mva(M4U_MODULE_ID_ENUM eModuleID
,
23 const unsigned int BufAddr
,
24 const unsigned int BufSize
,
25 unsigned int *pRetMVABuf
,
26 struct file
* a_pstFile
)
28 return m4u_do_query_mva(eModuleID
, BufAddr
, BufSize
, pRetMVABuf
, a_pstFile
);
32 int m4u_alloc_mva(M4U_MODULE_ID_ENUM eModuleID
,
33 const unsigned int BufAddr
,
34 const unsigned int BufSize
,
37 unsigned int *pRetMVABuf
)
39 mva_info_t
*pMvaInfo
= NULL
;
41 pMvaInfo
=m4u_alloc_garbage_list(0,BufSize
,eModuleID
,BufAddr
,0,security
,cache_coherent
);
42 ret
= __m4u_alloc_mva(pMvaInfo
, NULL
);
46 *pRetMVABuf
= pMvaInfo
->mvaStart
;
56 int m4u_alloc_mva_sg(M4U_MODULE_ID_ENUM eModuleID
,
57 struct sg_table
*sg_table
,
58 const unsigned int BufSize
,
61 unsigned int *pRetMVABuf
)
63 mva_info_t
*pMvaInfo
= NULL
;
65 pMvaInfo
=m4u_alloc_garbage_list(0,BufSize
,eModuleID
,0,0,security
,cache_coherent
);
66 ret
= __m4u_alloc_mva(pMvaInfo
, sg_table
);
70 *pRetMVABuf
= pMvaInfo
->mvaStart
;
79 int m4u_dealloc_mva(M4U_MODULE_ID_ENUM eModuleID
,
80 const unsigned int BufAddr
,
81 const unsigned int BufSize
,
82 const unsigned int MVA
)
84 return __m4u_dealloc_mva(eModuleID
, BufAddr
, BufSize
, MVA
, NULL
);
87 int m4u_dealloc_mva_sg(M4U_MODULE_ID_ENUM eModuleID
,
88 struct sg_table
* sg_table
,
89 const unsigned int BufSize
,
90 const unsigned int MVA
)
92 return __m4u_dealloc_mva(eModuleID
, 0, BufSize
, MVA
, sg_table
);
96 int m4u_insert_seq_range(M4U_MODULE_ID_ENUM eModuleID
,
97 unsigned int MVAStart
,
99 M4U_RANGE_PRIORITY_ENUM ePriority
,
100 unsigned int entryCount
) //0:disable multi-entry, 1,2,4,8,16: enable multi-entry
105 MMProfileLogEx(M4U_MMP_Events
[PROFILE_INSERT_TLB
], MMProfileFlagStart
, eModuleID
, MVAStart
);
106 ret
= m4u_do_insert_seq_range(eModuleID
, MVAStart
, MVAEnd
, entryCount
);
107 MMProfileLogEx(M4U_MMP_Events
[PROFILE_INSERT_TLB
], MMProfileFlagEnd
, eModuleID
, MVAEnd
-MVAStart
+1);
113 int m4u_invalid_seq_range(M4U_MODULE_ID_ENUM eModuleID
, unsigned int MVAStart
, unsigned int MVAEnd
)
115 m4u_invalid_seq_range_by_mva(m4u_module_2_m4u_id(eModuleID
), MVAStart
, MVAEnd
);
122 int m4u_insert_wrapped_range(M4U_MODULE_ID_ENUM eModuleID
,
123 M4U_PORT_ID_ENUM portID
,
124 unsigned int MVAStart
,
130 int m4u_invalid_wrapped_range(M4U_MODULE_ID_ENUM eModuleID
,
131 M4U_PORT_ID_ENUM portID
,
132 unsigned int MVAStart
,
140 int m4u_config_port(M4U_PORT_STRUCT
* pM4uPort
) //native
142 return m4u_do_config_port(pM4uPort
);
146 int m4u_config_port_rotator(M4U_PORT_STRUCT_ROTATOR
*pM4uPort
)
151 int m4u_monitor_start(int m4u_id
)
153 return m4u_do_monitor_start(m4u_id
);
156 int m4u_monitor_stop(int m4u_id
)
158 return m4u_do_monitor_stop(m4u_id
);
161 int m4u_dma_cache_maint(M4U_MODULE_ID_ENUM eModuleID
, const void *start
, size_t size
, int direction
)
163 return m4u_do_dma_cache_maint(eModuleID
, start
, size
, direction
);
166 extern void smp_inner_dcache_flush_all(void);
167 int m4u_dma_cache_flush_all()
170 //mutex_lock(&gM4uMutex);
172 // L1 cache clean before hw read
173 smp_inner_dcache_flush_all();
175 // L2 cache maintenance by physical pages
178 //mutex_unlock(&gM4uMutex);
183 int m4u_dump_info(int m4u_index
)
185 return m4u_do_dump_info(m4u_index
);
191 return m4u_do_log_on();
194 int m4u_log_off(void)
196 return m4u_do_log_off();
199 int m4u_mau_check_pagetable(unsigned int start_addr
, unsigned int end_addr
)
204 int m4u_mva_map_kernel(unsigned int mva
, unsigned int size
, int sec
,
205 unsigned int* map_va
, unsigned int* map_size
)
207 return m4u_do_mva_map_kernel(mva
, size
, sec
, map_va
, map_size
);
211 int m4u_mva_unmap_kernel(unsigned int mva
, unsigned int size
, unsigned int va
)
213 return m4u_do_mva_unmap_kernel(mva
, size
, va
);
216 int m4u_sync_nonsec_sec_pgtable(unsigned int mva
,
220 return m4u_do_sync_nonsec_sec_pgtable(mva
, size
, port
);
223 int m4u_debug_command(unsigned int command
)
225 return m4u_do_debug_command(command
);