Amit Gandhi / mbed-dev_2

Fork of mbed-dev by mbed official

Committer:
mbed_official
Date:
Tue May 03 00:15:16 2016 +0100
Revision:
121:7f86b4238bec
Synchronized with git revision 9cef243de23875778f461bbe9a8c1bc47e65212b

Full URL: https://github.com/mbedmicro/mbed/commit/9cef243de23875778f461bbe9a8c1bc47e65212b/

Switch to KSDK 2.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 121:7f86b4238bec 1 /*
mbed_official 121:7f86b4238bec 2 * Copyright (c) 2015, Freescale Semiconductor, Inc.
mbed_official 121:7f86b4238bec 3 * All rights reserved.
mbed_official 121:7f86b4238bec 4 *
mbed_official 121:7f86b4238bec 5 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 121:7f86b4238bec 6 * are permitted provided that the following conditions are met:
mbed_official 121:7f86b4238bec 7 *
mbed_official 121:7f86b4238bec 8 * o Redistributions of source code must retain the above copyright notice, this list
mbed_official 121:7f86b4238bec 9 * of conditions and the following disclaimer.
mbed_official 121:7f86b4238bec 10 *
mbed_official 121:7f86b4238bec 11 * o Redistributions in binary form must reproduce the above copyright notice, this
mbed_official 121:7f86b4238bec 12 * list of conditions and the following disclaimer in the documentation and/or
mbed_official 121:7f86b4238bec 13 * other materials provided with the distribution.
mbed_official 121:7f86b4238bec 14 *
mbed_official 121:7f86b4238bec 15 * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
mbed_official 121:7f86b4238bec 16 * contributors may be used to endorse or promote products derived from this
mbed_official 121:7f86b4238bec 17 * software without specific prior written permission.
mbed_official 121:7f86b4238bec 18 *
mbed_official 121:7f86b4238bec 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
mbed_official 121:7f86b4238bec 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
mbed_official 121:7f86b4238bec 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 121:7f86b4238bec 22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
mbed_official 121:7f86b4238bec 23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
mbed_official 121:7f86b4238bec 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
mbed_official 121:7f86b4238bec 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
mbed_official 121:7f86b4238bec 26 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
mbed_official 121:7f86b4238bec 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
mbed_official 121:7f86b4238bec 28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 121:7f86b4238bec 29 */
mbed_official 121:7f86b4238bec 30
mbed_official 121:7f86b4238bec 31 #ifndef _FSL_SMC_H_
mbed_official 121:7f86b4238bec 32 #define _FSL_SMC_H_
mbed_official 121:7f86b4238bec 33
mbed_official 121:7f86b4238bec 34 #include "fsl_common.h"
mbed_official 121:7f86b4238bec 35
mbed_official 121:7f86b4238bec 36 /*! @addtogroup smc */
mbed_official 121:7f86b4238bec 37 /*! @{ */
mbed_official 121:7f86b4238bec 38
mbed_official 121:7f86b4238bec 39 /*! @file */
mbed_official 121:7f86b4238bec 40
mbed_official 121:7f86b4238bec 41 /*******************************************************************************
mbed_official 121:7f86b4238bec 42 * Definitions
mbed_official 121:7f86b4238bec 43 ******************************************************************************/
mbed_official 121:7f86b4238bec 44
mbed_official 121:7f86b4238bec 45 /*! @name Driver version */
mbed_official 121:7f86b4238bec 46 /*@{*/
mbed_official 121:7f86b4238bec 47 /*! @brief SMC driver version 2.0.1. */
mbed_official 121:7f86b4238bec 48 #define FSL_SMC_DRIVER_VERSION (MAKE_VERSION(2, 0, 1))
mbed_official 121:7f86b4238bec 49 /*@}*/
mbed_official 121:7f86b4238bec 50
mbed_official 121:7f86b4238bec 51 /*!
mbed_official 121:7f86b4238bec 52 * @brief Power Modes Protection
mbed_official 121:7f86b4238bec 53 */
mbed_official 121:7f86b4238bec 54 typedef enum _smc_power_mode_protection
mbed_official 121:7f86b4238bec 55 {
mbed_official 121:7f86b4238bec 56 #if (defined(FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE) && FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE)
mbed_official 121:7f86b4238bec 57 kSMC_AllowPowerModeVlls = SMC_PMPROT_AVLLS_MASK, /*!< Allow Very-Low-Leakage Stop Mode. */
mbed_official 121:7f86b4238bec 58 #endif
mbed_official 121:7f86b4238bec 59 #if (defined(FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE) && FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE)
mbed_official 121:7f86b4238bec 60 kSMC_AllowPowerModeLls = SMC_PMPROT_ALLS_MASK, /*!< Allow Low-Leakage Stop Mode. */
mbed_official 121:7f86b4238bec 61 #endif /* FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE */
mbed_official 121:7f86b4238bec 62 kSMC_AllowPowerModeVlp = SMC_PMPROT_AVLP_MASK, /*!< Allow Very-Low-Power Mode. */
mbed_official 121:7f86b4238bec 63 #if (defined(FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE) && FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE)
mbed_official 121:7f86b4238bec 64 kSMC_AllowPowerModeHsrun = SMC_PMPROT_AHSRUN_MASK, /*!< Allow High Speed Run mode. */
mbed_official 121:7f86b4238bec 65 #endif /* FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE */
mbed_official 121:7f86b4238bec 66 kSMC_AllowPowerModeAll = (0U
mbed_official 121:7f86b4238bec 67 #if (defined(FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE) && FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE)
mbed_official 121:7f86b4238bec 68 |
mbed_official 121:7f86b4238bec 69 SMC_PMPROT_AVLLS_MASK
mbed_official 121:7f86b4238bec 70 #endif
mbed_official 121:7f86b4238bec 71 #if (defined(FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE) && FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE)
mbed_official 121:7f86b4238bec 72 |
mbed_official 121:7f86b4238bec 73 SMC_PMPROT_ALLS_MASK
mbed_official 121:7f86b4238bec 74 #endif /* FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE */
mbed_official 121:7f86b4238bec 75 |
mbed_official 121:7f86b4238bec 76 SMC_PMPROT_AVLP_MASK
mbed_official 121:7f86b4238bec 77 #if (defined(FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE) && FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE)
mbed_official 121:7f86b4238bec 78 |
mbed_official 121:7f86b4238bec 79 kSMC_AllowPowerModeHsrun
mbed_official 121:7f86b4238bec 80 #endif /* FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE */
mbed_official 121:7f86b4238bec 81 ) /*!< Allow all power mode. */
mbed_official 121:7f86b4238bec 82 } smc_power_mode_protection_t;
mbed_official 121:7f86b4238bec 83
mbed_official 121:7f86b4238bec 84 /*!
mbed_official 121:7f86b4238bec 85 * @brief Power Modes in PMSTAT
mbed_official 121:7f86b4238bec 86 */
mbed_official 121:7f86b4238bec 87 typedef enum _smc_power_state
mbed_official 121:7f86b4238bec 88 {
mbed_official 121:7f86b4238bec 89 kSMC_PowerStateRun = 0x01U << 0U, /*!< 0000_0001 - Current power mode is RUN */
mbed_official 121:7f86b4238bec 90 kSMC_PowerStateStop = 0x01U << 1U, /*!< 0000_0010 - Current power mode is STOP */
mbed_official 121:7f86b4238bec 91 kSMC_PowerStateVlpr = 0x01U << 2U, /*!< 0000_0100 - Current power mode is VLPR */
mbed_official 121:7f86b4238bec 92 kSMC_PowerStateVlpw = 0x01U << 3U, /*!< 0000_1000 - Current power mode is VLPW */
mbed_official 121:7f86b4238bec 93 kSMC_PowerStateVlps = 0x01U << 4U, /*!< 0001_0000 - Current power mode is VLPS */
mbed_official 121:7f86b4238bec 94 #if (defined(FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE) && FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE)
mbed_official 121:7f86b4238bec 95 kSMC_PowerStateLls = 0x01U << 5U, /*!< 0010_0000 - Current power mode is LLS */
mbed_official 121:7f86b4238bec 96 #endif /* FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE */
mbed_official 121:7f86b4238bec 97 #if (defined(FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE) && FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE)
mbed_official 121:7f86b4238bec 98 kSMC_PowerStateVlls = 0x01U << 6U, /*!< 0100_0000 - Current power mode is VLLS */
mbed_official 121:7f86b4238bec 99 #endif
mbed_official 121:7f86b4238bec 100 #if (defined(FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE) && FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE)
mbed_official 121:7f86b4238bec 101 kSMC_PowerStateHsrun = 0x01U << 7U /*!< 1000_0000 - Current power mode is HSRUN */
mbed_official 121:7f86b4238bec 102 #endif /* FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE */
mbed_official 121:7f86b4238bec 103 } smc_power_state_t;
mbed_official 121:7f86b4238bec 104
mbed_official 121:7f86b4238bec 105 /*!
mbed_official 121:7f86b4238bec 106 * @brief Run mode definition
mbed_official 121:7f86b4238bec 107 */
mbed_official 121:7f86b4238bec 108 typedef enum _smc_run_mode
mbed_official 121:7f86b4238bec 109 {
mbed_official 121:7f86b4238bec 110 kSMC_RunNormal = 0U, /*!< normal RUN mode. */
mbed_official 121:7f86b4238bec 111 kSMC_RunVlpr = 2U, /*!< Very-Low-Power RUN mode. */
mbed_official 121:7f86b4238bec 112 #if (defined(FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE) && FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE)
mbed_official 121:7f86b4238bec 113 kSMC_Hsrun = 3U /*!< High Speed Run mode (HSRUN). */
mbed_official 121:7f86b4238bec 114 #endif /* FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE */
mbed_official 121:7f86b4238bec 115 } smc_run_mode_t;
mbed_official 121:7f86b4238bec 116
mbed_official 121:7f86b4238bec 117 /*!
mbed_official 121:7f86b4238bec 118 * @brief Stop mode definition
mbed_official 121:7f86b4238bec 119 */
mbed_official 121:7f86b4238bec 120 typedef enum _smc_stop_mode
mbed_official 121:7f86b4238bec 121 {
mbed_official 121:7f86b4238bec 122 kSMC_StopNormal = 0U, /*!< Normal STOP mode. */
mbed_official 121:7f86b4238bec 123 kSMC_StopVlps = 2U, /*!< Very-Low-Power STOP mode. */
mbed_official 121:7f86b4238bec 124 #if (defined(FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE) && FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE)
mbed_official 121:7f86b4238bec 125 kSMC_StopLls = 3U, /*!< Low-Leakage Stop mode. */
mbed_official 121:7f86b4238bec 126 #endif /* FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE */
mbed_official 121:7f86b4238bec 127 #if (defined(FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE) && FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE)
mbed_official 121:7f86b4238bec 128 kSMC_StopVlls = 4U /*!< Very-Low-Leakage Stop mode. */
mbed_official 121:7f86b4238bec 129 #endif
mbed_official 121:7f86b4238bec 130 } smc_stop_mode_t;
mbed_official 121:7f86b4238bec 131
mbed_official 121:7f86b4238bec 132 #if (defined(FSL_FEATURE_SMC_USE_VLLSCTRL_REG) && FSL_FEATURE_SMC_USE_VLLSCTRL_REG) || \
mbed_official 121:7f86b4238bec 133 (defined(FSL_FEATURE_SMC_USE_STOPCTRL_VLLSM) && FSL_FEATURE_SMC_USE_STOPCTRL_VLLSM) || \
mbed_official 121:7f86b4238bec 134 (defined(FSL_FEATURE_SMC_HAS_LLS_SUBMODE) && FSL_FEATURE_SMC_HAS_LLS_SUBMODE)
mbed_official 121:7f86b4238bec 135 /*!
mbed_official 121:7f86b4238bec 136 * @brief VLLS/LLS stop sub mode definition
mbed_official 121:7f86b4238bec 137 */
mbed_official 121:7f86b4238bec 138 typedef enum _smc_stop_submode
mbed_official 121:7f86b4238bec 139 {
mbed_official 121:7f86b4238bec 140 kSMC_StopSub0 = 0U, /*!< Stop submode 0, for VLLS0/LLS0. */
mbed_official 121:7f86b4238bec 141 kSMC_StopSub1 = 1U, /*!< Stop submode 1, for VLLS1/LLS1. */
mbed_official 121:7f86b4238bec 142 kSMC_StopSub2 = 2U, /*!< Stop submode 2, for VLLS2/LLS2. */
mbed_official 121:7f86b4238bec 143 kSMC_StopSub3 = 3U /*!< Stop submode 3, for VLLS3/LLS3. */
mbed_official 121:7f86b4238bec 144 } smc_stop_submode_t;
mbed_official 121:7f86b4238bec 145 #endif
mbed_official 121:7f86b4238bec 146
mbed_official 121:7f86b4238bec 147 /*!
mbed_official 121:7f86b4238bec 148 * @brief Partial STOP option
mbed_official 121:7f86b4238bec 149 */
mbed_official 121:7f86b4238bec 150 typedef enum _smc_partial_stop_mode
mbed_official 121:7f86b4238bec 151 {
mbed_official 121:7f86b4238bec 152 kSMC_PartialStop = 0U, /*!< STOP - Normal Stop mode*/
mbed_official 121:7f86b4238bec 153 kSMC_PartialStop1 = 1U, /*!< Partial Stop with both system and bus clocks disabled*/
mbed_official 121:7f86b4238bec 154 kSMC_PartialStop2 = 2U, /*!< Partial Stop with system clock disabled and bus clock enabled*/
mbed_official 121:7f86b4238bec 155 } smc_partial_stop_option_t;
mbed_official 121:7f86b4238bec 156
mbed_official 121:7f86b4238bec 157 /*!
mbed_official 121:7f86b4238bec 158 * @brief SMC configuration status
mbed_official 121:7f86b4238bec 159 */
mbed_official 121:7f86b4238bec 160 enum _smc_status
mbed_official 121:7f86b4238bec 161 {
mbed_official 121:7f86b4238bec 162 kStatus_SMC_StopAbort = MAKE_STATUS(kStatusGroup_POWER, 0) /*!< Entering Stop mode is abort*/
mbed_official 121:7f86b4238bec 163 };
mbed_official 121:7f86b4238bec 164
mbed_official 121:7f86b4238bec 165 #if (defined(FSL_FEATURE_SMC_HAS_VERID) && FSL_FEATURE_SMC_HAS_VERID)
mbed_official 121:7f86b4238bec 166 /*!
mbed_official 121:7f86b4238bec 167 * @brief IP version ID definition.
mbed_official 121:7f86b4238bec 168 */
mbed_official 121:7f86b4238bec 169 typedef struct _smc_version_id
mbed_official 121:7f86b4238bec 170 {
mbed_official 121:7f86b4238bec 171 uint16_t feature; /*!< Feature Specification Number. */
mbed_official 121:7f86b4238bec 172 uint8_t minor; /*!< Minor version number. */
mbed_official 121:7f86b4238bec 173 uint8_t major; /*!< Major version number. */
mbed_official 121:7f86b4238bec 174 } smc_version_id_t;
mbed_official 121:7f86b4238bec 175 #endif /* FSL_FEATURE_SMC_HAS_VERID */
mbed_official 121:7f86b4238bec 176
mbed_official 121:7f86b4238bec 177 #if (defined(FSL_FEATURE_SMC_HAS_PARAM) && FSL_FEATURE_SMC_HAS_PARAM)
mbed_official 121:7f86b4238bec 178 /*!
mbed_official 121:7f86b4238bec 179 * @brief IP parameter definition.
mbed_official 121:7f86b4238bec 180 */
mbed_official 121:7f86b4238bec 181 typedef struct _smc_param
mbed_official 121:7f86b4238bec 182 {
mbed_official 121:7f86b4238bec 183 bool hsrunEnable; /*!< HSRUN mode enable. */
mbed_official 121:7f86b4238bec 184 bool llsEnable; /*!< LLS mode enable. */
mbed_official 121:7f86b4238bec 185 bool lls2Enable; /*!< LLS2 mode enable. */
mbed_official 121:7f86b4238bec 186 bool vlls0Enable; /*!< VLLS0 mode enable. */
mbed_official 121:7f86b4238bec 187 } smc_param_t;
mbed_official 121:7f86b4238bec 188 #endif /* FSL_FEATURE_SMC_HAS_PARAM */
mbed_official 121:7f86b4238bec 189
mbed_official 121:7f86b4238bec 190 #if (defined(FSL_FEATURE_SMC_HAS_LLS_SUBMODE) && FSL_FEATURE_SMC_HAS_LLS_SUBMODE) || \
mbed_official 121:7f86b4238bec 191 (defined(FSL_FEATURE_SMC_HAS_LPOPO) && FSL_FEATURE_SMC_HAS_LPOPO)
mbed_official 121:7f86b4238bec 192 /*!
mbed_official 121:7f86b4238bec 193 * @brief SMC Low-Leakage Stop power mode config
mbed_official 121:7f86b4238bec 194 */
mbed_official 121:7f86b4238bec 195 typedef struct _smc_power_mode_lls_config
mbed_official 121:7f86b4238bec 196 {
mbed_official 121:7f86b4238bec 197 #if (defined(FSL_FEATURE_SMC_HAS_LLS_SUBMODE) && FSL_FEATURE_SMC_HAS_LLS_SUBMODE)
mbed_official 121:7f86b4238bec 198 smc_stop_submode_t subMode; /*!< Low-leakage Stop sub-mode */
mbed_official 121:7f86b4238bec 199 #endif
mbed_official 121:7f86b4238bec 200 #if (defined(FSL_FEATURE_SMC_HAS_LPOPO) && FSL_FEATURE_SMC_HAS_LPOPO)
mbed_official 121:7f86b4238bec 201 bool enableLpoClock; /*!< Enable LPO clock in LLS mode */
mbed_official 121:7f86b4238bec 202 #endif
mbed_official 121:7f86b4238bec 203 } smc_power_mode_lls_config_t;
mbed_official 121:7f86b4238bec 204 #endif /* (FSL_FEATURE_SMC_HAS_LLS_SUBMODE || FSL_FEATURE_SMC_HAS_LPOPO) */
mbed_official 121:7f86b4238bec 205
mbed_official 121:7f86b4238bec 206 #if (defined(FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE) && FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE)
mbed_official 121:7f86b4238bec 207 /*!
mbed_official 121:7f86b4238bec 208 * @brief SMC Very Low-Leakage Stop power mode config
mbed_official 121:7f86b4238bec 209 */
mbed_official 121:7f86b4238bec 210 typedef struct _smc_power_mode_vlls_config
mbed_official 121:7f86b4238bec 211 {
mbed_official 121:7f86b4238bec 212 #if (defined(FSL_FEATURE_SMC_USE_VLLSCTRL_REG) && FSL_FEATURE_SMC_USE_VLLSCTRL_REG) || \
mbed_official 121:7f86b4238bec 213 (defined(FSL_FEATURE_SMC_USE_STOPCTRL_VLLSM) && FSL_FEATURE_SMC_USE_STOPCTRL_VLLSM) || \
mbed_official 121:7f86b4238bec 214 (defined(FSL_FEATURE_SMC_HAS_LLS_SUBMODE) && FSL_FEATURE_SMC_HAS_LLS_SUBMODE)
mbed_official 121:7f86b4238bec 215 smc_stop_submode_t subMode; /*!< Very Low-leakage Stop sub-mode */
mbed_official 121:7f86b4238bec 216 #endif
mbed_official 121:7f86b4238bec 217 #if (defined(FSL_FEATURE_SMC_HAS_PORPO) && FSL_FEATURE_SMC_HAS_PORPO)
mbed_official 121:7f86b4238bec 218 bool enablePorDetectInVlls0; /*!< Enable Power on reset detect in VLLS mode */
mbed_official 121:7f86b4238bec 219 #endif
mbed_official 121:7f86b4238bec 220 #if (defined(FSL_FEATURE_SMC_HAS_RAM2_POWER_OPTION) && FSL_FEATURE_SMC_HAS_RAM2_POWER_OPTION)
mbed_official 121:7f86b4238bec 221 bool enableRam2InVlls2; /*!< Enable RAM2 power in VLLS2 */
mbed_official 121:7f86b4238bec 222 #endif
mbed_official 121:7f86b4238bec 223 #if (defined(FSL_FEATURE_SMC_HAS_LPOPO) && FSL_FEATURE_SMC_HAS_LPOPO)
mbed_official 121:7f86b4238bec 224 bool enableLpoClock; /*!< Enable LPO clock in VLLS mode */
mbed_official 121:7f86b4238bec 225 #endif
mbed_official 121:7f86b4238bec 226 } smc_power_mode_vlls_config_t;
mbed_official 121:7f86b4238bec 227 #endif
mbed_official 121:7f86b4238bec 228
mbed_official 121:7f86b4238bec 229 /*******************************************************************************
mbed_official 121:7f86b4238bec 230 * API
mbed_official 121:7f86b4238bec 231 ******************************************************************************/
mbed_official 121:7f86b4238bec 232
mbed_official 121:7f86b4238bec 233 #if defined(__cplusplus)
mbed_official 121:7f86b4238bec 234 extern "C" {
mbed_official 121:7f86b4238bec 235 #endif /* __cplusplus */
mbed_official 121:7f86b4238bec 236
mbed_official 121:7f86b4238bec 237 /*! @name System mode controller APIs*/
mbed_official 121:7f86b4238bec 238 /*@{*/
mbed_official 121:7f86b4238bec 239
mbed_official 121:7f86b4238bec 240 #if (defined(FSL_FEATURE_SMC_HAS_VERID) && FSL_FEATURE_SMC_HAS_VERID)
mbed_official 121:7f86b4238bec 241 /*!
mbed_official 121:7f86b4238bec 242 * @brief Gets the SMC version ID.
mbed_official 121:7f86b4238bec 243 *
mbed_official 121:7f86b4238bec 244 * This function gets the SMC version ID, including major version number,
mbed_official 121:7f86b4238bec 245 * minor version number and feature specification number.
mbed_official 121:7f86b4238bec 246 *
mbed_official 121:7f86b4238bec 247 * @param base SMC peripheral base address.
mbed_official 121:7f86b4238bec 248 * @param versionId Pointer to version ID structure.
mbed_official 121:7f86b4238bec 249 */
mbed_official 121:7f86b4238bec 250 static inline void SMC_GetVersionId(SMC_Type *base, smc_version_id_t *versionId)
mbed_official 121:7f86b4238bec 251 {
mbed_official 121:7f86b4238bec 252 *((uint32_t *)versionId) = base->VERID;
mbed_official 121:7f86b4238bec 253 }
mbed_official 121:7f86b4238bec 254 #endif /* FSL_FEATURE_SMC_HAS_VERID */
mbed_official 121:7f86b4238bec 255
mbed_official 121:7f86b4238bec 256 #if (defined(FSL_FEATURE_SMC_HAS_PARAM) && FSL_FEATURE_SMC_HAS_PARAM)
mbed_official 121:7f86b4238bec 257 /*!
mbed_official 121:7f86b4238bec 258 * @brief Gets the SMC parameter.
mbed_official 121:7f86b4238bec 259 *
mbed_official 121:7f86b4238bec 260 * This function gets the SMC parameter, including the enabled power mdoes.
mbed_official 121:7f86b4238bec 261 *
mbed_official 121:7f86b4238bec 262 * @param base SMC peripheral base address.
mbed_official 121:7f86b4238bec 263 * @param param Pointer to SMC param structure.
mbed_official 121:7f86b4238bec 264 */
mbed_official 121:7f86b4238bec 265 void SMC_GetParam(SMC_Type *base, smc_param_t *param);
mbed_official 121:7f86b4238bec 266 #endif
mbed_official 121:7f86b4238bec 267
mbed_official 121:7f86b4238bec 268 /*!
mbed_official 121:7f86b4238bec 269 * @brief Configures all power mode protection settings.
mbed_official 121:7f86b4238bec 270 *
mbed_official 121:7f86b4238bec 271 * This function configures the power mode protection settings for
mbed_official 121:7f86b4238bec 272 * supported power modes in the specified chip family. The available power modes
mbed_official 121:7f86b4238bec 273 * are defined in the smc_power_mode_protection_t. This should be done at an early
mbed_official 121:7f86b4238bec 274 * system level initialization stage. See the reference manual for details.
mbed_official 121:7f86b4238bec 275 * This register can only write once after the power reset.
mbed_official 121:7f86b4238bec 276 *
mbed_official 121:7f86b4238bec 277 * The allowed modes are passed as bit map, for example, to allow LLS and VLLS,
mbed_official 121:7f86b4238bec 278 * use SMC_SetPowerModeProtection(kSMC_AllowPowerModeVlls | kSMC_AllowPowerModeVlps).
mbed_official 121:7f86b4238bec 279 * To allow all modes, use SMC_SetPowerModeProtection(kSMC_AllowPowerModeAll).
mbed_official 121:7f86b4238bec 280 *
mbed_official 121:7f86b4238bec 281 * @param base SMC peripheral base address.
mbed_official 121:7f86b4238bec 282 * @param allowedModes Bitmap of the allowed power modes.
mbed_official 121:7f86b4238bec 283 */
mbed_official 121:7f86b4238bec 284 static inline void SMC_SetPowerModeProtection(SMC_Type *base, uint8_t allowedModes)
mbed_official 121:7f86b4238bec 285 {
mbed_official 121:7f86b4238bec 286 base->PMPROT = allowedModes;
mbed_official 121:7f86b4238bec 287 }
mbed_official 121:7f86b4238bec 288
mbed_official 121:7f86b4238bec 289 /*!
mbed_official 121:7f86b4238bec 290 * @brief Gets the current power mode status.
mbed_official 121:7f86b4238bec 291 *
mbed_official 121:7f86b4238bec 292 * This function returns the current power mode stat. Once application
mbed_official 121:7f86b4238bec 293 * switches the power mode, it should always check the stat to check whether it
mbed_official 121:7f86b4238bec 294 * runs into the specified mode or not. An application should check
mbed_official 121:7f86b4238bec 295 * this mode before switching to a different mode. The system requires that
mbed_official 121:7f86b4238bec 296 * only certain modes can switch to other specific modes. See the
mbed_official 121:7f86b4238bec 297 * reference manual for details and the smc_power_state_t for information about
mbed_official 121:7f86b4238bec 298 * the power stat.
mbed_official 121:7f86b4238bec 299 *
mbed_official 121:7f86b4238bec 300 * @param base SMC peripheral base address.
mbed_official 121:7f86b4238bec 301 * @return Current power mode status.
mbed_official 121:7f86b4238bec 302 */
mbed_official 121:7f86b4238bec 303 static inline smc_power_state_t SMC_GetPowerModeState(SMC_Type *base)
mbed_official 121:7f86b4238bec 304 {
mbed_official 121:7f86b4238bec 305 return (smc_power_state_t)base->PMSTAT;
mbed_official 121:7f86b4238bec 306 }
mbed_official 121:7f86b4238bec 307
mbed_official 121:7f86b4238bec 308 /*!
mbed_official 121:7f86b4238bec 309 * @brief Configure the system to RUN power mode.
mbed_official 121:7f86b4238bec 310 *
mbed_official 121:7f86b4238bec 311 * @param base SMC peripheral base address.
mbed_official 121:7f86b4238bec 312 * @return SMC configuration error code.
mbed_official 121:7f86b4238bec 313 */
mbed_official 121:7f86b4238bec 314 status_t SMC_SetPowerModeRun(SMC_Type *base);
mbed_official 121:7f86b4238bec 315
mbed_official 121:7f86b4238bec 316 #if (defined(FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE) && FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE)
mbed_official 121:7f86b4238bec 317 /*!
mbed_official 121:7f86b4238bec 318 * @brief Configure the system to HSRUN power mode.
mbed_official 121:7f86b4238bec 319 *
mbed_official 121:7f86b4238bec 320 * @param base SMC peripheral base address.
mbed_official 121:7f86b4238bec 321 * @return SMC configuration error code.
mbed_official 121:7f86b4238bec 322 */
mbed_official 121:7f86b4238bec 323 status_t SMC_SetPowerModeHsrun(SMC_Type *base);
mbed_official 121:7f86b4238bec 324 #endif /* FSL_FEATURE_SMC_HAS_HIGH_SPEED_RUN_MODE */
mbed_official 121:7f86b4238bec 325
mbed_official 121:7f86b4238bec 326 /*!
mbed_official 121:7f86b4238bec 327 * @brief Configure the system to WAIT power mode.
mbed_official 121:7f86b4238bec 328 *
mbed_official 121:7f86b4238bec 329 * @param base SMC peripheral base address.
mbed_official 121:7f86b4238bec 330 * @return SMC configuration error code.
mbed_official 121:7f86b4238bec 331 */
mbed_official 121:7f86b4238bec 332 status_t SMC_SetPowerModeWait(SMC_Type *base);
mbed_official 121:7f86b4238bec 333
mbed_official 121:7f86b4238bec 334 /*!
mbed_official 121:7f86b4238bec 335 * @brief Configure the system to Stop power mode.
mbed_official 121:7f86b4238bec 336 *
mbed_official 121:7f86b4238bec 337 * @param base SMC peripheral base address.
mbed_official 121:7f86b4238bec 338 * @param option Partial Stop mode option.
mbed_official 121:7f86b4238bec 339 * @return SMC configuration error code.
mbed_official 121:7f86b4238bec 340 */
mbed_official 121:7f86b4238bec 341 status_t SMC_SetPowerModeStop(SMC_Type *base, smc_partial_stop_option_t option);
mbed_official 121:7f86b4238bec 342
mbed_official 121:7f86b4238bec 343 #if (defined(FSL_FEATURE_SMC_HAS_LPWUI) && FSL_FEATURE_SMC_HAS_LPWUI)
mbed_official 121:7f86b4238bec 344 /*!
mbed_official 121:7f86b4238bec 345 * @brief Configure the system to VLPR power mode.
mbed_official 121:7f86b4238bec 346 *
mbed_official 121:7f86b4238bec 347 * @param base SMC peripheral base address.
mbed_official 121:7f86b4238bec 348 * @param wakeupMode Enter Normal Run mode if true, else stay in VLPR mode.
mbed_official 121:7f86b4238bec 349 * @return SMC configuration error code.
mbed_official 121:7f86b4238bec 350 */
mbed_official 121:7f86b4238bec 351 status_t SMC_SetPowerModeVlpr(SMC_Type *base, bool wakeupMode);
mbed_official 121:7f86b4238bec 352 #else
mbed_official 121:7f86b4238bec 353 /*!
mbed_official 121:7f86b4238bec 354 * @brief Configure the system to VLPR power mode.
mbed_official 121:7f86b4238bec 355 *
mbed_official 121:7f86b4238bec 356 * @param base SMC peripheral base address.
mbed_official 121:7f86b4238bec 357 * @return SMC configuration error code.
mbed_official 121:7f86b4238bec 358 */
mbed_official 121:7f86b4238bec 359 status_t SMC_SetPowerModeVlpr(SMC_Type *base);
mbed_official 121:7f86b4238bec 360 #endif /* FSL_FEATURE_SMC_HAS_LPWUI */
mbed_official 121:7f86b4238bec 361
mbed_official 121:7f86b4238bec 362 /*!
mbed_official 121:7f86b4238bec 363 * @brief Configure the system to VLPW power mode.
mbed_official 121:7f86b4238bec 364 *
mbed_official 121:7f86b4238bec 365 * @param base SMC peripheral base address.
mbed_official 121:7f86b4238bec 366 * @return SMC configuration error code.
mbed_official 121:7f86b4238bec 367 */
mbed_official 121:7f86b4238bec 368 status_t SMC_SetPowerModeVlpw(SMC_Type *base);
mbed_official 121:7f86b4238bec 369
mbed_official 121:7f86b4238bec 370 /*!
mbed_official 121:7f86b4238bec 371 * @brief Configure the system to VLPS power mode.
mbed_official 121:7f86b4238bec 372 *
mbed_official 121:7f86b4238bec 373 * @param base SMC peripheral base address.
mbed_official 121:7f86b4238bec 374 * @return SMC configuration error code.
mbed_official 121:7f86b4238bec 375 */
mbed_official 121:7f86b4238bec 376 status_t SMC_SetPowerModeVlps(SMC_Type *base);
mbed_official 121:7f86b4238bec 377
mbed_official 121:7f86b4238bec 378 #if (defined(FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE) && FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE)
mbed_official 121:7f86b4238bec 379 #if ((defined(FSL_FEATURE_SMC_HAS_LLS_SUBMODE) && FSL_FEATURE_SMC_HAS_LLS_SUBMODE) || \
mbed_official 121:7f86b4238bec 380 (defined(FSL_FEATURE_SMC_HAS_LPOPO) && FSL_FEATURE_SMC_HAS_LPOPO))
mbed_official 121:7f86b4238bec 381 /*!
mbed_official 121:7f86b4238bec 382 * @brief Configure the system to LLS power mode.
mbed_official 121:7f86b4238bec 383 *
mbed_official 121:7f86b4238bec 384 * @param base SMC peripheral base address.
mbed_official 121:7f86b4238bec 385 * @param config The LLS power mode configuration structure
mbed_official 121:7f86b4238bec 386 * @return SMC configuration error code.
mbed_official 121:7f86b4238bec 387 */
mbed_official 121:7f86b4238bec 388 status_t SMC_SetPowerModeLls(SMC_Type *base, const smc_power_mode_lls_config_t *config);
mbed_official 121:7f86b4238bec 389 #else
mbed_official 121:7f86b4238bec 390 /*!
mbed_official 121:7f86b4238bec 391 * @brief Configure the system to LLS power mode.
mbed_official 121:7f86b4238bec 392 *
mbed_official 121:7f86b4238bec 393 * @param base SMC peripheral base address.
mbed_official 121:7f86b4238bec 394 * @return SMC configuration error code.
mbed_official 121:7f86b4238bec 395 */
mbed_official 121:7f86b4238bec 396 status_t SMC_SetPowerModeLls(SMC_Type *base);
mbed_official 121:7f86b4238bec 397 #endif
mbed_official 121:7f86b4238bec 398 #endif /* FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE */
mbed_official 121:7f86b4238bec 399
mbed_official 121:7f86b4238bec 400 #if (defined(FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE) && FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE)
mbed_official 121:7f86b4238bec 401 /*!
mbed_official 121:7f86b4238bec 402 * @brief Configure the system to VLLS power mode.
mbed_official 121:7f86b4238bec 403 *
mbed_official 121:7f86b4238bec 404 * @param base SMC peripheral base address.
mbed_official 121:7f86b4238bec 405 * @param config The VLLS power mode configuration structure.
mbed_official 121:7f86b4238bec 406 * @return SMC configuration error code.
mbed_official 121:7f86b4238bec 407 */
mbed_official 121:7f86b4238bec 408 status_t SMC_SetPowerModeVlls(SMC_Type *base, const smc_power_mode_vlls_config_t *config);
mbed_official 121:7f86b4238bec 409 #endif /* FSL_FEATURE_SMC_HAS_VERY_LOW_LEAKAGE_STOP_MODE */
mbed_official 121:7f86b4238bec 410
mbed_official 121:7f86b4238bec 411 /*@}*/
mbed_official 121:7f86b4238bec 412
mbed_official 121:7f86b4238bec 413 #if defined(__cplusplus)
mbed_official 121:7f86b4238bec 414 }
mbed_official 121:7f86b4238bec 415 #endif /* __cplusplus */
mbed_official 121:7f86b4238bec 416
mbed_official 121:7f86b4238bec 417 /*! @}*/
mbed_official 121:7f86b4238bec 418
mbed_official 121:7f86b4238bec 419 #endif /* _FSL_SMC_H_ */