update MemHeader to hold the flags
[glsdk/dspdce.git] / src / ti / framework / dce / dce_priv.h
1 /*\r
2  * Copyright (c) 2010, Texas Instruments Incorporated\r
3  * All rights reserved.\r
4  *\r
5  * Redistribution and use in source and binary forms, with or without\r
6  * modification, are permitted provided that the following conditions\r
7  * are met:\r
8  *\r
9  * *  Redistributions of source code must retain the above copyright\r
10  *    notice, this list of conditions and the following disclaimer.\r
11  *\r
12  * *  Redistributions in binary form must reproduce the above copyright\r
13  *    notice, this list of conditions and the following disclaimer in the\r
14  *    documentation and/or other materials provided with the distribution.\r
15  *\r
16  * *  Neither the name of Texas Instruments Incorporated nor the names of\r
17  *    its contributors may be used to endorse or promote products derived\r
18  *    from this software without specific prior written permission.\r
19  *\r
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\r
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\r
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\r
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\r
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\r
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\r
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
31  */\r
32 \r
33 #ifndef __DCE_PRIV_H__\r
34 #define __DCE_PRIV_H__\r
35 #include <ti/utils/osal/trace.h>\r
36 \r
37 #if defined(CORE0) || defined(CORE1)\r
38 #  define SERVER\r
39 Bool dce_init(void);\r
40 #else\r
41 #  define CLIENT\r
42 #endif\r
43 \r
44 #ifdef SERVER\r
45 /* these acquire/release functions should be implemented by the platform,\r
46  * ie. to use OMX RM if integrated with OMX build, or use directly slpm\r
47  * and/or register programming otherwise.  These are called from dce.c\r
48  * before/after the process() call\r
49  */\r
50 void ivahd_acquire(void);\r
51 void ivahd_release(void);\r
52 void ivahd_init(uint32_t chipset_id);\r
53 void ivahd_boot();\r
54 #endif\r
55 \r
56 #ifndef   DIM\r
57 #  define DIM(a) (sizeof((a)) / sizeof((a)[0]))\r
58 #endif\r
59 \r
60 \r
61 #ifndef TRUE\r
62 #  define TRUE 1\r
63 #endif\r
64 #ifndef FALSE\r
65 #  define FALSE 0\r
66 #endif\r
67 #ifndef NULL\r
68 #  define NULL ((void *)0)\r
69 #endif\r
70 \r
71 typedef struct MemHeader {\r
72     uint32_t size;\r
73     void    *ptr;       /* when used for BIOS heap blocks, just a raw ptr */\r
74     int32_t dma_buf_fd; /* shared dma buf fd */\r
75     uint32_t region;    /* mem region the buffer allocated from */\r
76     /* internal meta data for the buffer */\r
77     uint32_t offset;    /* offset for the actual data with in the buffer */\r
78     int32_t map_fd;     /* mmapped fd */\r
79     void * handle;      /*custom handle for the HLOS memallocator*/\r
80     int32_t flags;      /*Holds memory attributes*/\r
81 } MemHeader;\r
82 \r
83 #define P2H(p) (&(((MemHeader *)(p))[-1]))\r
84 #define H2P(h) ((void *)&(h)[1])\r
85 \r
86 #ifndef __packed\r
87 #  define __packed __attribute__((packed))\r
88 #endif\r
89 \r
90 #endif /* __DCE_PRIV_H__ */\r
91 \r