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