/****************************************************************************** * * * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ***************************************************************************** * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore */ #ifndef IXHEAACD_MEMORY_STANDARDS_H #define IXHEAACD_MEMORY_STANDARDS_H /*****************************************************************************/ /* type definitions */ /*****************************************************************************/ /* standard memory table descriptor for libraries */ typedef struct { UWORD32 ui_size; /* size of the memory in bytes */ UWORD32 ui_alignment; /* alignment in bytes */ UWORD32 ui_type; /* type of memory */ UWORD32 ui_placement[2]; /* 64 bit placement info */ UWORD32 ui_priority; /* the importance for placement */ UWORD32 ui_placed[2]; /* the o_red location for placement */ } ia_mem_info_struct; /*****************************************************************************/ /* Constant hash defines */ /*****************************************************************************/ /* when you don't need alignment, pass this to memory library */ #define IA_MEM_NO_ALIGN 0x01 /* ittiam standard memory types */ /* to be used inter frames */ #define IA_MEMTYPE_PERSIST 0x00 /* read write, to be used intra frames */ #define IA_MEMTYPE_SCRATCH 0x01 /* read only memory, intra frame */ #define IA_MEMTYPE_INPUT 0x02 /* read-write memory, for usable output, intra frame */ #define IA_MEMTYPE_OUTPUT 0x03 /* readonly memory, inter frame */ #define IA_MEMTYPE_TABLE 0x04 /* input buffer before mem tabs allocation */ #define IA_MEMTYPE_PRE_FRAME_INPUT 0x05 /* input buffer before mem tabs allocation */ #define IA_MEMTYPE_PRE_FRAME_SCRATCH 0x06 /* for local variables */ #define IA_MEMTYPE_AUTO_VAR 0x80 /* ittiam standard memory priorities */ #define IA_MEMPRIORITY_ANYWHERE 0x00 #define IA_MEMPRIORITY_LOWEST 0x01 #define IA_MEMPRIORITY_LOW 0x02 #define IA_MEMPRIORITY_NORM 0x03 #define IA_MEMPRIORITY_ABOVE_NORM 0x04 #define IA_MEMPRIORITY_HIGH 0x05 #define IA_MEMPRIORITY_HIGHER 0x06 #define IA_MEMPRIORITY_CRITICAL 0x07 /* ittiam standard memory placements */ /* placement is defined by 64 bits */ #define IA_MEMPLACE_FAST_RAM_0 0x000001 #define IA_MEMPLACE_FAST_RAM_1 0x000002 #define IA_MEMPLACE_FAST_RAM_2 0x000004 #define IA_MEMPLACE_FAST_RAM_3 0x000008 #define IA_MEMPLACE_FAST_RAM_4 0x000010 #define IA_MEMPLACE_FAST_RAM_5 0x000020 #define IA_MEMPLACE_FAST_RAM_6 0x000040 #define IA_MEMPLACE_FAST_RAM_7 0x000080 #define IA_MEMPLACE_INT_RAM_0 0x000100 #define IA_MEMPLACE_INT_RAM_1 0x000200 #define IA_MEMPLACE_INT_RAM_2 0x000400 #define IA_MEMPLACE_INT_RAM_3 0x000800 #define IA_MEMPLACE_INT_RAM_4 0x001000 #define IA_MEMPLACE_INT_RAM_5 0x002000 #define IA_MEMPLACE_INT_RAM_6 0x004000 #define IA_MEMPLACE_INT_RAM_7 0x008000 #define IA_MEMPLACE_EXT_RAM_0 0x010000 #define IA_MEMPLACE_EXT_RAM_1 0x020000 #define IA_MEMPLACE_EXT_RAM_2 0x040000 #define IA_MEMPLACE_EXT_RAM_3 0x080000 #define IA_MEMPLACE_EXT_RAM_4 0x100000 #define IA_MEMPLACE_EXT_RAM_5 0x200000 #define IA_MEMPLACE_EXT_RAM_6 0x400000 #define IA_MEMPLACE_EXT_RAM_7 0x800000 #define IA_MEMPLACE_DONTCARE_H 0xFFFFFFFF #define IA_MEMPLACE_DONTCARE_L 0xFFFFFFFF /* the simple common PC RAM */ #define IA_PC_RAM_H 0x00000000 #define IA_PC_RAM_L IA_MEMPLACE_EXT_RAM_0 #endif /* IXHEAACD_MEMORY_STANDARDS_H */