Home | History | Annotate | Download | only in inc
      1 
      2 /*
      3  * Copyright (C) Texas Instruments - http://www.ti.com/
      4  *
      5  * This library is free software; you can redistribute it and/or
      6  * modify it under the terms of the GNU Lesser General Public
      7  * License as published by the Free Software Foundation; either
      8  * version 2.1 of the License, or (at your option) any later version.
      9  *
     10  *
     11  * This library is distributed in the hope that it will be useful,
     12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     14  * Lesser General Public License for more details.
     15  *
     16  *
     17  * You should have received a copy of the GNU Lesser General Public
     18  * License along with this library; if not, write to the Free Software
     19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
     20  */
     21 /* =============================================================================
     22 *             Texas Instruments OMAP(TM) Platform Software
     23 *  (c) Copyright Texas Instruments, Incorporated.  All Rights Reserved.
     24 *
     25 *  Use of this software is controlled by the terms and conditions found
     26 *  in the license agreement under which this software has been supplied.
     27 * =========================================================================== */
     28 /** OMX_TI_Common.h
     29   *  The LCML header file contains the definitions used by both the
     30   *  application and the component to access common items.
     31  */
     32 
     33 #ifndef __OMX_TI_COMMON_H__
     34 #define __OMX_TI_COMMON_H__
     35 
     36 #include "OMX_Component.h"
     37 #include "OMX_TI_Debug.h"
     38 
     39 /* OMX_TI_SEVERITYTYPE enumeration is used to indicate severity level of errors
     40           returned by TI OpenMax components.
     41     Critical      Requires reboot/reset DSP
     42     Severe       Have to unload components and free memory and try again
     43     Major        Can be handled without unloading the component
     44     Minor        Essentially informational
     45  */
     46 typedef enum OMX_TI_SEVERITYTYPE {
     47     OMX_TI_ErrorCritical = 1,
     48     OMX_TI_ErrorSevere,
     49     OMX_TI_ErrorMajor,
     50     OMX_TI_ErrorMinor
     51 } OMX_TI_SEVERITYTYPE;
     52 
     53 /* ======================================================================= */
     54 /**
     55  * @def    EXTRA_BYTES   For Cache alignment
     56            DSP_CACHE_ALIGNMENT  For Cache alignment
     57  *
     58  */
     59 /* ======================================================================= */
     60 #define EXTRA_BYTES 256
     61 #define DSP_CACHE_ALIGNMENT 128
     62 
     63 /* ======================================================================= */
     64 /**
     65  * @def    OMX_MALLOC_GENERIC   Macro to allocate Memory
     66  */
     67 /* ======================================================================= */
     68 #define OMX_MALLOC_GENERIC(_pStruct_, _sName_)                         \
     69     OMX_MALLOC_SIZE(_pStruct_,sizeof(_sName_),_sName_)
     70 
     71 /* ======================================================================= */
     72 /**
     73  * @def    OMX_MALLOC_SIZE   Macro to allocate Memory
     74  */
     75 /* ======================================================================= */
     76 #define OMX_MALLOC_SIZE(_ptr_, _size_,_name_)            \
     77     _ptr_ = (_name_*)newmalloc(_size_);                         \
     78     if(_ptr_ == NULL){                                          \
     79         OMXDBG_PRINT(stderr, ERROR, 4, 0, "***********************************\n");        \
     80         OMXDBG_PRINT(stderr, ERROR, 4, 0, "%d :: Malloc Failed\n",__LINE__);               \
     81         OMXDBG_PRINT(stderr, ERROR, 4, 0, "***********************************\n");        \
     82         eError = OMX_ErrorInsufficientResources;                \
     83         goto EXIT;                                              \
     84     }                                                           \
     85     memset(_ptr_,0,_size_);                                     \
     86     OMXDBG_PRINT(stderr, BUFFER, 2, OMX_DBG_BASEMASK, "%d :: Malloced = %p\n",__LINE__,_ptr_);
     87 
     88 /* ======================================================================= */
     89 /**
     90  * @def    OMX_MALLOC_SIZE_DSPALIGN   Macro to allocate Memory with cache alignment protection
     91  */
     92 /* ======================================================================= */
     93 #define OMX_MALLOC_SIZE_DSPALIGN(_ptr_, _size_,_name_)            \
     94     OMX_MALLOC_SIZE(_ptr_, _size_ + EXTRA_BYTES, _name_); \
     95     _ptr_ = (_name_*)(((OMX_U8*)_ptr_ + DSP_CACHE_ALIGNMENT));
     96 
     97 /* ======================================================================= */
     98 /**
     99  *  M A C R O FOR MEMORY FREE
    100  */
    101 /* ======================================================================= */
    102 #define OMX_MEMFREE_STRUCT(_pStruct_)\
    103     OMXDBG_PRINT(stderr, BUFFER, 2, OMX_DBG_BASEMASK, "%d :: [FREE] %p\n",__LINE__,_pStruct_); \
    104     if(_pStruct_ != NULL){\
    105         newfree(_pStruct_);\
    106         _pStruct_ = NULL;\
    107     }
    108 
    109 /* ======================================================================= */
    110 /**
    111  *  M A C R O FOR MEMORY FREE
    112  */
    113 /* ======================================================================= */
    114 #define OMX_MEMFREE_STRUCT_DSPALIGN(_pStruct_,_name_)\
    115     if(_pStruct_ != NULL){\
    116         _pStruct_ = (_name_*)(((OMX_U8*)_pStruct_ - DSP_CACHE_ALIGNMENT));\
    117         OMX_MEMFREE_STRUCT(_pStruct_);\
    118     }
    119 
    120 #endif /*  end of  #ifndef __OMX_TI_COMMON_H__ */
    121 /* File EOF */
    122