⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csl_bwmngmtgethwsetup.c

📁 TI达芬奇dm644x各硬件模块测试代码
💻 C
字号:
/*  ============================================================================
 *   Copyright (c) Texas Instruments Inc 2002, 2003, 2004, 2005
 *
 *   Use of this software is controlled by the terms and conditions found in the
 *   license agreement under which this software has been supplied.
 *   ===========================================================================
 */
 
/** @file csl_bwmngmtGetHwSetup.c
 *
 *  @brief    File for functional layer of CSL API @a CSL_bwmngmtGetHwSetup()
 *
 *  Description
 *    - The @a CSL_bwmngmtGetHwSetup() function definition & it's associated
 *      functions
 *
 *  PATH  \\(CSLPATH)\\ipmodules\\bwmngmt\\src
 *
 *  @date 4th June, 2004
 *  @author Chad Courtney
 */

/* =============================================================================
 *  Revision History
 *  ===============
 *  11-Apr-2005 Brn updated the file for doxygen compatibiliy
 *  03-Aug-2005 Brn Butification 
 * =============================================================================
 */

#include <csl_bwmngmt.h>

/** ============================================================================
 *  @n@b CSL_bwmngmtGetHwSetup
 *
 *   @b Description
 *
 *  <b> Usage Constraints: </b>
 *  Both @a CSL_bwmngmtInit() and @a CSL_bwmngmtOpen() must be called
 *  successfully in that order before this function can be called.\n
 *  
 *  The following registers and fields are queried by this API \n
 *   @b Arguments
 *   @verbatim 
          hBwmngmt            Handle to the BWMNGMT instance
        
          setup               Setup structure for BWMNGMT
        
 *    @endverbatim  
 *      
 *      <b> Return Value </b>  CSL_Status
 *                         CSL_SOK            - Close successful
 *                         CSL_ESYS_BADHANDLE - Invalid handle
 *                         CSL_ESYS_INVPARAMS - If setup is NULL
 *
    1.  CPU Arbitration Parameters \n
        -   PRI field set in Control Block Specified by "control" \n
        -   MAXWAIT field set in Control Block Specified by "control"  \n
    
    2.  IDMA Arbitration Parameter \n
        -   MAXWAIT field set in Control Block Specified by "control"  \n
    
    3.  SLAP Arbitration Parameter \n
        -   MAXWAIT field set in Control Block Specified by "control"  \n
    
    4.  MAP Arbitration Parameter \n
        -   PRI field set in Control Block Specified by "control"  \n
        if not EXT then returns CSL_BWMNGMT_PRI_NULL \n
    
    5.  UC Arbitration Parameter \n
        -   MAXWAIT field set in Control Block Specified by "control" \n
        if not L1D or L2 then returns CSL_BWMNGMT_MAXWAIT_NULL \n
    
 *  @b Example:
 *  @verbatim

        CSL_BwmngmtHandle hBwmngmt;
        CSL_BwmngmtHwSetup hwSetup;
        hwSetup.control = CSL_BWMNGMT_BLOCK_L1D;
        // only CSL_BWMNGMT_BLOCK_L1D, CSL_BWMNGMT_BLOCK_L2, or
        // CSL_BWMNGMT_BLOCK_EXT are valid
        ...
        
        // Init Successfully done
        ...
        // Open Successfully done
        ...
        CSL_bwmngmtGetHwSetup(hBwmngmt, &hwSetup);

    @endverbatim
 *
 *  ===========================================================================
 */
