mirror of
https://github.com/apache/nuttx.git
synced 2026-06-05 15:58:59 +08:00
arch/arm/src/tiva/cc13xx/cc13x2_v1_trim.c and cc13x2_cc26x2_v1_rom.c: Review and modified for coding style. Now pass tools/nxstyle wihout complaint.
This commit is contained in:
@@ -1,10 +1,11 @@
|
|||||||
/************************************************************************************
|
/****************************************************************************
|
||||||
* arch/arm/src/tiva/cc13xx/cc13x2_cc26x2_v1_rom.c
|
* arch/arm/src/tiva/cc13xx/cc13x2_cc26x2_v1_rom.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 2019 Gregory Nutt. All rights reserved.
|
* Copyright (C) 2019 Gregory Nutt. All rights reserved.
|
||||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
*
|
*
|
||||||
* This is a port of TI's setup_rom.c file which has a fully compatible BSD license:
|
* This is a port of TI's setup_rom.c file which has a fully compatible BSD
|
||||||
|
* license:
|
||||||
*
|
*
|
||||||
* Copyright (c) 2015-2017, Texas Instruments Incorporated
|
* Copyright (c) 2015-2017, Texas Instruments Incorporated
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
@@ -36,11 +37,11 @@
|
|||||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
* POSSIBILITY OF SUCH DAMAGE.
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
************************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/************************************************************************************
|
/****************************************************************************
|
||||||
* Included Files
|
* Included Files
|
||||||
************************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
@@ -59,13 +60,13 @@
|
|||||||
|
|
||||||
#include "cc13xx/cc13x2_cc26x2_v1_rom.h"
|
#include "cc13xx/cc13x2_cc26x2_v1_rom.h"
|
||||||
|
|
||||||
/************************************************************************************
|
/****************************************************************************
|
||||||
* Public Functions
|
* Public Functions
|
||||||
************************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/************************************************************************************
|
/****************************************************************************
|
||||||
* Name: rom_setup_stepvaddrtrimto
|
* Name: rom_setup_stepvaddrtrimto
|
||||||
************************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void rom_setup_stepvaddrtrimto(uint32_t tocode)
|
void rom_setup_stepvaddrtrimto(uint32_t tocode)
|
||||||
{
|
{
|
||||||
@@ -74,37 +75,41 @@ void rom_setup_stepvaddrtrimto(uint32_t tocode)
|
|||||||
int32_t current_trim;
|
int32_t current_trim;
|
||||||
|
|
||||||
target_trim =
|
target_trim =
|
||||||
rom_signextend_vddrtrim(tocode &
|
rom_signextend_vddrtrim(tocode & (ADI3_REFSYS_DCDCCTL0_VDDR_TRIM_MASK >>
|
||||||
(ADI3_REFSYS_DCDCCTL0_VDDR_TRIM_MASK >>
|
ADI3_REFSYS_DCDCCTL0_VDDR_TRIM_SHIFT));
|
||||||
ADI3_REFSYS_DCDCCTL0_VDDR_TRIM_SHIFT));
|
|
||||||
current_trim =
|
current_trim =
|
||||||
rom_signextend_vddrtrim((getreg16(TIVA_ADI3_REFSYS_DCDCCTL0) &
|
rom_signextend_vddrtrim((getreg16(TIVA_ADI3_REFSYS_DCDCCTL0) &
|
||||||
ADI3_REFSYS_DCDCCTL0_VDDR_TRIM_MASK) >>
|
ADI3_REFSYS_DCDCCTL0_VDDR_TRIM_MASK) >>
|
||||||
ADI3_REFSYS_DCDCCTL0_VDDR_TRIM_SHIFT);
|
ADI3_REFSYS_DCDCCTL0_VDDR_TRIM_SHIFT);
|
||||||
|
|
||||||
if (target_trim != current_trim)
|
if (target_trim != current_trim)
|
||||||
{
|
{
|
||||||
pmctl_regsetctrl =
|
pmctl_regsetctrl = (getreg32(TIVA_AON_PMCTL_RESETCTL) &
|
||||||
(getreg32(TIVA_AON_PMCTL_RESETCTL) &
|
~AON_PMCTL_RESETCTL_MCU_WARM_RESET);
|
||||||
~AON_PMCTL_RESETCTL_MCU_WARM_RESET);
|
|
||||||
if (pmctl_regsetctrl & AON_PMCTL_RESETCTL_VDDR_LOSS_EN)
|
if (pmctl_regsetctrl & AON_PMCTL_RESETCTL_VDDR_LOSS_EN)
|
||||||
{
|
{
|
||||||
putreg32(pmctl_regsetctrl & ~AON_PMCTL_RESETCTL_VDDR_LOSS_EN,
|
putreg32(pmctl_regsetctrl & ~AON_PMCTL_RESETCTL_VDDR_LOSS_EN,
|
||||||
TIVA_AON_PMCTL_RESETCTL);
|
TIVA_AON_PMCTL_RESETCTL);
|
||||||
(void)getreg32(TIVA_AON_RTC_SYNC); /* Wait for VDDR_LOSS_EN
|
|
||||||
* setting to propagate */
|
/* Wait for VDDR_LOSS_EN setting to propagate */
|
||||||
|
|
||||||
|
(void)getreg32(TIVA_AON_RTC_SYNC);
|
||||||
}
|
}
|
||||||
|
|
||||||
while (target_trim != current_trim)
|
while (target_trim != current_trim)
|
||||||
{
|
{
|
||||||
(void)getreg32(TIVA_AON_RTC_SYNCLF); /* Wait for next edge
|
/* Wait for next edge on SCLK_LF (positive or negative) */
|
||||||
* on SCLK_LF (positive
|
|
||||||
* or negative) */
|
(void)getreg32(TIVA_AON_RTC_SYNCLF);
|
||||||
|
|
||||||
if (target_trim > current_trim)
|
if (target_trim > current_trim)
|
||||||
current_trim++;
|
{
|
||||||
|
current_trim++;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
current_trim--;
|
{
|
||||||
|
current_trim--;
|
||||||
|
}
|
||||||
|
|
||||||
putreg8(((getreg8(TIVA_ADI3_REFSYS_DCDCCTL0) &
|
putreg8(((getreg8(TIVA_ADI3_REFSYS_DCDCCTL0) &
|
||||||
~ADI3_REFSYS_DCDCCTL0_VDDR_TRIM_MASK) |
|
~ADI3_REFSYS_DCDCCTL0_VDDR_TRIM_MASK) |
|
||||||
@@ -114,32 +119,32 @@ void rom_setup_stepvaddrtrimto(uint32_t tocode)
|
|||||||
TIVA_ADI3_REFSYS_DCDCCTL0);
|
TIVA_ADI3_REFSYS_DCDCCTL0);
|
||||||
}
|
}
|
||||||
|
|
||||||
(void)getreg32(TIVA_AON_RTC_SYNCLF); /* Wait for next edge on
|
/* Wait for next edge on SCLK_LF (positive or negative) */
|
||||||
* SCLK_LF (positive or
|
|
||||||
* negative) */
|
|
||||||
|
|
||||||
if (pmctl_regsetctrl & AON_PMCTL_RESETCTL_VDDR_LOSS_EN)
|
(void)getreg32(TIVA_AON_RTC_SYNCLF);
|
||||||
|
|
||||||
|
if ((pmctl_regsetctrl & AON_PMCTL_RESETCTL_VDDR_LOSS_EN) != 0)
|
||||||
{
|
{
|
||||||
(void)getreg32(TIVA_AON_RTC_SYNCLF); /* Wait for next edge
|
/* Wait for next edge on SCLK_LF (positive or negative) */
|
||||||
* on SCLK_LF (positive
|
|
||||||
* or negative) */
|
|
||||||
|
|
||||||
(void)getreg32(TIVA_AON_RTC_SYNCLF); /* Wait for next edge
|
(void)getreg32(TIVA_AON_RTC_SYNCLF);
|
||||||
* on SCLK_LF (positive
|
|
||||||
* or negative) */
|
/* Wait for next edge on SCLK_LF (positive or negative) */
|
||||||
|
|
||||||
|
(void)getreg32(TIVA_AON_RTC_SYNCLF);
|
||||||
|
|
||||||
putreg32(pmctl_regsetctrl, TIVA_AON_PMCTL_RESETCTL);
|
putreg32(pmctl_regsetctrl, TIVA_AON_PMCTL_RESETCTL);
|
||||||
(void)getreg32(TIVA_AON_RTC_SYNC); /* And finally wait for
|
|
||||||
* VDDR_LOSS_EN setting to
|
|
||||||
* propagate */
|
|
||||||
|
|
||||||
|
/* And finally wait for VDDR_LOSS_EN setting to propagate */
|
||||||
|
|
||||||
|
(void)getreg32(TIVA_AON_RTC_SYNC);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************************
|
/****************************************************************************
|
||||||
* Name: rom_setup_coldreset_from_shutdown_cfg1
|
* Name: rom_setup_coldreset_from_shutdown_cfg1
|
||||||
************************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
void rom_setup_coldreset_from_shutdown_cfg1(uint32_t ccfg_modeconf)
|
void rom_setup_coldreset_from_shutdown_cfg1(uint32_t ccfg_modeconf)
|
||||||
{
|
{
|
||||||
@@ -147,15 +152,17 @@ void rom_setup_coldreset_from_shutdown_cfg1(uint32_t ccfg_modeconf)
|
|||||||
uint32_t clrbits;
|
uint32_t clrbits;
|
||||||
|
|
||||||
/* Check for CC1352 boost mode The combination VDDR_EXT_LOAD=0 and
|
/* Check for CC1352 boost mode The combination VDDR_EXT_LOAD=0 and
|
||||||
* VDDS_BOD_LEVEL=1 is defined to select boost mode */
|
* VDDS_BOD_LEVEL=1 is defined to select boost mode
|
||||||
|
*/
|
||||||
|
|
||||||
if (((ccfg_modeconf & CCFG_MODE_CONF_VDDR_EXT_LOAD) == 0) &&
|
if ((ccfg_modeconf & CCFG_MODE_CONF_VDDR_EXT_LOAD) == 0 &&
|
||||||
((ccfg_modeconf & CCFG_MODE_CONF_VDDS_BOD_LEVEL) != 0))
|
(ccfg_modeconf & CCFG_MODE_CONF_VDDS_BOD_LEVEL) != 0)
|
||||||
{
|
{
|
||||||
/* Set VDDS_BOD trim - using masked write {MASK8:DATA8} - TRIM_VDDS_BOD
|
/* Set VDDS_BOD trim - using masked write {MASK8:DATA8} - TRIM_VDDS_BOD
|
||||||
* is bits[7:3] of ADI3..REFSYSCTL1 - Needs a positive transition on
|
* is bits[7:3] of ADI3..REFSYSCTL1 - Needs a positive transition on
|
||||||
* BOD_BG_TRIM_EN (bit[7] of REFSYSCTL3) to latch new VDDS BOD. Set to 0
|
* BOD_BG_TRIM_EN (bit[7] of REFSYSCTL3) to latch new VDDS BOD. Set to 0
|
||||||
* first to guarantee a positive transition. */
|
* first to guarantee a positive transition.
|
||||||
|
*/
|
||||||
|
|
||||||
putreg8(ADI3_REFSYS_REFSYSCTL3_BOD_BG_TRIM_EN,
|
putreg8(ADI3_REFSYS_REFSYSCTL3_BOD_BG_TRIM_EN,
|
||||||
TIVA_ADI3_REFSYS_CLR + TIVA_ADI3_REFSYS_REFSYSCTL3_OFFSET);
|
TIVA_ADI3_REFSYS_CLR + TIVA_ADI3_REFSYS_REFSYSCTL3_OFFSET);
|
||||||
@@ -166,25 +173,26 @@ void rom_setup_coldreset_from_shutdown_cfg1(uint32_t ccfg_modeconf)
|
|||||||
|
|
||||||
putreg16((ADI3_REFSYS_REFSYSCTL1_TRIM_VDDS_BOD_MASK << 8) |
|
putreg16((ADI3_REFSYS_REFSYSCTL1_TRIM_VDDS_BOD_MASK << 8) |
|
||||||
(ADI3_REFSYS_REFSYSCTL1_TRIM_VDDS_BOD_POS_31),
|
(ADI3_REFSYS_REFSYSCTL1_TRIM_VDDS_BOD_POS_31),
|
||||||
TIVA_ADI3_REFSYS_MASK8B + (TIVA_ADI3_REFSYS_REFSYSCTL1_OFFSET * 2));
|
TIVA_ADI3_REFSYS_MASK8B +
|
||||||
|
(TIVA_ADI3_REFSYS_REFSYSCTL1_OFFSET * 2));
|
||||||
|
|
||||||
putreg8(ADI3_REFSYS_REFSYSCTL3_BOD_BG_TRIM_EN,
|
putreg8(ADI3_REFSYS_REFSYSCTL3_BOD_BG_TRIM_EN,
|
||||||
TIVA_ADI3_REFSYS_SET + TIVA_ADI3_REFSYS_REFSYSCTL3_OFFSET);
|
TIVA_ADI3_REFSYS_SET + TIVA_ADI3_REFSYS_REFSYSCTL3_OFFSET);
|
||||||
|
|
||||||
rom_setup_stepvaddrtrimto((getreg32(TIVA_FCFG1_VOLT_TRIM) &
|
rom_setup_stepvaddrtrimto((getreg32(TIVA_FCFG1_VOLT_TRIM) &
|
||||||
FCFG1_VOLT_TRIM_VDDR_TRIM_HH_MASK) >>
|
FCFG1_VOLT_TRIM_VDDR_TRIM_HH_MASK) >>
|
||||||
FCFG1_VOLT_TRIM_VDDR_TRIM_HH_SHIFT);
|
FCFG1_VOLT_TRIM_VDDR_TRIM_HH_SHIFT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 1. Do not allow DCDC to be enabled if in external regulator mode.
|
/* 1. Do not allow DCDC to be enabled if in external regulator mode.
|
||||||
* Preventing this by setting both the RECHARGE and the ACTIVE bits bit in
|
* Preventing this by setting both the RECHARGE and the ACTIVE bits bit
|
||||||
* the CCFG_MODE_CONF copy register (ccfg_modeconf). 2. Adjusted battery
|
* in the CCFG_MODE_CONF copy register (ccfg_modeconf).
|
||||||
* monitor low limit in internal regulator mode. This is done by setting
|
* 2. Adjusted battery monitor low limit in internal regulator mode. This
|
||||||
* AON_BATMON_FLASHPUMPP0_LOWLIM=0 in internal regulator mode.
|
* is done by setting AON_BATMON_FLASHPUMPP0_LOWLIM=0 in internal
|
||||||
|
* regulator mode.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (getreg32(TIVA_AON_PMCTL_PWRCTL) &
|
if ((getreg32(TIVA_AON_PMCTL_PWRCTL) & AON_PMCTL_PWRCTL_EXT_REG_MODE) != 0)
|
||||||
AON_PMCTL_PWRCTL_EXT_REG_MODE)
|
|
||||||
{
|
{
|
||||||
ccfg_modeconf |= (CCFG_MODE_CONF_DCDC_RECHARGE |
|
ccfg_modeconf |= (CCFG_MODE_CONF_DCDC_RECHARGE |
|
||||||
CCFG_MODE_CONF_DCDC_ACTIVE);
|
CCFG_MODE_CONF_DCDC_ACTIVE);
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -279,7 +279,7 @@ void __start(void)
|
|||||||
showprogress('E');
|
showprogress('E');
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_TIVA_CC26X2_POWERLIB /* REVISIT */
|
#ifdef CONFIG_TIVA_CC26X2_POWERLIB /* REVISIT: Used with CC13x2 as well. */
|
||||||
/* Initialize the Power Manager internal state. This must be called prior
|
/* Initialize the Power Manager internal state. This must be called prior
|
||||||
* to any other Power API.
|
* to any other Power API.
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user