• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright 2001-2008 Texas Instruments - http://www.ti.com/
3  *
4  *  Licensed under the Apache License, Version 2.0 (the "License");
5  *  you may not use this file except in compliance with the License.
6  *  You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *  Unless required by applicable law or agreed to in writing, software
11  *  distributed under the License is distributed on an "AS IS" BASIS,
12  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *  See the License for the specific language governing permissions and
14  *  limitations under the License.
15  */
16 
17 
18 
19 /*
20  *  ======== dbdefs.h ========
21  *  DSP-BIOS Bridge driver support functions for TI OMAP processors.
22  *  Description:
23  *      Global definitions and constants for DSP/BIOS Bridge.
24  *
25  *! Revision History:
26  *! ================
27  *! 19-Apr-2004 sb  Aligned DMM definitions with Symbian
28  *! 08-Mar-2004 sb  Added MAPATTR & ELEM_SIZE for Dynamic Memory Mapping feature
29  *! 09-Feb-2004 vp  Added processor ID numbers for DSP and IVA
30  *! 06-Feb-2003 kc  Removed DSP_POSTMESSAGE. Updated IsValid*Event macros.
31  *! 22-Nov-2002 gp  Cleaned up comments, formatting.
32  *!                 Removed unused DSP_ENUMLASTNODE define.
33  *! 13-Feb-2002 jeh Added uSysStackSize to DSP_NDBPROPS.
34  *! 23-Jan-2002 ag  Added #define DSP_SHMSEG0.
35  *! 12-Dec-2001 ag  Added DSP_ESTRMMODE error code.
36  *! 04-Dec-2001 jeh Added DSP_ENOTCONNECTED error code.
37  *! 10-Dec-2001 kc: Modified macros and definitions to disable DSP_POSTMESSAGE.
38  *! 01-Nov-2001 jeh Added DSP_EOVERLAYMEMORY.
39  *! 18-Oct-2001 ag  Added DSP_STRMMODE type.
40  *!                 Added DSP_ENOTSHAREDMEM.
41  *! 21-Sep-2001 ag  Added additional error codes.
42  *! 07-Jun-2001 sg  Made DSPStream_AllocateBuffer fxn name plural.
43  *! 11-May-2001 jeh Changed DSP_NODE_MIN_PRIORITY from 0 to 1. Removed hNode
44  *!                 from DSP_NODEINFO.
45  *! 02-Apr-2001 sg  Added missing error codes, rearranged codes, switched to
46  *!             hex offsets, renamed some codes to match API spec.
47  *! 16-Jan-2001 jeh Added DSP_ESYMBOL, DSP_EUUID.
48  *! 13-Feb-2001 kc: DSP/BIOS Bridge name updates.
49  *! 05-Dec-2000 ag: Added DSP_RMSxxx user available message command codes.
50  *! 09-Nov-2000 rr: Added DSP_PROCEESORRESTART define; Removed DSP_PBUFFER.
51  *!                 Added DSP_DCD_ENOAUTOREGISTER, DSP_EUSER1-16, DSP_ESTRMFUL
52  *!                 Removed DSP_EDONE. Macros's modified.
53  *! 23-Oct-2000 jeh Replaced DSP_STREAMSTATECHANGE with DSP_STREAMDONE.
54  *! 09-Oct-2000 jeh Updated to version 0.9 DSP Bridge API spec.
55  *! 29-Sep-2000 kc  Added error codes for DCD and REG to simplify use of
56  *!                 these codes within the RM module.
57  *! 27-Sep-2000 jeh Added segid, alignment, uNumBufs to DSP_STREAMATTRIN.
58  *! 29-Aug-2000 jeh Added DSP_NODETYPE enum, changed DSP_EALREADYATTACHED to
59  *!                 DSP_EALREADYCONNECTED. Changed scStreamConnection[1]
60  *!                 to scStreamConnection[16] in DSP_NODEINFO structure.
61  *!                 Added DSP_NOTIFICATION, DSP_STRMATTR. PSTRING changed
62  *!                 back to TCHAR * and moved to dbtype.h.
63  *! 11-Aug-2000 rr: Macros to check valid events and notify masks added.
64  *! 09-Aug-2000 rr: Changed PSTRING to *CHAR
65  *! 07-Aug-2000 rr: PROC_IDLE/SYNCINIT/UNKNOWN state removed.
66  *! 20-Jul-2000 rr: Updated to version 0.8
67  *! 17-Jul-2000 rr: New PROC states added to the DSP_PROCSTATE.
68  *! 27-Jun-2000 rr: Created from dspapi.h
69  */
70 
71 #ifndef DBDEFS_
72 #define DBDEFS_
73 
74 #include <dbtype.h>		/* GPP side type definitions           */
75 #include <std.h>		/* DSP/BIOS type definitions           */
76 #include <rms_sh.h>		/* Types shared between GPP and DSP    */
77 
78 #ifdef __cplusplus
79 extern "C" {
80 #endif
81 
82 #define PG_SIZE_4K 4096
83 #define PG_MASK(pg_size) (~((pg_size)-1))
84 #define PG_ALIGN_LOW(addr, pg_size) ((addr) & PG_MASK(pg_size))
85 #define PG_ALIGN_HIGH(addr, pg_size) (((addr)+(pg_size)-1) & PG_MASK(pg_size))
86 
87 /* API return value and calling convention */
88 #define DBAPI                       DSP_STATUS CDECL
89 
90 /* Infinite time value for the uTimeout parameter to DSPStream_Select() */
91 #define DSP_FOREVER                 (-1)
92 
93 /* Maximum length of node name, used in DSP_NDBPROPS */
94 #define DSP_MAXNAMELEN              32
95 
96 /* uNotifyType values for the RegisterNotify() functions. */
97 #define DSP_SIGNALEVENT             0x00000001
98 
99 /* Types of events for processors */
100 #define DSP_PROCESSORSTATECHANGE    0x00000001
101 #define DSP_PROCESSORATTACH         0x00000002
102 #define DSP_PROCESSORDETACH         0x00000004
103 #define DSP_PROCESSORRESTART        0x00000008
104 
105 /* DSP exception events (DSP/BIOS and DSP MMU fault) */
106 #define DSP_MMUFAULT                0x00000010
107 #define DSP_SYSERROR                0x00000020
108 
109 /* IVA exception events (IVA MMU fault) */
110 #define IVA_MMUFAULT                0x00000040
111 /* Types of events for nodes */
112 #define DSP_NODESTATECHANGE         0x00000100
113 #define DSP_NODEMESSAGEREADY        0x00000200
114 
115 /* Types of events for streams */
116 #define DSP_STREAMDONE              0x00001000
117 #define DSP_STREAMIOCOMPLETION      0x00002000
118 
119 /* Handle definition representing the GPP node in DSPNode_Connect() calls */
120 #define DSP_HGPPNODE                0xFFFFFFFF
121 
122 /* Node directions used in DSPNode_Connect() */
123 #define DSP_TONODE                  1
124 #define DSP_FROMNODE                2
125 
126 /* Define Node Minimum and Maximum Priorities */
127 #define DSP_NODE_MIN_PRIORITY       1
128 #define DSP_NODE_MAX_PRIORITY       15
129 
130 /* Pre-Defined Message Command Codes available to user: */
131 #define DSP_RMSUSERCODESTART RMS_USER	/* Start of RMS user cmd codes */
132 #define DSP_RMSUSERCODEEND RMS_USER + RMS_MAXUSERCODES;	/* end of user codes */
133 #define DSP_RMSBUFDESC RMS_BUFDESC	/* MSG contains SM buffer description */
134 
135 /* Shared memory identifier for MEM segment named "SHMSEG0" */
136 #define DSP_SHMSEG0     (UINT)(-1)
137 
138 /* Processor ID numbers */
139 #define DSP_UNIT    0
140 #define IVA_UNIT    1
141 
142 #if ! defined (OMAP_2430) && ! defined (OMAP_3430)
143 #define DSPWORD       SHORT
144 #else
145 #define DSPWORD       BYTE
146 #endif
147 #define DSPWORDSIZE     sizeof(DSPWORD)
148 
149 /* Success & Failure macros  */
150 #define DSP_SUCCEEDED(Status)      ((INT)(Status) >= 0)
151 #define DSP_FAILED(Status)         ((INT)(Status) < 0)
152 
153 /* Power control enumerations */
154 #define PROC_PWRCONTROL             0x8070
155 
156 #define PROC_PWRMGT_ENABLE          (PROC_PWRCONTROL + 0x3)
157 #define PROC_PWRMGT_DISABLE         (PROC_PWRCONTROL + 0x4)
158 
159 /* Bridge Code Version */
160 #define BRIDGE_VERSION_CODE         333
161 
162 #if defined (OMAP_2430) || defined (OMAP_3430)
163 #define    MAX_PROFILES     16
164 #endif
165 
166 /* Types defined for 'Bridge API */
167 	typedef DWORD DSP_STATUS;	/* API return code type         */
168 
169 	typedef HANDLE DSP_HNODE;	/* Handle to a DSP Node object  */
170 	typedef HANDLE DSP_HPROCESSOR;	/* Handle to a Processor object */
171 	typedef HANDLE DSP_HSTREAM;	/* Handle to a Stream object    */
172 
173 	typedef ULONG DSP_PROCFAMILY;	/* Processor family             */
174 	typedef ULONG DSP_PROCTYPE;	/* Processor type (w/in family) */
175 	typedef ULONG DSP_RTOSTYPE;	/* Type of DSP RTOS             */
176 
177 	typedef ULONG DSP_RESOURCEMASK;	/* Mask for processor resources */
178 	typedef ULONG DSP_ERRORMASK;	/* Mask for various error types */
179 
180 /* Handy Macros */
181 #define IsValidProcEvent(x)    (((x) == 0) || (((x) & (DSP_PROCESSORSTATECHANGE | \
182                                     DSP_PROCESSORATTACH | \
183                                     DSP_PROCESSORDETACH | \
184                                     DSP_PROCESSORRESTART | \
185                                     DSP_NODESTATECHANGE | \
186                                     DSP_STREAMDONE | \
187                                     DSP_STREAMIOCOMPLETION | \
188                                     DSP_MMUFAULT | \
189                                     DSP_SYSERROR)) && \
190                                 !((x) & ~(DSP_PROCESSORSTATECHANGE | \
191                                     DSP_PROCESSORATTACH | \
192                                     DSP_PROCESSORDETACH | \
193                                     DSP_PROCESSORRESTART | \
194                                     DSP_NODESTATECHANGE | \
195                                     DSP_STREAMDONE | \
196                                     DSP_STREAMIOCOMPLETION | \
197                                     DSP_MMUFAULT | \
198                                     DSP_SYSERROR))))
199 
200 #define IsValidNodeEvent(x)    (((x) == 0) || (((x) & (DSP_NODESTATECHANGE | \
201                                 DSP_NODEMESSAGEREADY)) && \
202                                 !((x) & ~(DSP_NODESTATECHANGE | \
203                                 DSP_NODEMESSAGEREADY))))
204 
205 #define IsValidStrmEvent(x)     (((x) == 0) || (((x) & (DSP_STREAMDONE | \
206                                 DSP_STREAMIOCOMPLETION)) && \
207                                 !((x) & ~(DSP_STREAMDONE | \
208                                 DSP_STREAMIOCOMPLETION))))
209 
210 #define IsValidNotifyMask(x)   ((x) & DSP_SIGNALEVENT)
211 
212 /* The Node UUID structure */
213 	struct DSP_UUID {
214 		ULONG ulData1;
215 		USHORT usData2;
216 		USHORT usData3;
217 		BYTE ucData4;
218 		BYTE ucData5;
219 		UCHAR ucData6[6];
220 	};
221 	/*DSP_UUID, *DSP_HUUID;*/
222 
223 /* DCD types */
224 	typedef enum {
225 		DSP_DCDNODETYPE,
226 		DSP_DCDPROCESSORTYPE,
227 		DSP_DCDLIBRARYTYPE,
228 		DSP_DCDCREATELIBTYPE,
229 		DSP_DCDEXECUTELIBTYPE,
230 		DSP_DCDDELETELIBTYPE
231 	} DSP_DCDOBJTYPE;
232 
233 /* Processor states */
234 	typedef enum {
235 		PROC_STOPPED,
236 		PROC_LOADED,
237 		PROC_RUNNING,
238 		PROC_ERROR
239 	} DSP_PROCSTATE;
240 
241 /* Node types */
242 	typedef enum {
243 		NODE_DEVICE,
244 		NODE_TASK,
245 		NODE_DAISSOCKET,
246 		NODE_MESSAGE
247 	} DSP_NODETYPE;
248 
249 /* Node states */
250 	typedef enum {
251 		NODE_ALLOCATED,
252 		NODE_CREATED,
253 		NODE_RUNNING,
254 		NODE_PAUSED,
255 		NODE_DONE
256 	} DSP_NODESTATE;
257 
258 /* Stream states */
259 	typedef enum {
260 		STREAM_IDLE,
261 		STREAM_READY,
262 		STREAM_PENDING,
263 		STREAM_DONE
264 	} DSP_STREAMSTATE;
265 
266 /* Stream connect types */
267 	typedef enum {
268 		CONNECTTYPE_NODEOUTPUT,
269 		CONNECTTYPE_GPPOUTPUT,
270 		CONNECTTYPE_NODEINPUT,
271 		CONNECTTYPE_GPPINPUT
272 	} DSP_CONNECTTYPE;
273 
274 /* Stream mode types */
275 	typedef enum {
276 		STRMMODE_PROCCOPY,	/* Processor(s) copy stream data payloads */
277 		STRMMODE_ZEROCOPY,	/* Stream buffer pointers swapped, no data copied */
278 		STRMMODE_LDMA,	/* Local DMA : OMAP's System-DMA device */
279 		STRMMODE_RDMA	/* Remote DMA: OMAP's DSP-DMA device */
280 	} DSP_STRMMODE;
281 
282 /* Stream DMA priority. Only Low and High supported */
283 	typedef enum {
284 		DMAPRI_LOW,
285 		DMAPRI_HIGH
286 	} DSP_DMAPRIORITY;
287 
288 /* Resource Types */
289 	typedef enum {
290 		DSP_RESOURCE_DYNDARAM = 0,
291 		DSP_RESOURCE_DYNSARAM,
292 		DSP_RESOURCE_DYNEXTERNAL,
293 		DSP_RESOURCE_DYNSRAM,
294 		DSP_RESOURCE_PROCLOAD
295 	} DSP_RESOURCEINFOTYPE;
296 
297 /* Memory Segment Types */
298 	typedef enum {
299 		DSP_DYNDARAM = 0,
300 		DSP_DYNSARAM,
301 		DSP_DYNEXTERNAL,
302 		DSP_DYNSRAM
303 	} DSP_MEMTYPE;
304 
305 /* Memory Flush Types */
306        typedef enum {
307 		PROC_INVALIDATE_MEM = 0,
308 		PROC_WRITEBACK_MEM,
309 		PROC_WRITEBACK_INVALIDATE_MEM,
310 	} DSP_FLUSHTYPE;
311 
312 /* Memory Segment Status Values */
313 	 struct DSP_MEMSTAT {
314 		ULONG ulSize;
315 		ULONG ulTotalFreeSize;
316 		ULONG ulLenMaxFreeBlock;
317 		ULONG ulNumFreeBlocks;
318 		ULONG ulNumAllocBlocks;
319 	} ;
320 
321 /* Processor Load information Values */
322 	 struct DSP_PROCLOADSTAT {
323 		ULONG uCurrLoad;
324 		ULONG uPredictedLoad;
325 		ULONG uCurrDspFreq;
326 		ULONG uPredictedFreq;
327 	} ;
328 
329 /* Attributes for STRM connections between nodes */
330 	struct DSP_STRMATTR {
331 		UINT uSegid;	/* Memory segment on DSP to allocate buffers */
332 		UINT uBufsize;	/* Buffer size (DSP words) */
333 		UINT uNumBufs;	/* Number of buffers */
334 		UINT uAlignment;	/* Buffer alignment */
335 		UINT uTimeout;	/* Timeout for blocking STRM calls */
336 		UINT lMode;	/* mode of stream when opened */
337 		UINT uDMAChnlId;	/* DMA chnl id if DSP_STRMMODE is LDMA or RDMA */
338 		UINT uDMAPriority;	/* DMA channel priority 0=lowest, >0=high */
339 	} ;
340 
341 /* The DSP_CBDATA structure */
342 	struct DSP_CBDATA {
343 		ULONG cbData;
344 		BYTE cData[1];
345 	} ;
346 	/*DSP_CBDATA, *DSP_HCBDATA;*/
347 
348 /* The DSP_MSG structure */
349 	struct DSP_MSG {
350 		DWORD dwCmd;
351 		DWORD dwArg1;
352 		DWORD dwArg2;
353 	} ;
354 	/*DSP_MSG, *DSP_HMSG;*/
355 
356 /* The DSP_RESOURCEREQMTS structure for node's resource requirements  */
357 	struct DSP_RESOURCEREQMTS {
358 		DWORD cbStruct;
359 		UINT uStaticDataSize;
360 		UINT uGlobalDataSize;
361 		UINT uProgramMemSize;
362 		UINT uWCExecutionTime;
363 		UINT uWCPeriod;
364 		UINT uWCDeadline;
365 		UINT uAvgExectionTime;
366 		UINT uMinimumPeriod;
367 	} ;
368 	/*DSP_RESOURCEREQMTS, *DSP_HRESOURCEREQMTS;*/
369 
370 /*
371  * The DSP_STREAMCONNECT structure describes a stream connection
372  * between two nodes, or between a node and the GPP
373  */
374 	struct DSP_STREAMCONNECT {
375 		DWORD cbStruct;
376 		DSP_CONNECTTYPE lType;
377 		UINT uThisNodeStreamIndex;
378 		DSP_HNODE hConnectedNode;
379 		struct DSP_UUID uiConnectedNodeID;
380 		UINT uConnectedNodeStreamIndex;
381 	} ;
382 	/*DSP_STREAMCONNECT, *DSP_HSTREAMCONNECT;*/
383 
384 #if defined (OMAP_2430) || defined (OMAP_3430)
385 	struct DSP_NODEPROFS {
386 		UINT ulHeapSize;
387 	} ;
388 	/*DSP_NODEPROFS, *DSP_HNODEPROFS;*/
389 #endif
390 
391 /* The DSP_NDBPROPS structure reports the attributes of a node */
392 	struct DSP_NDBPROPS {
393 		DWORD cbStruct;
394 		struct DSP_UUID uiNodeID;
395 		CHARACTER acName[DSP_MAXNAMELEN];
396 		DSP_NODETYPE uNodeType;
397 		UINT bCacheOnGPP;
398 		struct DSP_RESOURCEREQMTS dspResourceReqmts;
399 		INT iPriority;
400 		UINT uStackSize;
401 		UINT uSysStackSize;
402 		UINT uStackSeg;
403 		UINT uMessageDepth;
404 		UINT uNumInputStreams;
405 		UINT uNumOutputStreams;
406 		UINT uTimeout;
407 #if defined (OMAP_2430) || defined (OMAP_3430)
408 		UINT uCountProfiles;	/* Number of supported profiles */
409 		struct DSP_NODEPROFS aProfiles[MAX_PROFILES];	/* Array of profiles */
410 #endif
411 		UINT uStackSegName; /* Stack Segment Name */
412 	} ;
413 	/*DSP_NDBPROPS, *DSP_HNDBPROPS;*/
414 
415     /* The DSP_NODEATTRIN structure describes the attributes of a node client */
416     struct DSP_NODEATTRIN {
417             DWORD cbStruct;
418             INT iPriority;
419             UINT uTimeout;
420 #if defined (OMAP_2430) || defined (OMAP_3430)
421             UINT    uProfileID;
422 			/* Reserved, for Bridge Internal use only */
423             UINT    uHeapSize;
424             PVOID   pGPPVirtAddr; /* Reserved, for Bridge Internal use only */
425 #endif
426         } ;
427 	/*DSP_NODEATTRIN, *DSP_HNODEATTRIN;*/
428 
429 /* The DSP_NODEINFO structure is used to retrieve information about a node */
430 	struct DSP_NODEINFO {
431 		DWORD cbStruct;
432 		struct DSP_NDBPROPS nbNodeDatabaseProps;
433 		UINT uExecutionPriority;
434 		DSP_NODESTATE nsExecutionState;
435 		DSP_HNODE hDeviceOwner;
436 		UINT uNumberStreams;
437 		struct DSP_STREAMCONNECT scStreamConnection[16];
438 		UINT uNodeEnv;
439 	} ;
440 	/*DSP_NODEINFO, *DSP_HNODEINFO;*/
441 
442 /* The DSP_NODEATTR structure describes the attributes of a node */
443 	struct DSP_NODEATTR {
444 		DWORD cbStruct;
445 		struct DSP_NODEATTRIN inNodeAttrIn;
446 		ULONG uInputs;
447 		ULONG uOutputs;
448 		struct DSP_NODEINFO iNodeInfo;
449 	} ;
450 	/*DSP_NODEATTR, *DSP_HNODEATTR;*/
451 
452 /*
453  *  Notification type: either the name of an opened event, or an event or
454  *  window handle.
455  */
456 	struct DSP_NOTIFICATION {
457 		PSTRING psName;
458 		HANDLE handle;
459 	} ;
460 	/*DSP_NOTIFICATION, *DSP_HNOTIFICATION;*/
461 
462 /* The DSP_PROCESSORATTRIN structure describes the attributes of a processor */
463 	struct DSP_PROCESSORATTRIN{
464 		DWORD cbStruct;
465 		UINT uTimeout;
466 	} ;
467 	/*DSP_PROCESSORATTRIN, *DSP_HPROCESSORATTRIN;*/
468 
469 	enum chipTypes {
470 		DSPTYPE_55 = 6,
471 		IVA_ARM7 = 0x97,
472 		DSPTYPE_64 = 0x99
473 	};
474 
475 /*
476  * The DSP_PROCESSORINFO structure describes basic capabilities of a
477  * DSP processor
478  */
479 	struct DSP_PROCESSORINFO {
480 		DWORD cbStruct;
481 		DSP_PROCFAMILY uProcessorFamily;
482 		DSP_PROCTYPE uProcessorType;
483 		UINT uClockRate;
484 		ULONG ulInternalMemSize;
485 		ULONG ulExternalMemSize;
486 		UINT uProcessorID;
487 		DSP_RTOSTYPE tyRunningRTOS;
488 		INT nNodeMinPriority;
489 		INT nNodeMaxPriority;
490 	} ;
491 	/*DSP_PROCESSORINFO, *DSP_HPROCESSORINFO;*/
492 
493 /* Error information of last DSP exception signalled to the GPP */
494 	struct DSP_ERRORINFO {
495 		DWORD dwErrMask;
496 		DWORD dwVal1;
497 		DWORD dwVal2;
498 		DWORD dwVal3;
499 	} ;
500 	/*DSP_ERRORINFO;*/
501 
502 /* The DSP_PROCESSORSTATE structure describes the state of a DSP processor */
503 	struct DSP_PROCESSORSTATE {
504 		DWORD cbStruct;
505 		DSP_PROCSTATE iState;
506 		struct DSP_ERRORINFO errInfo;
507 	} ;
508 	/*DSP_PROCESSORSTATE, *DSP_HPROCESSORSTATE;*/
509 
510 /*
511  * The DSP_RESOURCEINFO structure is used to retrieve information about a
512  * processor's resources
513  */
514 	struct DSP_RESOURCEINFO {
515 		DWORD cbStruct;
516 		DSP_RESOURCEINFOTYPE uResourceType;
517 		union {
518 			ULONG ulResource;
519 			struct DSP_MEMSTAT memStat;
520 			struct DSP_PROCLOADSTAT procLoadStat;
521 		} result;
522 	} ;
523 	/*DSP_RESOURCEINFO, *DSP_HRESOURCEINFO;*/
524 
525 /*
526  * The DSP_STREAMATTRIN structure describes the attributes of a stream,
527  * including segment and alignment of data buffers allocated with
528  * DSPStream_AllocateBuffers(), if applicable
529  */
530 	struct DSP_STREAMATTRIN {
531 		DWORD cbStruct;
532 		UINT uTimeout;
533 		UINT uSegment;
534 		UINT uAlignment;
535 		UINT uNumBufs;
536 		UINT lMode;
537 		UINT uDMAChnlId;
538 		UINT uDMAPriority;
539 	} ;
540 	/*DSP_STREAMATTRIN, *DSP_HSTREAMATTRIN;*/
541 
542 /* The DSP_BUFFERATTR structure describes the attributes of a data buffer */
543 	struct DSP_BUFFERATTR {
544 		DWORD cbStruct;
545 		UINT uSegment;
546 		UINT uAlignment;
547 	} ;
548 	/*DSP_BUFFERATTR, *DSP_HBUFFERATTR;*/
549 
550 /*
551  *  The DSP_STREAMINFO structure is used to retrieve information
552  *  about a stream.
553  */
554 	struct DSP_STREAMINFO {
555 		DWORD cbStruct;
556 		UINT uNumberBufsAllowed;
557 		UINT uNumberBufsInStream;
558 		ULONG ulNumberBytes;
559 		HANDLE hSyncObjectHandle;
560 		DSP_STREAMSTATE ssStreamState;
561 	} ;
562 	/*DSP_STREAMINFO, *DSP_HSTREAMINFO;*/
563 
564 /* DMM MAP attributes
565 It is a bit mask with each bit value indicating a specific attribute
566 bit 0 - GPP address type (user virtual=0, physical=1)
567 bit 1 - MMU Endianism (Big Endian=1, Little Endian=0)
568 bit 2 - MMU mixed page attribute (Mixed/ CPUES=1, TLBES =0)
569 bit 3 - MMU element size = 8bit (valid only for non mixed page entries)
570 bit 4 - MMU element size = 16bit (valid only for non mixed page entries)
571 bit 5 - MMU element size = 32bit (valid only for non mixed page entries)
572 bit 6 - MMU element size = 64bit (valid only for non mixed page entries)
573 */
574 
575 /* Types of mapping attributes */
576 
577 /* MPU address is virtual and needs to be translated to physical addr */
578 #define DSP_MAPVIRTUALADDR          0x00000000
579 #define DSP_MAPPHYSICALADDR         0x00000001
580 
581 /* Mapped data is big endian */
582 #define DSP_MAPBIGENDIAN            0x00000002
583 #define DSP_MAPLITTLEENDIAN         0x00000000
584 
585 /* Element size is based on DSP r/w access size */
586 #define DSP_MAPMIXEDELEMSIZE        0x00000004
587 
588 /*
589  * Element size for MMU mapping (8, 16, 32, or 64 bit)
590  * Ignored if DSP_MAPMIXEDELEMSIZE enabled
591  */
592 #define DSP_MAPELEMSIZE8            0x00000008
593 #define DSP_MAPELEMSIZE16           0x00000010
594 #define DSP_MAPELEMSIZE32           0x00000020
595 #define DSP_MAPELEMSIZE64           0x00000040
596 
597 #define DSP_MAPVMALLOCADDR         0x00000080
598 
599 #if defined (OMAP_2430) || defined (OMAP_3430)
600 #define GEM_CACHE_LINE_SIZE     128
601 #define GEM_L1P_PREFETCH_SIZE   128
602 #endif
603 
604 #ifdef __cplusplus
605 }
606 #endif
607 #endif				/* DBDEFS_ */
608