2361886212076fd1cc37ae83542e815e5dfadedd
[profile/mobile/platform/kernel/u-boot-tm1.git] / arch / arm / include / asm / arch-sc8825 / sci_service.h
1 /******************************************************************************
2  ** File Name:      sci_service.h                                                 *
3  ** Author:         Fancier.Fan                                               *
4  ** DATE:           03/16/2006                                                *
5  ** Copyright:      2006 Spreatrum, Incoporated. All Rights Reserved.         *
6  ** Description:    This file includes some common message type defines for   *
7  **                 client/server operation                                   * 
8  ******************************************************************************
9
10  ******************************************************************************
11  **                        Edit History                                       *
12  ** ------------------------------------------------------------------------- *
13  ** DATE           NAME             DESCRIPTION                               *
14  ** 03/16/2006     Fancier.Fan     Create.                                   *
15  ******************************************************************************/
16 #ifndef _SCI_SERVICE_H
17 #define _SCI_SERVICE_H
18
19 #include "sci_types.h"
20
21 /**---------------------------------------------------------------------------*
22  **                         Compiler Flag                                     *
23  **---------------------------------------------------------------------------*/
24 #ifdef __cplusplus
25     extern   "C"
26     {
27 #endif
28
29 /*****************************************************************************/
30 //  Description:    The type is used to identify different server
31 //      Global resource dependence: 
32 //  Author:         Richard.Yang
33 //      Note:           if external user needs to use it, please define the id 
34 //                  after USER_SERVICE
35 /*****************************************************************************/
36 typedef enum
37 {
38         FILE_SERVICE = 1,                               // File service, Reserved
39     AUDIO_SERVICE,                                      // Audio service
40     KEYPAD_SERVICE,                                     // Keypad service
41     USB_SERVICE,                                        // Udisk service
42     UPM_SERVICE=USB_SERVICE,
43         CHR_SERVICE,                                    // Charge service
44     TIME_SERVICE,                                       // RTC service
45     
46     INTERNAL_USER_SERVICE = 7,          // For MN and such service
47     INTERNAL_USER_SERVICE8,                     
48     INTERNAL_USER_SERVICE9,
49     
50     INTERNAL_USER_SERVICE10,
51     INTERNAL_USER_SERVICE11,
52     INTERNAL_USER_SERVICE12,
53     INTERNAL_USER_SERVICE13,
54     INTERNAL_USER_SERVICE14,
55     INTERNAL_USER_SERVICE15,
56     INTERNAL_USER_SERVICE16,
57     INTERNAL_USER_SERVICE17,
58     INTERNAL_USER_SERVICE18,
59     INTERNAL_USER_SERVICE19, 
60        
61     INTERNAL_USER_SERVICE20,    
62     INTERNAL_USER_SERVICE21,    
63     INTERNAL_USER_SERVICE22,    
64     INTERNAL_USER_SERVICE23,    
65     INTERNAL_USER_SERVICE24,    
66     INTERNAL_USER_SERVICE25,    
67     INTERNAL_USER_SERVICE26,    
68     INTERNAL_USER_SERVICE27,    
69     INTERNAL_USER_SERVICE28,    
70     INTERNAL_USER_SERVICE29, 
71        
72     INTERNAL_USER_SERVICE30,    
73     INTERNAL_USER_SERVICE31,    
74     INTERNAL_USER_SERVICE32,    
75     INTERNAL_USER_SERVICE33,    
76     INTERNAL_USER_SERVICE34,    
77     INTERNAL_USER_SERVICE35,    
78     INTERNAL_USER_SERVICE36,    
79     INTERNAL_USER_SERVICE37,    
80     INTERNAL_USER_SERVICE38,    
81     INTERNAL_USER_SERVICE39,
82     
83     INTERNAL_USER_SERVICE40,    
84     INTERNAL_USER_SERVICE41,    
85     INTERNAL_USER_SERVICE42,    
86     INTERNAL_USER_SERVICE43,    
87     INTERNAL_USER_SERVICE44,    
88     INTERNAL_USER_SERVICE45,    
89     INTERNAL_USER_SERVICE46,    
90     INTERNAL_USER_SERVICE47,    
91     INTERNAL_USER_SERVICE48,    
92     INTERNAL_USER_SERVICE49,
93
94     INTERNAL_USER_SERVICE50,    
95     INTERNAL_USER_SERVICE51,    
96     INTERNAL_USER_SERVICE52,    
97     INTERNAL_USER_SERVICE53,    
98     INTERNAL_USER_SERVICE54,    
99     INTERNAL_USER_SERVICE55,    
100     INTERNAL_USER_SERVICE56,    
101     INTERNAL_USER_SERVICE57,    
102     INTERNAL_USER_SERVICE58,    
103     INTERNAL_USER_SERVICE59,
104
105     INTERNAL_USER_SERVICE60,    
106     INTERNAL_USER_SERVICE61,    
107     INTERNAL_USER_SERVICE62,    
108     INTERNAL_USER_SERVICE63,    
109     
110     SYSTEM_SERVICE = 64,                        // 64~127 for system
111     SYSTEM_SERVICE65,
112     SYSTEM_SERVICE66,
113     SYSTEM_SERVICE67,
114     SYSTEM_SERVICE68,
115     SYSTEM_SERVICE69,
116     
117     SYSTEM_SERVICE70,
118         SYSTEM_SERVICE71,
119         SYSTEM_SERVICE72,
120         SYSTEM_SERVICE73,
121         SYSTEM_SERVICE74,
122         SYSTEM_SERVICE75,
123         SYSTEM_SERVICE76,
124         SYSTEM_SERVICE77,                                               
125         SYSTEM_SERVICE78,
126         SYSTEM_SERVICE79,       
127             
128     SYSTEM_SERVICE80,
129         SYSTEM_SERVICE81,
130         SYSTEM_SERVICE82,
131         SYSTEM_SERVICE83,
132         SYSTEM_SERVICE84,
133         SYSTEM_SERVICE85,
134         SYSTEM_SERVICE86,
135         SYSTEM_SERVICE87,                                               
136         SYSTEM_SERVICE88,
137         SYSTEM_SERVICE89,       
138
139     SYSTEM_SERVICE90,
140         SYSTEM_SERVICE91,
141         SYSTEM_SERVICE92,
142         SYSTEM_SERVICE93,
143         SYSTEM_SERVICE94,
144         SYSTEM_SERVICE95,
145         SYSTEM_SERVICE96,
146         SYSTEM_SERVICE97,                                               
147         SYSTEM_SERVICE98,
148         SYSTEM_SERVICE99,       
149                             
150     TP_SERVICE = 100,                           // For Touchpanel service 
151     ISP_SERVICE,
152     EXTERNAL_USER_SERVICE = 128,        // 128~255 for external user 
153     EXTERNAL_USER_SERVICE129,
154     
155     EXTERNAL_USER_SERVICE130,
156         EXTERNAL_USER_SERVICE131,
157         EXTERNAL_USER_SERVICE132,
158         EXTERNAL_USER_SERVICE133,
159         EXTERNAL_USER_SERVICE134,
160         EXTERNAL_USER_SERVICE135,
161         EXTERNAL_USER_SERVICE136,
162         EXTERNAL_USER_SERVICE137,                                               
163         EXTERNAL_USER_SERVICE138,
164         EXTERNAL_USER_SERVICE139,   
165         
166     EXTERNAL_USER_SERVICE140,
167         EXTERNAL_USER_SERVICE141,
168         EXTERNAL_USER_SERVICE142,
169         EXTERNAL_USER_SERVICE143,
170         EXTERNAL_USER_SERVICE144,
171         EXTERNAL_USER_SERVICE145,
172         EXTERNAL_USER_SERVICE146,
173         EXTERNAL_USER_SERVICE147,                                               
174         EXTERNAL_USER_SERVICE148,
175         EXTERNAL_USER_SERVICE149,       
176         
177         
178     EXTERNAL_USER_SERVICE150,
179         EXTERNAL_USER_SERVICE151,
180         EXTERNAL_USER_SERVICE152,
181         EXTERNAL_USER_SERVICE153,
182         EXTERNAL_USER_SERVICE154,
183         EXTERNAL_USER_SERVICE155,
184         EXTERNAL_USER_SERVICE156,
185         EXTERNAL_USER_SERVICE157,                                               
186         EXTERNAL_USER_SERVICE158,
187         EXTERNAL_USER_SERVICE159,   
188         
189     EXTERNAL_USER_SERVICE160,
190         EXTERNAL_USER_SERVICE161,
191         EXTERNAL_USER_SERVICE162,
192         EXTERNAL_USER_SERVICE163,
193         EXTERNAL_USER_SERVICE164,
194         EXTERNAL_USER_SERVICE165,
195         EXTERNAL_USER_SERVICE166,
196         EXTERNAL_USER_SERVICE167,                                               
197         EXTERNAL_USER_SERVICE168,
198         EXTERNAL_USER_SERVICE169,       
199         
200     EXTERNAL_USER_SERVICE170,
201         EXTERNAL_USER_SERVICE171,
202         EXTERNAL_USER_SERVICE172,
203         EXTERNAL_USER_SERVICE173,
204         EXTERNAL_USER_SERVICE174,
205         EXTERNAL_USER_SERVICE175,
206         EXTERNAL_USER_SERVICE176,
207         EXTERNAL_USER_SERVICE177,                                               
208         EXTERNAL_USER_SERVICE178,
209         EXTERNAL_USER_SERVICE179,       
210         
211     EXTERNAL_USER_SERVICE180,
212         EXTERNAL_USER_SERVICE181,
213         EXTERNAL_USER_SERVICE182,
214         EXTERNAL_USER_SERVICE183,
215         EXTERNAL_USER_SERVICE184,
216         EXTERNAL_USER_SERVICE185,
217         EXTERNAL_USER_SERVICE186,
218         EXTERNAL_USER_SERVICE187,                                               
219         EXTERNAL_USER_SERVICE188,
220         EXTERNAL_USER_SERVICE189,       
221         
222     EXTERNAL_USER_SERVICE190,
223         EXTERNAL_USER_SERVICE191,
224         EXTERNAL_USER_SERVICE192,
225         EXTERNAL_USER_SERVICE193,
226         EXTERNAL_USER_SERVICE194,
227         EXTERNAL_USER_SERVICE195,
228         EXTERNAL_USER_SERVICE196,
229         EXTERNAL_USER_SERVICE197,                                               
230         EXTERNAL_USER_SERVICE198,
231         EXTERNAL_USER_SERVICE199,   
232                 
233     EXTERNAL_USER_SERVICE200,
234         EXTERNAL_USER_SERVICE201,
235         EXTERNAL_USER_SERVICE202,
236         EXTERNAL_USER_SERVICE203,
237         EXTERNAL_USER_SERVICE204,
238         EXTERNAL_USER_SERVICE205,
239         EXTERNAL_USER_SERVICE206,
240         EXTERNAL_USER_SERVICE207,                                               
241         EXTERNAL_USER_SERVICE208,
242         EXTERNAL_USER_SERVICE209,               
243         
244                 
245     EXTERNAL_USER_SERVICE210,
246         EXTERNAL_USER_SERVICE211,
247         EXTERNAL_USER_SERVICE212,
248         EXTERNAL_USER_SERVICE213,
249         EXTERNAL_USER_SERVICE214,
250         EXTERNAL_USER_SERVICE215,
251         EXTERNAL_USER_SERVICE216,
252         EXTERNAL_USER_SERVICE217,                                               
253         EXTERNAL_USER_SERVICE218,
254         EXTERNAL_USER_SERVICE219,       
255
256     EXTERNAL_USER_SERVICE220,
257         EXTERNAL_USER_SERVICE221,
258         EXTERNAL_USER_SERVICE222,
259         EXTERNAL_USER_SERVICE223,
260         EXTERNAL_USER_SERVICE224,
261         EXTERNAL_USER_SERVICE225,
262         EXTERNAL_USER_SERVICE226,
263         EXTERNAL_USER_SERVICE227,                                               
264         EXTERNAL_USER_SERVICE228,
265         EXTERNAL_USER_SERVICE229,       
266
267     EXTERNAL_USER_SERVICE230,
268         EXTERNAL_USER_SERVICE231,
269         EXTERNAL_USER_SERVICE232,
270         EXTERNAL_USER_SERVICE233,
271         EXTERNAL_USER_SERVICE234,
272         EXTERNAL_USER_SERVICE235,
273         EXTERNAL_USER_SERVICE236,
274         EXTERNAL_USER_SERVICE237,                                               
275         EXTERNAL_USER_SERVICE238,
276         EXTERNAL_USER_SERVICE239,       
277
278     EXTERNAL_USER_SERVICE240,
279         EXTERNAL_USER_SERVICE241,
280         EXTERNAL_USER_SERVICE242,
281         EXTERNAL_USER_SERVICE243,
282         EXTERNAL_USER_SERVICE244,
283         EXTERNAL_USER_SERVICE245,
284         EXTERNAL_USER_SERVICE246,
285         EXTERNAL_USER_SERVICE247,                                               
286         EXTERNAL_USER_SERVICE248,
287         EXTERNAL_USER_SERVICE249, 
288                 
289     EXTERNAL_USER_SERVICE250,
290         EXTERNAL_USER_SERVICE251,
291         EXTERNAL_USER_SERVICE252,
292         EXTERNAL_USER_SERVICE253,
293         EXTERNAL_USER_SERVICE254,
294         EXTERNAL_USER_SERVICE255,
295         
296         MAX_SERVICE = 256
297 } SRV_ID_E;
298
299 #define UDISK_SERVICE USB_SERVICE   // UPM manager service.It has the same SERVICE ID with Udisk.
300                                     // UDISK_SERVICE is used in D platform.
301                                     // UPM_SERVICE is used in M platform.
302                                     // BUT this is forbidden and External User will defined its own service seperately
303 #define MN_APP_PHONE_SERVICE  (INTERNAL_USER_SERVICE)
304 #define MN_APP_CALL_SERVICE   (INTERNAL_USER_SERVICE+1)
305 #define MN_APP_GPRS_SERVICE   (INTERNAL_USER_SERVICE+2)
306 #define MN_APP_SMS_SERVICE    (INTERNAL_USER_SERVICE+3)
307 #define MN_APP_SMSCB_SERVICE  (INTERNAL_USER_SERVICE+4)
308 #define MN_APP_SS_SERVICE     (INTERNAL_USER_SERVICE+5)
309 #define MN_APP_SIMAT_SERVICE  (INTERNAL_USER_SERVICE+6)
310 #define MN_APP_SIM_SERVICE    (INTERNAL_USER_SERVICE+7)
311
312 #define DRM_SERVICE           (INTERNAL_USER_SERVICE+8)  // DRM Service
313
314 #define DTL_SERVICE               (INTERNAL_USER_SERVICE+9)  //MTV DTL
315 #define CSM_SERVICE           (INTERNAL_USER_SERVICE+10) //MTV channel status monitor service id  
316
317 #define STREAMING_SERVICE (INTERNAL_USER_SERVICE + 11) //streaming
318
319 #define MSENSOR_SERVICE       (INTERNAL_USER_SERVICE+12)    // M-sensor Service
320
321
322 /*****************************************************************************/
323 //  Description:    Below is the interface for server/client  
324 //      Global resource dependence: 
325 //  Author: Richard.Yang
326 //      Note:
327 /*****************************************************************************/
328
329 #define  SCI_ID_USED     0xff
330 #define  SCI_INVALID_ID  0x0100
331
332 /*****************************************************************************/
333 //  Description:    The function is used to be called when client need 
334 //                  indication from server
335 //      Global resource dependence: 
336 //  Author:         Richard.Yang
337 //      Note:           id:    Task id of the client which register the event
338 //                  The specific funtion of argc and argv, please see each
339 //                  server's definition, according to function
340 //                  PUBLIC void SCI_SendEventToClient(
341 //                  uint32 server_ID,     // Server ID, EXAMPLE: KEYPAD_SERVICE
342 //                  uint32 ui_event_type, // Message ID of the registered event
343 //                  void * signal_ptr     // Signal Sent to Client
344 //                  );
345 //                  Where argc equals ui_event_type, argv equals to signal_ptr
346 /*****************************************************************************/
347 typedef void (* REG_CALLBACK) (uint32 id, uint32 argc, void *argv);
348
349 /*****************************************************************************/
350 //  Description:    The function is create a server list 
351 //      Global resource dependence: 
352 //  Author:         Richard.Yang
353 //      Note:           
354 /*****************************************************************************/
355 PUBLIC  uint32 SCI_CreateClientList( // Return SCI_ID_USED if current ID is used by user
356                                      // Return SCI_SUCCESS if OK.
357     uint32       server_ID,       // Server ID, must be SRV_ID_E type
358     uint8        total_event_num, // Total number of the event.
359     REG_CALLBACK default_fun      // Default callback function. Called if 
360                                   // client has no callback function.
361 );
362
363 /*****************************************************************************/
364 //  Description:    The function is delete a server list 
365 //      Global resource dependence: 
366 //  Author:         Richard.Yang
367 //      Note:           
368 /*****************************************************************************/
369 PUBLIC  uint32 SCI_DeleteClientList( // Return SCI_ID_USED if current ID is used by user
370                                      // Return SCI_SUCCESS if OK.
371     uint32  server_ID       // Server ID, must be SRV_ID_E type
372 );
373
374 /*****************************************************************************/
375 //  Description:    The function is used by server to send meesage to 
376 //                  registered clients
377 //      Global resource dependence: 
378 //  Author:         Richard.Yang
379 //      Note:           
380 /*****************************************************************************/
381 PUBLIC void SCI_SendEventToClient(
382     uint32 server_ID,     // Server ID, EXAMPLE: KEYPAD_SERVICE
383     uint32 ui_event_type, // Message ID of the registered event
384     void * signal_ptr     // Signal Sent to Client
385 );
386
387 /*****************************************************************************/
388 //  Description:    The function is used by client to register event to server
389 //                  The current task is treated as the client which register
390 //                  the event
391 //      Global resource dependence: 
392 //  Author:         Richard.Yang
393 //      Note:           
394 /*****************************************************************************/
395 PUBLIC  uint32 SCI_RegisterMsg( // Return SCI_INVALID_ID if no such sever
396                                 // else return SCI_SUCCESS
397     uint32       server_ID,   // Server ID, must be SRV_ID_E type
398     uint8        start_event, // Start number of event
399     uint8        end_event,   // End number of event
400     REG_CALLBACK fun          // Callback function user defined
401 );
402
403 /*****************************************************************************/
404 //  Description:    The function is used by client to unregister event to server
405 //                  The current task is treated as the client which register
406 //                  the event
407 //      Global resource dependence: 
408 //  Author:         Richard.Yang
409 //      Note:           
410 /*****************************************************************************/
411 PUBLIC  uint32 SCI_UnregisterMsg( // Return SCI_INVALID_ID if no such sever
412                                   // else return SCI_SUCCESS
413     uint32       server_ID,   // Server ID, must be SRV_ID_E type
414     uint8        start_event, // Start number of event
415     uint8        end_event,   // End number of event
416     REG_CALLBACK fun          // Callback function user defined
417 );
418
419 /*****************************************************************************/
420 //  Description:    The function is used by client to register event to server
421 //      Global resource dependence: 
422 //  Author:         Richard.Yang
423 //      Note:           
424 /*****************************************************************************/
425 PUBLIC  uint32 SCI_RegisterTaskMsg( // Return SCI_INVALID_ID if no such sever
426                               // else return SCI_SUCCESS
427     uint32       server_ID,   // Server ID, must be SRV_ID_E type
428     uint8        start_event, // Start number of event
429     uint8        end_event,   // End number of event
430         uint32       task_ID,     // ID of the task which register the event
431     REG_CALLBACK fun          // Callback function user defined
432 );
433
434 /*****************************************************************************/
435 //  Description:    The function is used by client to unregister event to server
436 //      Global resource dependence: 
437 //  Author:         Richard.Yang
438 //      Note:           
439 /*****************************************************************************/
440 PUBLIC  uint32 SCI_UnregisterTaskMsg( // Return SCI_INVALID_ID if no such sever
441                                   // else return SCI_SUCCESS
442     uint32       server_ID,   // Server ID, must be SRV_ID_E type
443     uint8        start_event, // Start number of event
444     uint8        end_event,   // End number of event
445         uint32       task_ID,     // ID of the task which unregister the event
446     REG_CALLBACK fun          // Callback function user defined
447 );
448
449 /*****************************************************************************/
450 //  Description:    Check if the client has registe to the server.
451 //      Global resource dependence: 
452 //  Author:         Lin.Liu
453 //      Note:           
454 /*****************************************************************************/
455 PUBLIC BOOLEAN SCI_IsClientRegisted( // Return FALSE if the server is not exist
456                                      // or the client did not register any event
457                                      // to the server, else return TRUE 
458     uint32        server_ID,  // Server ID, must be the same with task id
459     uint32        client_ID   // ID of the task which register the event
460 );
461
462
463 /**---------------------------------------------------------------------------*
464  **                         Compiler Flag                                     *
465  **---------------------------------------------------------------------------*/
466 #ifdef __cplusplus
467     }
468 #endif
469
470 #endif // End _SCI_SERVICE_H
471