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: 36397 $
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  */
255 nn::Result GetSemaphoreEventHandle ( nn::Handle *);
256 
257 /* Please see man pages for details
258 
259 
260 
261 
262 
263 
264  */
265 nn::Result SetSemaphoreEventMask ( bit16 );
266 
267 /*
268 
269 */
270 
271 /* Please see man pages for details
272 
273 
274 
275 
276 
277 
278  */
279 nn::Result FlushDataCache( uptr addr, size_t size );
280 
281 /* Please see man pages for details
282 
283 
284 
285 
286 
287 
288  */
289 nn::Result InvalidateDataCache( uptr addr, size_t size );
290 
291 /* Please see man pages for details
292 
293 
294  */
295 bool IsComponentLoaded(void);
296 
297 /* Please see man pages for details
298 
299 
300  */
301 bool Sleep(void);
302 
303 /* Please see man pages for details
304 
305 
306  */
307 void WakeUp(void);
308 
309 /* Please see man pages for details
310 
311  */
312 void Awake();
313 
314 /* Please see man pages for details
315 
316  */
317 void OrderToWaitForFinalize();
318 
319 /* Please see man pages for details
320 
321 
322 
323 
324 
325  */
326 bool RegisterSleepWakeUpCallback(
327     void (*sleepCallback)(),
328     void (*wakeUpCallback)(),
329     void (*orderToWaitForFinalizeCallback)() = NULL
330 );
331 
332 /* Please see man pages for details
333 
334 
335 
336 
337 
338  */
339 bool ClearSleepWakeUpCallback(
340     void (*sleepCallback)(),
341     void (*wakeUpCallback)(),
342     void (*orderToWaitForFinalizeCallback)() = NULL
343 );
344 
345 /* Please see man pages for details
346 
347 
348 
349 
350 
351  */
352 nn::Result GetHeadphoneStatus(bool* isConnected);
353 
354 /* Please see man pages for details
355 
356 
357 
358 
359 
360  */
361 Result ForceHeadphoneOut(bool forceout);
362 
363 /* Please see man pages for details
364 
365 
366 
367 
368 
369  */
370 bool IsDspOccupied(void);
371 
372 } // namespace CTR {
373 } // namespace dsp {
374 } // namespace nn {
375 
376 #endif  // ifndef NN_DSP_CTR_DSP_API_H_
377