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