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