Home | History | Annotate | Download | only in drc_src
      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 
     21 #ifndef IMPD_MEMORY_STANDARDS_H
     22 #define IMPD_MEMORY_STANDARDS_H
     23 
     24 /*****************************************************************************/
     25 /* Type definitions                                                          */
     26 /*****************************************************************************/
     27 /* standard memory table descriptor for libraries */
     28 typedef struct {
     29   UWORD32 ui_size;         /* size of the memory in bytes  */
     30   UWORD32 ui_alignment;    /* alignment in bytes           */
     31   UWORD32 ui_type;         /* type of memory               */
     32   UWORD32 ui_placement[2]; /* 64 bit placement info        */
     33   UWORD32 ui_priority;     /* the importance for placement */
     34   UWORD32 ui_placed[2];    /* the o_red location for placement */
     35 } ia_mem_info_struct;
     36 
     37 /*****************************************************************************/
     38 /* Constant hash defines                                                     */
     39 /*****************************************************************************/
     40 /* when you don't need alignment, pass this to memory library */
     41 #define IA_MEM_NO_ALIGN 0x01
     42 
     43 /* ittiam standard memory types */
     44 /* to be used inter frames */
     45 #define IA_MEMTYPE_PERSIST 0x00
     46 /* read write, to be used intra frames */
     47 #define IA_MEMTYPE_SCRATCH 0x01
     48 /* read only memory, intra frame */
     49 #define IA_MEMTYPE_INPUT 0x02
     50 /* read-write memory, for usable output, intra frame */
     51 #define IA_MEMTYPE_OUTPUT 0x03
     52 /* readonly memory, inter frame */
     53 #define IA_MEMTYPE_TABLE 0x04
     54 /* input buffer before mem tabs allocation */
     55 #define IA_MEMTYPE_PRE_FRAME_INPUT 0x05
     56 /* input buffer before mem tabs allocation */
     57 #define IA_MEMTYPE_PRE_FRAME_SCRATCH 0x06
     58 /* for local variables */
     59 #define IA_MEMTYPE_AUTO_VAR 0x80
     60 
     61 /* ittiam standard memory priorities */
     62 #define IA_MEMPRIORITY_ANYWHERE 0x00
     63 #define IA_MEMPRIORITY_LOWEST 0x01
     64 #define IA_MEMPRIORITY_LOW 0x02
     65 #define IA_MEMPRIORITY_NORM 0x03
     66 #define IA_MEMPRIORITY_ABOVE_NORM 0x04
     67 #define IA_MEMPRIORITY_HIGH 0x05
     68 #define IA_MEMPRIORITY_HIGHER 0x06
     69 #define IA_MEMPRIORITY_CRITICAL 0x07
     70 
     71 /* ittiam standard memory placements */
     72 /* placement is defined by 64 bits */
     73 
     74 #define IA_MEMPLACE_FAST_RAM_0 0x000001
     75 #define IA_MEMPLACE_FAST_RAM_1 0x000002
     76 #define IA_MEMPLACE_FAST_RAM_2 0x000004
     77 #define IA_MEMPLACE_FAST_RAM_3 0x000008
     78 #define IA_MEMPLACE_FAST_RAM_4 0x000010
     79 #define IA_MEMPLACE_FAST_RAM_5 0x000020
     80 #define IA_MEMPLACE_FAST_RAM_6 0x000040
     81 #define IA_MEMPLACE_FAST_RAM_7 0x000080
     82 
     83 #define IA_MEMPLACE_INT_RAM_0 0x000100
     84 #define IA_MEMPLACE_INT_RAM_1 0x000200
     85 #define IA_MEMPLACE_INT_RAM_2 0x000400
     86 #define IA_MEMPLACE_INT_RAM_3 0x000800
     87 #define IA_MEMPLACE_INT_RAM_4 0x001000
     88 #define IA_MEMPLACE_INT_RAM_5 0x002000
     89 #define IA_MEMPLACE_INT_RAM_6 0x004000
     90 #define IA_MEMPLACE_INT_RAM_7 0x008000
     91 
     92 #define IA_MEMPLACE_EXT_RAM_0 0x010000
     93 #define IA_MEMPLACE_EXT_RAM_1 0x020000
     94 #define IA_MEMPLACE_EXT_RAM_2 0x040000
     95 #define IA_MEMPLACE_EXT_RAM_3 0x080000
     96 #define IA_MEMPLACE_EXT_RAM_4 0x100000
     97 #define IA_MEMPLACE_EXT_RAM_5 0x200000
     98 #define IA_MEMPLACE_EXT_RAM_6 0x400000
     99 #define IA_MEMPLACE_EXT_RAM_7 0x800000
    100 
    101 #define IA_MEMPLACE_DONTCARE_H 0xFFFFFFFF
    102 #define IA_MEMPLACE_DONTCARE_L 0xFFFFFFFF
    103 
    104 /* the simple common PC RAM */
    105 #define IA_PC_RAM_H 0x00000000
    106 #define IA_PC_RAM_L IA_MEMPLACE_EXT_RAM_0
    107 
    108 #endif
    109