]> pilppa.org Git - linux-2.6-omap-h63xx.git/blob - drivers/media/mdtv/smscoreapi.h
V4L/DVB (8263): sms1xxx: merge ksyms
[linux-2.6-omap-h63xx.git] / drivers / media / mdtv / smscoreapi.h
1 #ifndef __smscoreapi_h__
2 #define __smscoreapi_h__
3
4 /* From sysksyms.h */
5
6 #include <linux/version.h>
7 #include <linux/device.h>
8 #include <linux/list.h>
9 #include <linux/mm.h>
10 #include <asm/scatterlist.h>
11 #include <asm/page.h>
12
13 #include <linux/mutex.h>
14
15 typedef struct mutex kmutex_t;
16
17 #define kmutex_init(_p_) mutex_init(_p_)
18 #define kmutex_lock(_p_) mutex_lock(_p_)
19 #define kmutex_trylock(_p_) mutex_trylock(_p_)
20 #define kmutex_unlock(_p_) mutex_unlock(_p_)
21
22
23 /* End  sysksyms.h */
24
25 #ifndef min
26 #define min(a,b) (((a) < (b)) ? (a) : (b))
27 #endif
28
29 #define SMS_ALLOC_ALIGNMENT                                     128
30 #define SMS_DMA_ALIGNMENT                                       16
31 #define SMS_ALIGN_ADDRESS(addr) ((((u32)(addr)) + (SMS_DMA_ALIGNMENT-1)) & ~(SMS_DMA_ALIGNMENT-1))
32
33 #define SMS_DEVICE_FAMILY2                                      1
34 #define SMS_ROM_NO_RESPONSE                                     2
35 #define SMS_DEVICE_NOT_READY                            0x8000000
36
37 typedef struct _smscore_device smscore_device_t;
38 typedef struct _smscore_client smscore_client_t;
39 typedef struct _smscore_buffer smscore_buffer_t;
40
41 typedef int (*hotplug_t)(smscore_device_t *coredev, struct device *device, int arrival);
42
43 typedef int (*setmode_t)(void *context, int mode);
44 typedef void (*detectmode_t)(void *context, int *mode);
45 typedef int (*sendrequest_t)(void *context, void *buffer, size_t size);
46 typedef int (*loadfirmware_t)(void *context, void *buffer, size_t size);
47 typedef int (*preload_t)(void *context);
48 typedef int (*postload_t)(void *context);
49
50 typedef int (*onresponse_t)(void *context, smscore_buffer_t *cb);
51 typedef void (*onremove_t)(void *context);
52
53 typedef struct _smscore_buffer
54 {
55         // public members, once passed to clients can be changed freely
56         struct list_head entry;
57         int                             size;
58         int                             offset;
59
60         // private members, read-only for clients
61         void                    *p;
62         dma_addr_t              phys;
63         unsigned long   offset_in_common;
64 } *psmscore_buffer_t;
65
66 typedef struct _smsdevice_params
67 {
68         struct device   *device;
69
70         int                             buffer_size;
71         int                             num_buffers;
72
73         char                    devpath[32];
74         unsigned long   flags;
75
76         setmode_t               setmode_handler;
77         detectmode_t    detectmode_handler;
78         sendrequest_t   sendrequest_handler;
79         preload_t               preload_handler;
80         postload_t              postload_handler;
81
82         void                    *context;
83 } smsdevice_params_t;
84
85 typedef struct _smsclient_params
86 {
87         int                             initial_id;
88         int                             data_type;
89         onresponse_t    onresponse_handler;
90         onremove_t              onremove_handler;
91
92         void                    *context;
93 } smsclient_params_t;
94
95 extern void smscore_registry_setmode(char *devpath, int mode);
96 extern int smscore_registry_getmode(char *devpath);
97
98 extern int smscore_register_hotplug(hotplug_t hotplug);
99 extern void smscore_unregister_hotplug(hotplug_t hotplug);
100
101 extern int smscore_register_device(smsdevice_params_t *params, smscore_device_t **coredev);
102 extern void smscore_unregister_device(smscore_device_t *coredev);
103
104 extern int smscore_start_device(smscore_device_t *coredev);
105 extern int smscore_load_firmware(smscore_device_t *coredev, char* filename, loadfirmware_t loadfirmware_handler);
106
107 extern int smscore_set_device_mode(smscore_device_t *coredev, int mode);
108 extern int smscore_get_device_mode(smscore_device_t *coredev);
109
110 extern int smscore_register_client(smscore_device_t *coredev, smsclient_params_t* params, smscore_client_t **client);
111 extern void smscore_unregister_client(smscore_client_t *client);
112
113 extern int smsclient_sendrequest(smscore_client_t *client, void *buffer, size_t size);
114 extern void smscore_onresponse(smscore_device_t *coredev, smscore_buffer_t *cb);
115
116 extern int smscore_get_common_buffer_size(smscore_device_t *coredev);
117 extern int smscore_map_common_buffer(smscore_device_t *coredev, struct vm_area_struct * vma);
118
119 extern smscore_buffer_t *smscore_getbuffer(smscore_device_t *coredev);
120 extern void smscore_putbuffer(smscore_device_t *coredev, smscore_buffer_t *cb);
121
122 #endif // __smscoreapi_h__