1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     dsp_Api.h
4 
5   Copyright (C)2009-2012 Nintendo Co., Ltd.  All rights reserved.
6 
7   These coded instructions, statements, and computer programs contain
8   proprietary information of Nintendo of America Inc. and/or Nintendo
9   Company Ltd., and are protected by Federal copyright law.  They may
10   not be disclosed to third parties or copied or duplicated in any form,
11   in whole or in part, without the prior written consent of Nintendo.
12 
13   $Rev: 46347 $
14  *---------------------------------------------------------------------------*/
15 
16 /* Please see man pages for details
17 
18  */
19 #ifndef NN_DSP_CTR_MPCORE_DSP_API_H_
20 #define NN_DSP_CTR_MPCORE_DSP_API_H_
21 
22 #include <nn/Handle.h>
23 
24 namespace nn {
25 namespace dsp {
26 namespace CTR {
27 
28 namespace detail
29 {
30     nn::Result InitializeBase(Handle* pSession, const char* name);
31     nn::Result FinalizeBase  (Handle* pSession);
32 }
33 
34 namespace
35 {
36     const char PORT_NAME_DSP[]    = "dsp::DSP";
37 }
38 
InitializeIpc(Handle * pSession)39 inline nn::Result InitializeIpc(Handle* pSession)    { return detail::InitializeBase(pSession, PORT_NAME_DSP); }
FinalizeIpc(Handle * pSession)40 inline nn::Result FinalizeIpc  (Handle* pSession)    { return detail::FinalizeBase  (pSession); }
41 
42 /* Please see man pages for details
43 
44 
45  */
46 
47 /* Please see man pages for details
48 
49 
50 
51  */
52 nn::Result    Initialize( void );
53 
54 /* Please see man pages for details
55 
56  */
57 void          Finalize( void );
58 
59 /* Please see man pages for details
60 
61 
62 
63 
64 
65 
66 
67 
68 
69  */
70 nn::Result    LoadComponent( const u8 pComponent[], size_t size, bit16 maskPram = 0xff, bit16 maskDram = 0xff ) ;
71 nn::Result    LoadComponentCore( const u8 pComponent[], size_t size, bit16 maskPram = 0xff, bit16 maskDram = 0xff ) ;
72 
73 /* Please see man pages for details
74 
75 
76 
77 
78 
79  */
80 nn::Result    LoadDefaultComponent( void );
81 
82 /* Please see man pages for details
83 
84 
85 
86  */
87 nn::Result    UnloadComponent( void );
88 nn::Result    UnloadComponentCore( void );
89 
90 /*
91 
92 */
93 
94 /* Please see man pages for details
95 
96 
97  */
98 
99 /* Please see man pages for details
100 
101 
102 
103 
104 
105 
106 
107  */
108 nn::Result RegisterInterruptEvents(nn::Handle handle, s32 type, s32 port = 0);
109 
110 /* Please see man pages for details
111 
112 
113 
114 
115 
116 
117  */
118 nn::Result RecvData( u16 regNo, u16 *pValue );
119 
120 /* Please see man pages for details
121 
122 
123 
124 
125 
126 
127  */
128 nn::Result SendData( u16 regNo, u16 value );
129 
130 /* Please see man pages for details
131 
132 
133 
134 
135 
136 
137  */
138 nn::Result RecvDataIsReady( u16 regNo, bool* pStatus );
139 
140 /* Please see man pages for details
141 
142 
143 
144 
145 
146 
147  */
148 nn::Result SendDataIsEmpty( u16 regNo, bool * pStatus );
149 
150 /* Please see man pages for details
151 
152 
153 
154 
155 
156 
157  */
158 nn::Result GetVirtualAddress(uptr physicalAddress, uptr * pVirtualAddress);
159 
160 /* Please see man pages for details
161 
162 
163 
164 
165 
166 
167  */
168 nn::Result GetPhysicalAddress(uptr address, uptr * pPhysicalAddress);
169 
170 /* Please see man pages for details
171 
172 
173 
174 
175 
176 
177  */
178 nn::Result ConvertProcessAddressFromDspDram(uptr addressOnDsp, uptr * pAddressOnHost);
179 
180 /* Please see man pages for details
181 
182 
183 
184 
185 
186 
187 
188 
189  */
190 nn::Result ReadPipeIfPossible( int port, void* buffer, u16 length, u16* pLengthRead );
191 
192 /* Please see man pages for details
193 
194 
195 
196 
197 
198 
199 
200  */
201 nn::Result WriteProcessPipe( int port, const void *buffer, u32 length );
202 
203 /* Please see man pages for details
204 
205 
206 
207 
208 
209  */
210 nn::Result CheckSemaphoreRequest( bool* pIsRequested );
211 
212 /* Please see man pages for details
213 
214 
215 
216 
217 
218  */
219 nn::Result ClearSemaphore( u16 mask );
220 
221 /* Please see man pages for details
222 
223 
224 
225 
226 
227  */
228 nn::Result MaskSemaphore( u16 mask );
229 
230 /* Please see man pages for details
231 
232 
233 
234 
235 
236  */
237 nn::Result GetSemaphore( u16* pMask );
238 
239 /* Please see man pages for details
240 
241 
242 
243 
244 
245  */
246 nn::Result SetSemaphore( u16 mask );
247 
248 /* Please see man pages for details
249 
250 
251 
252 
253 
254  */
255 nn::Result GetSemaphoreEventHandle ( nn::Handle *);
256 
257 /* Please see man pages for details
258 
259 
260 
261 
262 
263  */
264 nn::Result SetSemaphoreEventMask ( bit16 );
265 
266 /*
267 
268 */
269 
270 /* Please see man pages for details
271 
272 
273 
274 
275 
276 
277  */
278 nn::Result FlushDataCache( uptr addr, size_t size );
279 
280 /* Please see man pages for details
281 
282 
283 
284 
285 
286 
287  */
288 nn::Result InvalidateDataCache( uptr addr, size_t size );
289 
290 /* Please see man pages for details
291 
292 
293  */
294 bool IsComponentLoaded(void);
295 
296 /* Please see man pages for details
297 
298 
299  */
300 bool Sleep(void);
301 
302 /* Please see man pages for details
303 
304 
305  */
306 void WakeUp(void);
307 
308 /* Please see man pages for details
309 
310  */
311 void Awake();
312 
313 /* Please see man pages for details
314 
315  */
316 void OrderToWaitForFinalize();
317 
318 /* Please see man pages for details
319 
320 
321 
322 
323 
324  */
325 bool RegisterSleepWakeUpCallback(
326     void (*sleepCallback)(),
327     void (*wakeUpCallback)(),
328     void (*orderToWaitForFinalizeCallback)() = NULL
329 );
330 
331 /* Please see man pages for details
332 
333 
334 
335 
336 
337  */
338 bool ClearSleepWakeUpCallback(
339     void (*sleepCallback)(),
340     void (*wakeUpCallback)(),
341     void (*orderToWaitForFinalizeCallback)() = NULL
342 );
343 
344 /* Please see man pages for details
345 
346 
347 
348 
349 
350  */
351 nn::Result GetHeadphoneStatus(bool* isConnected);
352 
353 /* Please see man pages for details
354 
355 
356 
357 
358 
359  */
360 Result ForceHeadphoneOut(bool forceout);
361 
362 /* Please see man pages for details
363 
364 
365 
366 
367  */
368 bool IsDspOccupied(void);
369 
370 } // namespace CTR {
371 } // namespace dsp {
372 } // namespace nn  {
373 
374 #endif  // ifndef NN_DSP_CTR_MPCORE_DSP_API_H_
375