1 /******************************************************************************
2  *                                                                            *
3  * Copyright (C) 2018 The Android Open Source Project
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at:
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *****************************************************************************
18  * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19 */
20 #ifndef IXHEAACD_MEMORY_STANDARDS_H
21 #define IXHEAACD_MEMORY_STANDARDS_H
22 
23 /*****************************************************************************/
24 /* type definitions                                                          */
25 /*****************************************************************************/
26 /* standard memory table descriptor for libraries */
27 typedef struct {
28   UWORD32 ui_size;         /* size of the memory in bytes   */
29   UWORD32 ui_alignment;    /* alignment in bytes            */
30   UWORD32 ui_type;         /* type of memory                */
31   UWORD32 ui_placement[2]; /* 64 bit placement info     */
32   UWORD32 ui_priority;     /* the importance for placement  */
33   UWORD32 ui_placed[2];    /* the o_red location for placement  */
34 } ia_mem_info_struct;
35 
36 /*****************************************************************************/
37 /* Constant hash defines                                                     */
38 /*****************************************************************************/
39 /* when you don't need alignment, pass this to memory library */
40 #define IA_MEM_NO_ALIGN 0x01
41 
42 /* ittiam standard memory types */
43 /* to be used inter frames */
44 #define IA_MEMTYPE_PERSIST 0x00
45 /* read write, to be used intra frames */
46 #define IA_MEMTYPE_SCRATCH 0x01
47 /* read only memory, intra frame */
48 #define IA_MEMTYPE_INPUT 0x02
49 /* read-write memory, for usable output, intra frame */
50 #define IA_MEMTYPE_OUTPUT 0x03
51 /* readonly memory, inter frame */
52 #define IA_MEMTYPE_TABLE 0x04
53 /* input buffer before mem tabs allocation */
54 #define IA_MEMTYPE_PRE_FRAME_INPUT 0x05
55 /* input buffer before mem tabs allocation */
56 #define IA_MEMTYPE_PRE_FRAME_SCRATCH 0x06
57 /* for local variables */
58 #define IA_MEMTYPE_AUTO_VAR 0x80
59 
60 /* ittiam standard memory priorities */
61 #define IA_MEMPRIORITY_ANYWHERE 0x00
62 #define IA_MEMPRIORITY_LOWEST 0x01
63 #define IA_MEMPRIORITY_LOW 0x02
64 #define IA_MEMPRIORITY_NORM 0x03
65 #define IA_MEMPRIORITY_ABOVE_NORM 0x04
66 #define IA_MEMPRIORITY_HIGH 0x05
67 #define IA_MEMPRIORITY_HIGHER 0x06
68 #define IA_MEMPRIORITY_CRITICAL 0x07
69 
70 /* ittiam standard memory placements */
71 /* placement is defined by 64 bits */
72 
73 #define IA_MEMPLACE_FAST_RAM_0 0x000001
74 #define IA_MEMPLACE_FAST_RAM_1 0x000002
75 #define IA_MEMPLACE_FAST_RAM_2 0x000004
76 #define IA_MEMPLACE_FAST_RAM_3 0x000008
77 #define IA_MEMPLACE_FAST_RAM_4 0x000010
78 #define IA_MEMPLACE_FAST_RAM_5 0x000020
79 #define IA_MEMPLACE_FAST_RAM_6 0x000040
80 #define IA_MEMPLACE_FAST_RAM_7 0x000080
81 
82 #define IA_MEMPLACE_INT_RAM_0 0x000100
83 #define IA_MEMPLACE_INT_RAM_1 0x000200
84 #define IA_MEMPLACE_INT_RAM_2 0x000400
85 #define IA_MEMPLACE_INT_RAM_3 0x000800
86 #define IA_MEMPLACE_INT_RAM_4 0x001000
87 #define IA_MEMPLACE_INT_RAM_5 0x002000
88 #define IA_MEMPLACE_INT_RAM_6 0x004000
89 #define IA_MEMPLACE_INT_RAM_7 0x008000
90 
91 #define IA_MEMPLACE_EXT_RAM_0 0x010000
92 #define IA_MEMPLACE_EXT_RAM_1 0x020000
93 #define IA_MEMPLACE_EXT_RAM_2 0x040000
94 #define IA_MEMPLACE_EXT_RAM_3 0x080000
95 #define IA_MEMPLACE_EXT_RAM_4 0x100000
96 #define IA_MEMPLACE_EXT_RAM_5 0x200000
97 #define IA_MEMPLACE_EXT_RAM_6 0x400000
98 #define IA_MEMPLACE_EXT_RAM_7 0x800000
99 
100 #define IA_MEMPLACE_DONTCARE_H 0xFFFFFFFF
101 #define IA_MEMPLACE_DONTCARE_L 0xFFFFFFFF
102 
103 /* the simple common PC RAM */
104 #define IA_PC_RAM_H 0x00000000
105 #define IA_PC_RAM_L IA_MEMPLACE_EXT_RAM_0
106 
107 #endif /* IXHEAACD_MEMORY_STANDARDS_H */
108