• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/staging/tidspbridge/include/dspbridge/
1/*
2 * dspapi-ioctl.h
3 *
4 * DSP-BIOS Bridge driver support functions for TI OMAP processors.
5 *
6 * Contains structures and commands that are used for interaction
7 * between the DDSP API and Bridge driver.
8 *
9 * Copyright (C) 2008 Texas Instruments, Inc.
10 *
11 * This package is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License version 2 as
13 * published by the Free Software Foundation.
14 *
15 * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
16 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
17 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
18 */
19
20#ifndef DSPAPIIOCTL_
21#define DSPAPIIOCTL_
22
23#include <dspbridge/cmm.h>
24#include <dspbridge/strmdefs.h>
25#include <dspbridge/dbdcd.h>
26
27union trapped_args {
28
29	/* MGR Module */
30	struct {
31		u32 node_id;
32		struct dsp_ndbprops __user *pndb_props;
33		u32 undb_props_size;
34		u32 __user *pu_num_nodes;
35	} args_mgr_enumnode_info;
36
37	struct {
38		u32 processor_id;
39		struct dsp_processorinfo __user *processor_info;
40		u32 processor_info_size;
41		u32 __user *pu_num_procs;
42	} args_mgr_enumproc_info;
43
44	struct {
45		struct dsp_uuid *uuid_obj;
46		enum dsp_dcdobjtype obj_type;
47		char *psz_path_name;
48	} args_mgr_registerobject;
49
50	struct {
51		struct dsp_uuid *uuid_obj;
52		enum dsp_dcdobjtype obj_type;
53	} args_mgr_unregisterobject;
54
55	struct {
56		struct dsp_notification __user *__user *anotifications;
57		u32 count;
58		u32 __user *pu_index;
59		u32 utimeout;
60	} args_mgr_wait;
61
62	/* PROC Module */
63	struct {
64		u32 processor_id;
65		struct dsp_processorattrin __user *attr_in;
66		void *__user *ph_processor;
67	} args_proc_attach;
68
69	struct {
70		void *hprocessor;
71		u32 dw_cmd;
72		struct dsp_cbdata __user *pargs;
73	} args_proc_ctrl;
74
75	struct {
76		void *hprocessor;
77	} args_proc_detach;
78
79	struct {
80		void *hprocessor;
81		void *__user *node_tab;
82		u32 node_tab_size;
83		u32 __user *pu_num_nodes;
84		u32 __user *pu_allocated;
85	} args_proc_enumnode_info;
86
87	struct {
88		void *hprocessor;
89		u32 resource_type;
90		struct dsp_resourceinfo *resource_info;
91		u32 resource_info_size;
92	} args_proc_enumresources;
93
94	struct {
95		void *hprocessor;
96		struct dsp_processorstate __user *proc_state_obj;
97		u32 state_info_size;
98	} args_proc_getstate;
99
100	struct {
101		void *hprocessor;
102		u8 __user *pbuf;
103		u8 __user *psize;
104		u32 max_size;
105	} args_proc_gettrace;
106
107	struct {
108		void *hprocessor;
109		s32 argc_index;
110		char __user *__user *user_args;
111		char *__user *user_envp;
112	} args_proc_load;
113
114	struct {
115		void *hprocessor;
116		u32 event_mask;
117		u32 notify_type;
118		struct dsp_notification __user *hnotification;
119	} args_proc_register_notify;
120
121	struct {
122		void *hprocessor;
123	} args_proc_start;
124
125	struct {
126		void *hprocessor;
127		u32 ul_size;
128		void *__user *pp_rsv_addr;
129	} args_proc_rsvmem;
130
131	struct {
132		void *hprocessor;
133		u32 ul_size;
134		void *prsv_addr;
135	} args_proc_unrsvmem;
136
137	struct {
138		void *hprocessor;
139		void *pmpu_addr;
140		u32 ul_size;
141		void *req_addr;
142		void *__user *pp_map_addr;
143		u32 ul_map_attr;
144	} args_proc_mapmem;
145
146	struct {
147		void *hprocessor;
148		u32 ul_size;
149		void *map_addr;
150	} args_proc_unmapmem;
151
152	struct {
153		void *hprocessor;
154		void *pmpu_addr;
155		u32 ul_size;
156		u32 dir;
157	} args_proc_dma;
158
159	struct {
160		void *hprocessor;
161		void *pmpu_addr;
162		u32 ul_size;
163		u32 ul_flags;
164	} args_proc_flushmemory;
165
166	struct {
167		void *hprocessor;
168	} args_proc_stop;
169
170	struct {
171		void *hprocessor;
172		void *pmpu_addr;
173		u32 ul_size;
174	} args_proc_invalidatememory;
175
176	/* NODE Module */
177	struct {
178		void *hprocessor;
179		struct dsp_uuid __user *node_id_ptr;
180		struct dsp_cbdata __user *pargs;
181		struct dsp_nodeattrin __user *attr_in;
182		void *__user *ph_node;
183	} args_node_allocate;
184
185	struct {
186		void *hnode;
187		u32 usize;
188		struct dsp_bufferattr __user *pattr;
189		u8 *__user *pbuffer;
190	} args_node_allocmsgbuf;
191
192	struct {
193		void *hnode;
194		s32 prio;
195	} args_node_changepriority;
196
197	struct {
198		void *hnode;
199		u32 stream_id;
200		void *other_node;
201		u32 other_stream;
202		struct dsp_strmattr __user *pattrs;
203		struct dsp_cbdata __user *conn_param;
204	} args_node_connect;
205
206	struct {
207		void *hnode;
208	} args_node_create;
209
210	struct {
211		void *hnode;
212	} args_node_delete;
213
214	struct {
215		void *hnode;
216		struct dsp_bufferattr __user *pattr;
217		u8 *pbuffer;
218	} args_node_freemsgbuf;
219
220	struct {
221		void *hnode;
222		struct dsp_nodeattr __user *pattr;
223		u32 attr_size;
224	} args_node_getattr;
225
226	struct {
227		void *hnode;
228		struct dsp_msg __user *message;
229		u32 utimeout;
230	} args_node_getmessage;
231
232	struct {
233		void *hnode;
234	} args_node_pause;
235
236	struct {
237		void *hnode;
238		struct dsp_msg __user *message;
239		u32 utimeout;
240	} args_node_putmessage;
241
242	struct {
243		void *hnode;
244		u32 event_mask;
245		u32 notify_type;
246		struct dsp_notification __user *hnotification;
247	} args_node_registernotify;
248
249	struct {
250		void *hnode;
251	} args_node_run;
252
253	struct {
254		void *hnode;
255		int __user *pstatus;
256	} args_node_terminate;
257
258	struct {
259		void *hprocessor;
260		struct dsp_uuid __user *node_id_ptr;
261		struct dsp_ndbprops __user *node_props;
262	} args_node_getuuidprops;
263
264	/* STRM module */
265
266	struct {
267		void *hstream;
268		u32 usize;
269		u8 *__user *ap_buffer;
270		u32 num_bufs;
271	} args_strm_allocatebuffer;
272
273	struct {
274		void *hstream;
275	} args_strm_close;
276
277	struct {
278		void *hstream;
279		u8 *__user *ap_buffer;
280		u32 num_bufs;
281	} args_strm_freebuffer;
282
283	struct {
284		void *hstream;
285		void **ph_event;
286	} args_strm_geteventhandle;
287
288	struct {
289		void *hstream;
290		struct stream_info __user *stream_info;
291		u32 stream_info_size;
292	} args_strm_getinfo;
293
294	struct {
295		void *hstream;
296		bool flush_flag;
297	} args_strm_idle;
298
299	struct {
300		void *hstream;
301		u8 *pbuffer;
302		u32 dw_bytes;
303		u32 dw_buf_size;
304		u32 dw_arg;
305	} args_strm_issue;
306
307	struct {
308		void *hnode;
309		u32 direction;
310		u32 index;
311		struct strm_attr __user *attr_in;
312		void *__user *ph_stream;
313	} args_strm_open;
314
315	struct {
316		void *hstream;
317		u8 *__user *buf_ptr;
318		u32 __user *bytes;
319		u32 __user *buf_size_ptr;
320		u32 __user *pdw_arg;
321	} args_strm_reclaim;
322
323	struct {
324		void *hstream;
325		u32 event_mask;
326		u32 notify_type;
327		struct dsp_notification __user *hnotification;
328	} args_strm_registernotify;
329
330	struct {
331		void *__user *stream_tab;
332		u32 strm_num;
333		u32 __user *pmask;
334		u32 utimeout;
335	} args_strm_select;
336
337	/* CMM Module */
338	struct {
339		struct cmm_object *hcmm_mgr;
340		u32 usize;
341		struct cmm_attrs *pattrs;
342		void **pp_buf_va;
343	} args_cmm_allocbuf;
344
345	struct {
346		struct cmm_object *hcmm_mgr;
347		void *buf_pa;
348		u32 ul_seg_id;
349	} args_cmm_freebuf;
350
351	struct {
352		void *hprocessor;
353		struct cmm_object *__user *ph_cmm_mgr;
354	} args_cmm_gethandle;
355
356	struct {
357		struct cmm_object *hcmm_mgr;
358		struct cmm_info __user *cmm_info_obj;
359	} args_cmm_getinfo;
360
361	/* UTIL module */
362	struct {
363		s32 util_argc;
364		char **pp_argv;
365	} args_util_testdll;
366};
367
368/*
369 * Dspbridge Ioctl numbering scheme
370 *
371 *    7                           0
372 *  ---------------------------------
373 *  |  Module   |   Ioctl Number    |
374 *  ---------------------------------
375 *  | x | x | x | 0 | 0 | 0 | 0 | 0 |
376 *  ---------------------------------
377 */
378
379/* Ioctl driver identifier */
380#define DB		0xDB
381
382/*
383 * Following are used to distinguish between module ioctls, this is needed
384 * in case new ioctls are introduced.
385 */
386#define DB_MODULE_MASK		0xE0
387#define DB_IOC_MASK		0x1F
388
389/* Ioctl module masks */
390#define DB_MGR		0x0
391#define DB_PROC		0x20
392#define DB_NODE		0x40
393#define DB_STRM		0x60
394#define DB_CMM		0x80
395
396#define DB_MODULE_SHIFT		5
397
398/* Used to calculate the ioctl per dspbridge module */
399#define DB_IOC(module, num) \
400			(((module) & DB_MODULE_MASK) | ((num) & DB_IOC_MASK))
401/* Used to get dspbridge ioctl module */
402#define DB_GET_MODULE(cmd)	((cmd) & DB_MODULE_MASK)
403/* Used to get dspbridge ioctl number */
404#define DB_GET_IOC(cmd)		((cmd) & DB_IOC_MASK)
405
406/* TODO: Remove deprecated and not implemented */
407
408/* MGR Module */
409#define MGR_ENUMNODE_INFO	_IOWR(DB, DB_IOC(DB_MGR, 0), unsigned long)
410#define MGR_ENUMPROC_INFO	_IOWR(DB, DB_IOC(DB_MGR, 1), unsigned long)
411#define MGR_REGISTEROBJECT	_IOWR(DB, DB_IOC(DB_MGR, 2), unsigned long)
412#define MGR_UNREGISTEROBJECT	_IOWR(DB, DB_IOC(DB_MGR, 3), unsigned long)
413#define MGR_WAIT		_IOWR(DB, DB_IOC(DB_MGR, 4), unsigned long)
414/* MGR_GET_PROC_RES Deprecated */
415#define MGR_GET_PROC_RES	_IOR(DB, DB_IOC(DB_MGR, 5), unsigned long)
416
417/* PROC Module */
418#define PROC_ATTACH		_IOWR(DB, DB_IOC(DB_PROC, 0), unsigned long)
419#define PROC_CTRL		_IOR(DB, DB_IOC(DB_PROC, 1), unsigned long)
420/* PROC_DETACH Deprecated */
421#define PROC_DETACH		_IOR(DB, DB_IOC(DB_PROC, 2), unsigned long)
422#define PROC_ENUMNODE		_IOWR(DB, DB_IOC(DB_PROC, 3), unsigned long)
423#define PROC_ENUMRESOURCES	_IOWR(DB, DB_IOC(DB_PROC, 4), unsigned long)
424#define PROC_GET_STATE		_IOWR(DB, DB_IOC(DB_PROC, 5), unsigned long)
425#define PROC_GET_TRACE		_IOWR(DB, DB_IOC(DB_PROC, 6), unsigned long)
426#define PROC_LOAD		_IOW(DB, DB_IOC(DB_PROC, 7), unsigned long)
427#define PROC_REGISTERNOTIFY	_IOWR(DB, DB_IOC(DB_PROC, 8), unsigned long)
428#define PROC_START		_IOW(DB, DB_IOC(DB_PROC, 9), unsigned long)
429#define PROC_RSVMEM		_IOWR(DB, DB_IOC(DB_PROC, 10), unsigned long)
430#define PROC_UNRSVMEM		_IOW(DB, DB_IOC(DB_PROC, 11), unsigned long)
431#define PROC_MAPMEM		_IOWR(DB, DB_IOC(DB_PROC, 12), unsigned long)
432#define PROC_UNMAPMEM		_IOR(DB, DB_IOC(DB_PROC, 13), unsigned long)
433#define PROC_FLUSHMEMORY	_IOW(DB, DB_IOC(DB_PROC, 14), unsigned long)
434#define PROC_STOP		_IOWR(DB, DB_IOC(DB_PROC, 15), unsigned long)
435#define PROC_INVALIDATEMEMORY	_IOW(DB, DB_IOC(DB_PROC, 16), unsigned long)
436#define PROC_BEGINDMA		_IOW(DB, DB_IOC(DB_PROC, 17), unsigned long)
437#define PROC_ENDDMA		_IOW(DB, DB_IOC(DB_PROC, 18), unsigned long)
438
439/* NODE Module */
440#define NODE_ALLOCATE		_IOWR(DB, DB_IOC(DB_NODE, 0), unsigned long)
441#define NODE_ALLOCMSGBUF	_IOWR(DB, DB_IOC(DB_NODE, 1), unsigned long)
442#define NODE_CHANGEPRIORITY	_IOW(DB, DB_IOC(DB_NODE, 2), unsigned long)
443#define NODE_CONNECT		_IOW(DB, DB_IOC(DB_NODE, 3), unsigned long)
444#define NODE_CREATE		_IOW(DB, DB_IOC(DB_NODE, 4), unsigned long)
445#define NODE_DELETE		_IOW(DB, DB_IOC(DB_NODE, 5), unsigned long)
446#define NODE_FREEMSGBUF		_IOW(DB, DB_IOC(DB_NODE, 6), unsigned long)
447#define NODE_GETATTR		_IOWR(DB, DB_IOC(DB_NODE, 7), unsigned long)
448#define NODE_GETMESSAGE		_IOWR(DB, DB_IOC(DB_NODE, 8), unsigned long)
449#define NODE_PAUSE		_IOW(DB, DB_IOC(DB_NODE, 9), unsigned long)
450#define NODE_PUTMESSAGE		_IOW(DB, DB_IOC(DB_NODE, 10), unsigned long)
451#define NODE_REGISTERNOTIFY	_IOWR(DB, DB_IOC(DB_NODE, 11), unsigned long)
452#define NODE_RUN		_IOW(DB, DB_IOC(DB_NODE, 12), unsigned long)
453#define NODE_TERMINATE		_IOWR(DB, DB_IOC(DB_NODE, 13), unsigned long)
454#define NODE_GETUUIDPROPS	_IOWR(DB, DB_IOC(DB_NODE, 14), unsigned long)
455
456/* STRM Module */
457#define STRM_ALLOCATEBUFFER	_IOWR(DB, DB_IOC(DB_STRM, 0), unsigned long)
458#define STRM_CLOSE		_IOW(DB, DB_IOC(DB_STRM, 1), unsigned long)
459#define STRM_FREEBUFFER		_IOWR(DB, DB_IOC(DB_STRM, 2), unsigned long)
460#define STRM_GETEVENTHANDLE	_IO(DB, DB_IOC(DB_STRM, 3))	/* Not Impl'd */
461#define STRM_GETINFO		_IOWR(DB, DB_IOC(DB_STRM, 4), unsigned long)
462#define STRM_IDLE		_IOW(DB, DB_IOC(DB_STRM, 5), unsigned long)
463#define STRM_ISSUE		_IOW(DB, DB_IOC(DB_STRM, 6), unsigned long)
464#define STRM_OPEN		_IOWR(DB, DB_IOC(DB_STRM, 7), unsigned long)
465#define STRM_RECLAIM		_IOWR(DB, DB_IOC(DB_STRM, 8), unsigned long)
466#define STRM_REGISTERNOTIFY	_IOWR(DB, DB_IOC(DB_STRM, 9), unsigned long)
467#define STRM_SELECT		_IOWR(DB, DB_IOC(DB_STRM, 10), unsigned long)
468
469/* CMM Module */
470#define CMM_ALLOCBUF		_IO(DB, DB_IOC(DB_CMM, 0))	/* Not Impl'd */
471#define CMM_FREEBUF		_IO(DB, DB_IOC(DB_CMM, 1))	/* Not Impl'd */
472#define CMM_GETHANDLE		_IOR(DB, DB_IOC(DB_CMM, 2), unsigned long)
473#define CMM_GETINFO		_IOR(DB, DB_IOC(DB_CMM, 3), unsigned long)
474
475#endif /* DSPAPIIOCTL_ */
476