1    /* 
     2     * Copyright (c) 2012, Texas Instruments Incorporated
     3     * All rights reserved.
     4     *
     5     * Redistribution and use in source and binary forms, with or without
     6     * modification, are permitted provided that the following conditions
     7     * are met:
     8     *
     9     * *  Redistributions of source code must retain the above copyright
    10     *    notice, this list of conditions and the following disclaimer.
    11     *
    12     * *  Redistributions in binary form must reproduce the above copyright
    13     *    notice, this list of conditions and the following disclaimer in the
    14     *    documentation and/or other materials provided with the distribution.
    15     *
    16     * *  Neither the name of Texas Instruments Incorporated nor the names of
    17     *    its contributors may be used to endorse or promote products derived
    18     *    from this software without specific prior written permission.
    19     *
    20     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    21     * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
    22     * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    23     * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
    24     * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
    25     * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    26     * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
    27     * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
    28     * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
    29     * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    30     * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    31     * 
    32     */
    33    
    34    /*!
    35     *  ======== DSKT2 ========
    36     *  XDAIS algorithm management library.
    37     */
    38    @Template("./DSKT2.xdt")
    39    
    40    metaonly module DSKT2 {
    41    
    42        /*!
    43         *  ======== DARAM0 ========
    44         *  IALG memory space mapping of IALG_DARAM0.
    45         *
    46         *  This must be assigned the name of an instance of a module that
    47         *  implements IHeap.
    48         */
    49        config String DARAM0;
    50    
    51        /*!
    52         *  ======== DARAM1 ========
    53         *  IALG memory space mapping of IALG_DARAM1.
    54         *
    55         *  This must be assigned the name of an instance of a module that
    56         *  implements IHeap.
    57         */
    58        config String DARAM1;
    59    
    60        /*!
    61         *  ======== DARAM2 ========
    62         *  IALG memory space mapping of IALG_DARAM2.
    63         *
    64         *  This must be assigned the name of an instance of a module that
    65         *  implements IHeap.
    66         */
    67        config String DARAM2;
    68    
    69        /*!
    70         *  ======== SARAM0 ========
    71         *  IALG memory space mapping of IALG_SARAM0.
    72         *
    73         *  This must be assigned the name of an instance of a module that
    74         *  implements IHeap.
    75         */
    76        config String SARAM0;
    77    
    78        /*!
    79         *  ======== SARAM1 ========
    80         *  IALG memory space mapping of IALG_SARAM1.
    81         *
    82         *  This must be assigned the name of an instance of a module that
    83         *  implements IHeap.
    84         */
    85        config String SARAM1;
    86    
    87        /*!
    88         *  ======== SARAM2 ========
    89         *  IALG memory space mapping of IALG_SARAM2.
    90         *
    91         *  This must be assigned the name of an instance of a module that
    92         *  implements IHeap.
    93         */
    94        config String SARAM2;
    95    
    96        /*!
    97         *  ======== ESDATA ========
    98         *  IALG memory space mapping of IALG_ESDATA.
    99         *
   100         *  This must be assigned the name of an instance of a module that
   101         *  implements IHeap.
   102         */
   103        config String ESDATA;
   104    
   105        /*!
   106         *  ======== IPROG ========
   107         *  IALG memory space mapping of IALG_IPROG.
   108         *
   109         *  This must be assigned the name of an instance of a module that
   110         *  implements IHeap.
   111         */
   112        config String IPROG;
   113    
   114        /*!
   115         *  ======== EPROG ========
   116         *  IALG memory space mapping of IALG_EPROG.
   117         *
   118         *  This must be assigned the name of an instance of a module that
   119         *  implements IHeap.
   120         */
   121        config String EPROG;
   122    
   123        /*!
   124         *  ======== DSKT2_HEAP ========
   125         *  Heap for allocating internal DSKT2 data structures.
   126         *
   127         *  Objects internal to the DSKT2 module will be allocated from this heap.
   128         */
   129        config String DSKT2_HEAP;
   130    
   131        /*!
   132         *  ======== ALLOW_EXTERNAL_SCRATCH ========
   133         *  Allow external memory to be used for algorithm scratch memory requests.
   134         *
   135         *  If an algorithm requests scratch memory, and insufficient scratch
   136         *  memory is available, scratch buffers will be allocated in external
   137         *  memory if property is 'true'.
   138         */
   139        config bool   ALLOW_EXTERNAL_SCRATCH = true;
   140    
   141        /*!
   142         *  ======== DARAM_SCRATCH_SIZES ========
   143         *  Shared IALG_DARAM0 scratch group sizes.
   144         */
   145        config UInt   DARAM_SCRATCH_SIZES[] =
   146                      [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
   147    
   148        /*!
   149         *  ======== SARAM_SCRATCH_SIZES ========
   150         *  Shared IALG_SARAM0 scratch group sizes.
   151         */
   152        config UInt   SARAM_SCRATCH_SIZES[] =
   153                      [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
   154    
   155    
   156        /*!
   157         *  ======== cacheWritebackInvalidateFxn ========
   158         *  Name of function implementing cache writeback invalidate.
   159         *
   160         *  This function must have the following signature:
   161         *  @p(code)
   162         *  (*DSKT2_CacheWBInvFxn)(Ptr blockPtr, size_t byteCnt, bool wait)
   163         *  @p
   164         *
   165         *  For C6000 platforms DSKT2 calls this function to ensure that the
   166         *  algorithm instance memory is not resident in cache when it is
   167         *  instantiated. This is necessary for compliance with XDAIS C6000 DMA
   168         *  Rules and Guidelines.
   169         */
   170        config String cacheWritebackInvalidateFxn = "DSKT2_cacheWBInv";
   171    
   172        /*!
   173         *  ======== disableLazyDeactivate =======
   174         *
   175         *  Set this to TRUE to disable lazy deactivate feature in DSKT2. 
   176         *  This could affect performance of your algorithm, and should be used
   177         *  mostly for diagnostic purposes. 
   178         */
   179        config Bool disableLazyDeactivate;
   180    
   181        /*!
   182         *  ======== ipcKeyBase ========
   183         *  Base value of keys of multi-process objects used by DSKT2.
   184         *
   185         *  Linux only. The MP objects created by DSKT2 will use keys starting at 
   186         *  this value, and incrementing with each new object. There is currently
   187         *  a DSKT2 lock and semaphores for each scratch group, that use a key.
   188         *  So the keys used by DSKT2 will range from ipcKeyBase to ipcKeyBase +
   189         *  DSKT2_NUM_SCRATCH_GROUPS.
   190         *  The default value of ipcKeyBase is ascii code for "DSKT".
   191         *
   192         *  WARNING: This value should only be changed if it conflicts with
   193         *  another key in the system that cannot be changed. If this value
   194         *  is changed, all programs using DSKT2 that will be run simultaneously
   195         *  must have the ipcKeyBase configured to the new value.
   196         *
   197         *  TODO:H, do we need this since we only support BIOS?
   198         *  @_nodoc
   199         */
   200        config UInt ipcKeyBase = 0x44534B54;
   201    
   202    }
   203    
   204    /*
   205     *  @(#) ti.sdo.fc.dskt2; 1, 0, 4,3; 4-16-2012 00:00:23; /db/atree/library/trees/fc/fc-q08/src/ xlibrary
   206    
   207     */
   208