#pragma CODE_SECTION (CSL_bwmngmtGetHwSetup, ".text:csl_section:bwmngmt");
CSL_Status  CSL_bwmngmtGetHwSetup(
    /** pointer to the object that holds reference to the
     * instance of BWMNGMT requested after the call */
    CSL_BwmngmtHandle           hBwmngmt,
    
    /** Place holder to return the hwSetup data */
    CSL_BwmngmtHwSetup          *hwSetup
)
{   
    CSL_Status status = CSL_SOK;
    Uint32 ControlBlock;
    
    if (hwSetup == NULL )
        return CSL_ESYS_INVPARAMS;

    ControlBlock =  hwSetup->control;

    if( ControlBlock == CSL_BWMNGMT_BLOCK_L1D ) {    
        hwSetup->cpuPriority = (CSL_BwmngmtPriority) CSL_FEXT
        (((CSL_BwmngmtRegs*)CSL_BWMNGMT_REGS)->CPUARBL1D, BWMNGMT_CPUARBL1D_PRI);
        hwSetup->cpuMaxwait  = (CSL_BwmngmtMaxwait)  
                        CSL_FEXT(((CSL_BwmngmtRegs*)CSL_BWMNGMT_REGS)->CPUARBL1D, 
                                                    BWMNGMT_CPUARBL1D_MAXWAIT);
                                                    
        hwSetup->idmaMaxwait = (CSL_BwmngmtMaxwait)  
                CSL_FEXT(((CSL_BwmngmtRegs*)CSL_BWMNGMT_REGS)->IDMAARBL1D, 
                                            BWMNGMT_IDMAARBL1D_MAXWAIT);
                                            
        hwSetup->slapMaxwait = (CSL_BwmngmtMaxwait)  
                CSL_FEXT(((CSL_BwmngmtRegs*)CSL_BWMNGMT_REGS)->SLAPARBL1D, 
                                            BWMNGMT_SLAPARBL1D_MAXWAIT);
                                            
        hwSetup->ucMaxwait   = (CSL_BwmngmtMaxwait)  
                CSL_FEXT(((CSL_BwmngmtRegs*)CSL_BWMNGMT_REGS)->UCARBL1D, 
                                            BWMNGMT_UCARBL1D_MAXWAIT);
                                                    
    } 
    else if(  ControlBlock == CSL_BWMNGMT_BLOCK_L2 ) {
        hwSetup->cpuPriority = (CSL_BwmngmtPriority) 
                CSL_FEXT(((CSL_BwmngmtRegs*)CSL_BWMNGMT_REGS)->CPUARBL2, 
                                            BWMNGMT_CPUARBL2_PRI);
                                            
        hwSetup->cpuMaxwait  = (CSL_BwmngmtMaxwait)  
                CSL_FEXT(((CSL_BwmngmtRegs*)CSL_BWMNGMT_REGS)->CPUARBL2, 
                                            BWMNGMT_CPUARBL2_MAXWAIT);
                                            
        hwSetup->idmaMaxwait = (CSL_BwmngmtMaxwait)  
                CSL_FEXT(((CSL_BwmngmtRegs*)CSL_BWMNGMT_REGS)->IDMAARBL2, 
                                            BWMNGMT_IDMAARBL2_MAXWAIT);
                                            
        hwSetup->slapMaxwait = (CSL_BwmngmtMaxwait)  
                CSL_FEXT(((CSL_BwmngmtRegs*)CSL_BWMNGMT_REGS)->SLAPARBL2, 
                                            BWMNGMT_SLAPARBL2_MAXWAIT);
                                            
        hwSetup->ucMaxwait   = (CSL_BwmngmtMaxwait)  
                CSL_FEXT(((CSL_BwmngmtRegs*)CSL_BWMNGMT_REGS)->UCARBL2, 
                                            BWMNGMT_UCARBL2_MAXWAIT);
                
    } 
    else if(  ControlBlock == CSL_BWMNGMT_BLOCK_EXT ) {
       hwSetup->cpuPriority = (CSL_BwmngmtPriority) 
                CSL_FEXT(((CSL_BwmngmtRegs*)CSL_BWMNGMT_REGS)->CPUARBEXT, 
                                            BWMNGMT_CPUARBEXT_PRI);
                                              
        hwSetup->cpuMaxwait  = (CSL_BwmngmtMaxwait)  
                CSL_FEXT(((CSL_BwmngmtRegs*)CSL_BWMNGMT_REGS)->CPUARBEXT, 
                                            BWMNGMT_CPUARBEXT_MAXWAIT);
                                            
        hwSetup->idmaMaxwait = (CSL_BwmngmtMaxwait)  
                CSL_FEXT(((CSL_BwmngmtRegs*)CSL_BWMNGMT_REGS)->IDMAARBEXT, 
                                            BWMNGMT_IDMAARBEXT_MAXWAIT);
                                            
        hwSetup->slapMaxwait = (CSL_BwmngmtMaxwait)  
                CSL_FEXT(((CSL_BwmngmtRegs*)CSL_BWMNGMT_REGS)->SLAPARBEXT, 
                                            BWMNGMT_SLAPARBEXT_MAXWAIT);
                                            
        hwSetup->mapPriority = (CSL_BwmngmtPriority) 
                CSL_FEXT(((CSL_BwmngmtRegs*)CSL_BWMNGMT_REGS)->MAPARBEXT, 
                                            BWMNGMT_MAPARBEXT_PRI);                      
                                            
    } 
    else status = CSL_ESYS_INVPARAMS;

    return status;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -