📄 ssw.c
字号:
//========================================================================
// TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION
// Property of Texas Instruments
// For Unrestricted Internal Use Only
// Unauthorized reprofuction and/or distribution is strictly prohibited.
// This product is protected under copyright law and trade secret law
// as an unpublished work
// Created 2000, (C) Copyright 2000 Texas Instruments. All rights reserved
//
//
// Filename : ssw.c
//
// Date of Module Modification:3/22/04
// Date of Generation :N/A - created on 3/19/04
//
//
//========================================================================
#include "ssw.h"
#include "global_types.h"
/*-----------------------------------------------------------------------------
* NAME : SSW_ConfAddress
*
* DESCRIPTION : Returns the Rhea switch configuration register address of the selected peripheral
*
* PARAMETERS : UWORD16 ssw_sel - Select SSW, UWORD16 value
*
* RETURN VALUE : UWORD32 SSW_ConfAddress
*
*------------------------------------------------------------------------------*/
UWORD32 SSW_ConfAddress(SSW_id ssw_sel)
{
switch (ssw_sel)
{
case UART_1 : return(SSW_ConfAddr(UART1));
case UART_2 : return(SSW_ConfAddr(UART2));
case UART_3 : return(SSW_ConfAddr(UART3));
case MCBSP1 : return(SSW_ConfAddr(MCBSP1));
case MCBSP_DIGITAL_RF : return(SSW_ConfAddr(MCBSP_DIGITAL_RF));
case I2C_1 : return(SSW_ConfAddr(I2C_1));
case SPI : return(SSW_ConfAddr(SPI));
case DMT1 : return(SSW_ConfAddr(DMT1));
case DMT2 : return(SSW_ConfAddr(DMT2));
case I2C_2 : return(SSW_ConfAddr(I2C_2));
case DIG_RF : return(SSW_ConfAddr(DIG_RF));
case NDFLASH : return(SSW_ConfAddr(NDFLASH));
case MMC_SDIO2 : return(SSW_ConfAddr(MMC_SDIO2));
case MCSI1 : return(SSW_ConfAddr(MCSI1));
case MCSI2 : return(SSW_ConfAddr(MCSI2));
case TPU : return(SSW_ConfAddr(TPU));
case TSP : return(SSW_ConfAddr(TSP));
case GEA3 : return(SSW_ConfAddr(GEA3));
case CIPHERA5 : return(SSW_ConfAddr(CIPHERA5));
case USIM : return(SSW_ConfAddr(USIM));
case ULPD : return(SSW_ConfAddr(ULPD));
}
} /* SSW_ConfAddress */
/*-----------------------------------------------------------------------------
* NAME : SSW_StatAddress
*
* DESCRIPTION : Returns the Rhea switch status register address of the selected peripheral
* PARAMETERS : UWORD16 ssw_sel - Select SSW, UWORD16 value
*
* RETURN VALUE : UWORD32 SSW_StatAddress
*
*------------------------------------------------------------------------------*/
UWORD32 SSW_StatAddress(SSW_id ssw_sel)
{
return (SSW_ConfAddress(ssw_sel)+4);
}
/*-----------------------------------------------------------------------------
* NAME : SSW_GetOwner
*
* DESCRIPTION : Get Owner of Rhea Switch for the selected peripheral
*
* PARAMETERS : UWORD16 ssw_sel - Select SSW
*
* RETURN VALUE : UWORD16 Error Code
* SSW_DSP_ACCESS - DSP is SSW owner
* SSW_ARM_ACCESS - ARM is SSW owner
* SSW_NO_ACCESS - None of CPU's own SSW
*
*------------------------------------------------------------------------------*/
UWORD16 SSW_GetOwner(SSW_id ssw_sel)
{
UWORD32 ssw_confAddr = SSW_ConfAddress(ssw_sel);
return(REG16(ssw_confAddr));
}
/*-----------------------------------------------------------------------------
* NAME : SSW_Grab
*
* DESCRIPTION : Grab Rhea Switch to get access to the selected peripheral
*
* PARAMETERS : UWORD16 ssw_sel - Select SSW
*
* RETURN VALUE : UWORD16 Error Code
* FALSE - SSW Grabbed
* TRUE - Can not Grab SSW
*
*------------------------------------------------------------------------------*/
UWORD16 SSW_Grab(SSW_id ssw_sel)
{
UWORD32 ssw_confAddr = SSW_ConfAddress(ssw_sel);
/* Request SSW */
REG16(ssw_confAddr) = SSW_REQUEST;
/* Verify ssw ownership */
if ( REG16(ssw_confAddr) & SSW_REQUEST )
return( FALSE );
else
return( TRUE );
} /* SSW_Grab() */
/*-----------------------------------------------------------------------------
* NAME : SSW_Release
*
* DESCRIPTION : Release Rhea Switch to get allow other CPU access
* to the selected peripheral
*
* PARAMETERS : UWORD16 ssw_sel - Select SSW
*
* RETURN VALUE : None
*
*------------------------------------------------------------------------------*/
void SSW_Release(SSW_id ssw_sel)
{
UWORD32 ssw_confAddr = SSW_ConfAddress(ssw_sel);
/* Request SSW release */
REG16(ssw_confAddr) &= ~SSW_REQUEST;
} /* SSW_Release() */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -