Alessandro Angelino / target-freescale-ksdk

Fork of target-freescale-ksdk by Morpheus

Committer:
Alessandro Angelino
Date:
Mon Apr 04 14:18:16 2016 +0100
Revision:
1:d01108809007
Parent:
0:e4d670b91a9a
Replace NVIC APIs with vIRQ ones

Who changed what in which revision?

UserRevisionLine numberNew contents of line
screamer 0:e4d670b91a9a 1 /*
screamer 0:e4d670b91a9a 2 * Copyright (c) 2013, Freescale Semiconductor, Inc.
screamer 0:e4d670b91a9a 3 * All rights reserved.
screamer 0:e4d670b91a9a 4 *
screamer 0:e4d670b91a9a 5 * Redistribution and use in source and binary forms, with or without modification,
screamer 0:e4d670b91a9a 6 * are permitted provided that the following conditions are met:
screamer 0:e4d670b91a9a 7 *
screamer 0:e4d670b91a9a 8 * o Redistributions of source code must retain the above copyright notice, this list
screamer 0:e4d670b91a9a 9 * of conditions and the following disclaimer.
screamer 0:e4d670b91a9a 10 *
screamer 0:e4d670b91a9a 11 * o Redistributions in binary form must reproduce the above copyright notice, this
screamer 0:e4d670b91a9a 12 * list of conditions and the following disclaimer in the documentation and/or
screamer 0:e4d670b91a9a 13 * other materials provided with the distribution.
screamer 0:e4d670b91a9a 14 *
screamer 0:e4d670b91a9a 15 * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
screamer 0:e4d670b91a9a 16 * contributors may be used to endorse or promote products derived from this
screamer 0:e4d670b91a9a 17 * software without specific prior written permission.
screamer 0:e4d670b91a9a 18 *
screamer 0:e4d670b91a9a 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
screamer 0:e4d670b91a9a 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
screamer 0:e4d670b91a9a 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
screamer 0:e4d670b91a9a 22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
screamer 0:e4d670b91a9a 23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
screamer 0:e4d670b91a9a 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
screamer 0:e4d670b91a9a 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
screamer 0:e4d670b91a9a 26 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
screamer 0:e4d670b91a9a 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
screamer 0:e4d670b91a9a 28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
screamer 0:e4d670b91a9a 29 */
screamer 0:e4d670b91a9a 30 #if !defined(__FSL_MCG_HAL_MODES_H__)
screamer 0:e4d670b91a9a 31 #define __FSL_MCG_HAL_MODES_H__
screamer 0:e4d670b91a9a 32
screamer 0:e4d670b91a9a 33 #include <stdint.h>
screamer 0:e4d670b91a9a 34 #include <stdbool.h>
screamer 0:e4d670b91a9a 35 #include <assert.h>
screamer 0:e4d670b91a9a 36 #include "fsl_mcg_features.h"
screamer 0:e4d670b91a9a 37 #include "fsl_mcg_hal.h"
screamer 0:e4d670b91a9a 38
screamer 0:e4d670b91a9a 39 //! @addtogroup mcg_hal
screamer 0:e4d670b91a9a 40 //! @{
screamer 0:e4d670b91a9a 41
screamer 0:e4d670b91a9a 42 ////////////////////////////////////////////////////////////////////////////////
screamer 0:e4d670b91a9a 43 // Definitions
screamer 0:e4d670b91a9a 44 ////////////////////////////////////////////////////////////////////////////////
screamer 0:e4d670b91a9a 45
screamer 0:e4d670b91a9a 46 /*! @brief MCG mode definitions */
screamer 0:e4d670b91a9a 47 typedef enum _mcg_modes {
screamer 0:e4d670b91a9a 48 kMcgModeFEI, /* FEI - FLL Engaged Internal */
screamer 0:e4d670b91a9a 49 kMcgModeFEE, /* FEE - FLL Engaged External */
screamer 0:e4d670b91a9a 50 kMcgModeFBI, /* FBI - FLL Bypassed Internal */
screamer 0:e4d670b91a9a 51 kMcgModeFBE, /* FBE - FLL Bypassed External */
screamer 0:e4d670b91a9a 52 kMcgModePEE, /* PEE - PLL Engaged External */
screamer 0:e4d670b91a9a 53 kMcgModePBE, /* PBE - PLL Bypassed Enternal */
screamer 0:e4d670b91a9a 54 kMcgModeBLPI, /* BLPI - Bypassed Low Power Internal */
screamer 0:e4d670b91a9a 55 kMcgModeBLPE, /* BLPE - Bypassed Low Power External */
screamer 0:e4d670b91a9a 56 kMcgModeSTOP, /* STOP - Stop */
screamer 0:e4d670b91a9a 57 kMcgModeError /* Unknown mode */
screamer 0:e4d670b91a9a 58 } mcg_modes_t;
screamer 0:e4d670b91a9a 59
screamer 0:e4d670b91a9a 60 /*! @brief MCG mode transition API error code definitions */
screamer 0:e4d670b91a9a 61 typedef enum McgModeErrorCode {
screamer 0:e4d670b91a9a 62
screamer 0:e4d670b91a9a 63 /* MCG mode error codes */
screamer 0:e4d670b91a9a 64
screamer 0:e4d670b91a9a 65 kMcgErrNotInFeiMode = 0x01, /* - Not in FEI mode */
screamer 0:e4d670b91a9a 66 kMcgErrNotInFeeMode = 0x02, /* - Not in FEE mode */
screamer 0:e4d670b91a9a 67 kMcgErrNotInFbiMode = 0x03, /* - Not in FBI mode */
screamer 0:e4d670b91a9a 68 kMcgErrNotInFbeMode = 0x04, /* - Not in FBE mode */
screamer 0:e4d670b91a9a 69 kMcgErrNotInBlpiMode = 0x05, /* - Not in BLPI mode */
screamer 0:e4d670b91a9a 70 kMcgErrNotInBlpeMode = 0x06, /* - Not in BLPE mode */
screamer 0:e4d670b91a9a 71 kMcgErrNotInPbeMode = 0x07, /* - Not in PBE mode */
screamer 0:e4d670b91a9a 72 kMcgErrNotInPeeMode = 0x08, /* - Not in PEE mode */
screamer 0:e4d670b91a9a 73
screamer 0:e4d670b91a9a 74 /* CLock MUX switching error codes */
screamer 0:e4d670b91a9a 75
screamer 0:e4d670b91a9a 76 kMcgErrIrefstClearTimeOut = 0x11, /* - IREFST did not clear within allowed time, FLL
screamer 0:e4d670b91a9a 77 reference did not switch over from internal to
screamer 0:e4d670b91a9a 78 external clock */
screamer 0:e4d670b91a9a 79 kMcgErrIrefstSetTimeout = 0x12, /* - IREFST did not set within allowed time, the FLL
screamer 0:e4d670b91a9a 80 reference did not switch over from external to
screamer 0:e4d670b91a9a 81 internal clock(NEED TO CHECK IN MOVES TO FBI MODE) */
screamer 0:e4d670b91a9a 82 kMcgErrIrcstClearTimeout = 0x13, /* - IRCST did not clear within allowed time,
screamer 0:e4d670b91a9a 83 slow IRC is not selected */
screamer 0:e4d670b91a9a 84 kMcgErrIrefstSetTimeout1 = 0x14, /* - IREFST did not set within allowed time,
screamer 0:e4d670b91a9a 85 fast IRC is not selected */
screamer 0:e4d670b91a9a 86 kMcgErrPllstClearTimeout = 0x15, /* - PLLST did not clear, PLLST did not switch to
screamer 0:e4d670b91a9a 87 FLL output, FLL is not running */
screamer 0:e4d670b91a9a 88 kMcgErrPllstSetTimeout = 0x16, /* - PLLST did not set, PLLST did not switch to PLL
screamer 0:e4d670b91a9a 89 ouptut, PLL is not running */
screamer 0:e4d670b91a9a 90 kMcgErrPllcst = 0x17, /* - PLLCST did not switch to the correct state,
screamer 0:e4d670b91a9a 91 the correct PLL is not selected as PLLS clock source */
screamer 0:e4d670b91a9a 92 kMcgErrClkst0 = 0x18, /* - CLKST != 0, MCG did not switch to FLL output */
screamer 0:e4d670b91a9a 93 kMcgErrClkst1 = 0x19, /* - CLKST != 1, MCG did not switch to internal reference
screamer 0:e4d670b91a9a 94 clock source */
screamer 0:e4d670b91a9a 95 kMcgErrClkst2 = 0x1A, /* - CLKST != 2, MCG did not switch to external clock */
screamer 0:e4d670b91a9a 96 kMcgErrClkst3 = 0x1B, /* - CLKST != 3, MCG did not switch to PLL */
screamer 0:e4d670b91a9a 97
screamer 0:e4d670b91a9a 98 /* Oscillator error codes */
screamer 0:e4d670b91a9a 99
screamer 0:e4d670b91a9a 100 kMcgErrOscEtalRange = 0x21, /* - external frequency is bigger than max frequency */
screamer 0:e4d670b91a9a 101 kMcgErrOscXtalRange = 0x22, /* - crystal frequency outside allowed range */
screamer 0:e4d670b91a9a 102 kMcgErrOscSetTimeout = 0x23, /* - OSCINIT/OSCINIT2 did not set within allowed time */
screamer 0:e4d670b91a9a 103
screamer 0:e4d670b91a9a 104 /* IRC and FLL error codes */
screamer 0:e4d670b91a9a 105
screamer 0:e4d670b91a9a 106 kMcgErrIrcSlowRange = 0x31, /* - slow IRC is outside allowed range */
screamer 0:e4d670b91a9a 107 kMcgErrIrcFastRange = 0x32, /* - fast IRC is outside allowed range */
screamer 0:e4d670b91a9a 108 kMcgErrFllRange0Min = 0x33, /* - FLL frequency is below minimum value for range 0 */
screamer 0:e4d670b91a9a 109 kMcgErrFllRange0Max = 0x34, /* - FLL frequency is above maximum value for range 0 */
screamer 0:e4d670b91a9a 110 kMcgErrFllRange1Min = 0x35, /* - FLL frequency is below minimum value for range 1 */
screamer 0:e4d670b91a9a 111 kMcgErrFllRange1Max = 0x36, /* - FLL frequency is above maximum value for range 1 */
screamer 0:e4d670b91a9a 112 kMcgErrFllRange2Min = 0x37, /* - FLL frequency is below minimum value for range 2 */
screamer 0:e4d670b91a9a 113 kMcgErrFllRange2Max = 0x38, /* - FLL frequency is above maximum value for range 2 */
screamer 0:e4d670b91a9a 114 kMcgErrFllRange3Min = 0x39, /* - FLL frequency is below minimum value for range 3 */
screamer 0:e4d670b91a9a 115 kMcgErrFllRange3Max = 0x3A, /* - FLL frequency is above maximum value for range 3 */
screamer 0:e4d670b91a9a 116 kMcgErrFllDrstDrsRange = 0x3B, /* - DRS is out of range */
screamer 0:e4d670b91a9a 117
screamer 0:e4d670b91a9a 118 kMcgErrFllFreqency = 0x3C,
screamer 0:e4d670b91a9a 119
screamer 0:e4d670b91a9a 120 /* PLL error codes */
screamer 0:e4d670b91a9a 121
screamer 0:e4d670b91a9a 122 kMcgErrPllPrdidRange = 0x41, /* - PRDIV outside allowed range */
screamer 0:e4d670b91a9a 123 kMcgErrPllVdivRange = 0x42, /* - VDIV outside allowed range */
screamer 0:e4d670b91a9a 124 kMcgErrPllRefClkRange = 0x43, /* - PLL reference clock frequency, out of allowed range */
screamer 0:e4d670b91a9a 125 kMcgErrPllLockBit = 0x44, /* - LOCK or LOCK2 bit did not set */
screamer 0:e4d670b91a9a 126 kMcgErrPllOutClkRange = 0x45, /* - PLL output frequency is outside allowed range (NEED
screamer 0:e4d670b91a9a 127 TO ADD THIS CHECK TO fbe_pbe and blpe_pbe) only in
screamer 0:e4d670b91a9a 128 fei-pee at this time */
screamer 0:e4d670b91a9a 129 kMcgErrMax = 0x1000
screamer 0:e4d670b91a9a 130 } mcg_mode_error_code_t;
screamer 0:e4d670b91a9a 131
screamer 0:e4d670b91a9a 132 ////////////////////////////////////////////////////////////////////////////////
screamer 0:e4d670b91a9a 133 // API
screamer 0:e4d670b91a9a 134 ////////////////////////////////////////////////////////////////////////////////
screamer 0:e4d670b91a9a 135
screamer 0:e4d670b91a9a 136 #if defined(__cplusplus)
screamer 0:e4d670b91a9a 137 extern "C" {
screamer 0:e4d670b91a9a 138 #endif // __cplusplus
screamer 0:e4d670b91a9a 139
screamer 0:e4d670b91a9a 140 /*!
screamer 0:e4d670b91a9a 141 * @brief Gets the current MCG mode.
screamer 0:e4d670b91a9a 142 *
screamer 0:e4d670b91a9a 143 * This is an internal function that checks the MCG registers and determine
screamer 0:e4d670b91a9a 144 * the current MCG mode
screamer 0:e4d670b91a9a 145 *
screamer 0:e4d670b91a9a 146 * @param baseAddr Base address for current MCG instance.
screamer 0:e4d670b91a9a 147 * @return mcgMode Current MCG mode or error code mcg_modes_t
screamer 0:e4d670b91a9a 148 */
screamer 0:e4d670b91a9a 149 mcg_modes_t CLOCK_HAL_GetMcgMode(uint32_t baseAddr);
screamer 0:e4d670b91a9a 150
screamer 0:e4d670b91a9a 151 /*!
screamer 0:e4d670b91a9a 152 * @brief Checks the FLL frequency integrity.
screamer 0:e4d670b91a9a 153 *
screamer 0:e4d670b91a9a 154 * This function calculates and checks the FLL frequency value based on input value.
screamer 0:e4d670b91a9a 155 *
screamer 0:e4d670b91a9a 156 * @param baseAddr Base address for current MCG instance.
screamer 0:e4d670b91a9a 157 * @param fllRef - FLL reference clock in Hz.
screamer 0:e4d670b91a9a 158 *
screamer 0:e4d670b91a9a 159 * @return value FLL output frequency (Hz) or error code
screamer 0:e4d670b91a9a 160 */
screamer 0:e4d670b91a9a 161 uint32_t CLOCK_HAL_GetFllFrequency(uint32_t baseAddr, int32_t fllRef);
screamer 0:e4d670b91a9a 162
screamer 0:e4d670b91a9a 163 /*!
screamer 0:e4d670b91a9a 164 * @brief Mode transition FEI to FEE mode
screamer 0:e4d670b91a9a 165 *
screamer 0:e4d670b91a9a 166 * This function transitions the MCG from FEI mode to FEE mode.
screamer 0:e4d670b91a9a 167 *
screamer 0:e4d670b91a9a 168 * @param baseAddr Base address for current MCG instance.
screamer 0:e4d670b91a9a 169 * @param oscselVal - oscillator selection value
screamer 0:e4d670b91a9a 170 * 0 - OSC 0, 1 - RTC 32k, 2 - IRC 48M
screamer 0:e4d670b91a9a 171 * @param crystalVal - external clock frequency in Hz
screamer 0:e4d670b91a9a 172 * oscselVal - 0
screamer 0:e4d670b91a9a 173 * erefsVal - 0: osc0 external clock frequency
screamer 0:e4d670b91a9a 174 * erefsVal - 1: osc0 crystal clock frequency
screamer 0:e4d670b91a9a 175 * oscselVal - 1: RTC 32Khz clock source frequency
screamer 0:e4d670b91a9a 176 * oscselVal - 2: IRC 48Mhz clock source frequency
screamer 0:e4d670b91a9a 177 * @param hgoVal - selects whether low power or high gain mode is selected
screamer 0:e4d670b91a9a 178 * for the crystal oscillator. This value is only valid when
screamer 0:e4d670b91a9a 179 * oscselVal is 0 and erefsVal is 1.
screamer 0:e4d670b91a9a 180 * @param erefsVal - selects external clock (=0) or crystal OSC (=1)
screamer 0:e4d670b91a9a 181 *
screamer 0:e4d670b91a9a 182 * @return value MCGCLKOUT frequency (Hz) or error code
screamer 0:e4d670b91a9a 183 */
screamer 0:e4d670b91a9a 184 uint32_t CLOCK_HAL_SetFeiToFeeMode(uint32_t baseAddr, mcg_oscsel_select_t oscselVal,
screamer 0:e4d670b91a9a 185 uint32_t crystalVal, mcg_high_gain_osc_select_t hgoVal,
screamer 0:e4d670b91a9a 186 mcg_external_ref_clock_select_t erefsVal);
screamer 0:e4d670b91a9a 187
screamer 0:e4d670b91a9a 188 /*!
screamer 0:e4d670b91a9a 189 * @brief Mode transition FEI to FBI mode
screamer 0:e4d670b91a9a 190 *
screamer 0:e4d670b91a9a 191 * This function transitions the MCG from FEI mode to FBI mode.
screamer 0:e4d670b91a9a 192 *
screamer 0:e4d670b91a9a 193 * @param baseAddr Base address for current MCG instance.
screamer 0:e4d670b91a9a 194 * @param ircFreq - internal reference clock frequency value
screamer 0:e4d670b91a9a 195 * @param ircSelect - slow or fast clock selection
screamer 0:e4d670b91a9a 196 * 0: slow, 1: fast
screamer 0:e4d670b91a9a 197 * @return value MCGCLKOUT frequency (Hz) or error code
screamer 0:e4d670b91a9a 198 */
screamer 0:e4d670b91a9a 199 uint32_t CLOCK_HAL_SetFeiToFbiMode(uint32_t baseAddr, uint32_t ircFreq,
screamer 0:e4d670b91a9a 200 mcg_internal_ref_clock_select_t ircSelect);
screamer 0:e4d670b91a9a 201
screamer 0:e4d670b91a9a 202 /*!
screamer 0:e4d670b91a9a 203 * @brief Mode transition FEI to FBE mode
screamer 0:e4d670b91a9a 204 *
screamer 0:e4d670b91a9a 205 * This function transitions the MCG from FEI mode to FBE mode.
screamer 0:e4d670b91a9a 206 *
screamer 0:e4d670b91a9a 207 * @param baseAddr Base address for current MCG instance.
screamer 0:e4d670b91a9a 208 * @param oscselVal - oscillator selection value
screamer 0:e4d670b91a9a 209 * 0 - OSC 0, 1 - RTC 32k, 2 - IRC 48M
screamer 0:e4d670b91a9a 210 * @param crystalVal - external clock frequency in Hz
screamer 0:e4d670b91a9a 211 * oscselVal - 0
screamer 0:e4d670b91a9a 212 * erefsVal - 0: osc0 external clock frequency
screamer 0:e4d670b91a9a 213 * erefsVal - 1: osc0 crystal clock frequency
screamer 0:e4d670b91a9a 214 * oscselVal - 1: RTC 32Khz clock source frequency
screamer 0:e4d670b91a9a 215 * oscselVal - 2: IRC 48Mhz clock source frequency
screamer 0:e4d670b91a9a 216 * @param hgoVal - selects whether low power or high gain mode is selected
screamer 0:e4d670b91a9a 217 * for the crystal oscillator. This value is only valid when
screamer 0:e4d670b91a9a 218 * oscselVal is 0 and erefsVal is 1.
screamer 0:e4d670b91a9a 219 * @param erefsVal - selects external clock (=0) or crystal OSC (=1)
screamer 0:e4d670b91a9a 220 *
screamer 0:e4d670b91a9a 221 * @return value MCGCLKOUT frequency (Hz) or error code
screamer 0:e4d670b91a9a 222 */
screamer 0:e4d670b91a9a 223 uint32_t CLOCK_HAL_SetFeiToFbeMode(uint32_t baseAddr, mcg_oscsel_select_t oscselVal,
screamer 0:e4d670b91a9a 224 uint32_t crystalVal, mcg_high_gain_osc_select_t hgoVal,
screamer 0:e4d670b91a9a 225 mcg_external_ref_clock_select_t erefsVal);
screamer 0:e4d670b91a9a 226
screamer 0:e4d670b91a9a 227 /*!
screamer 0:e4d670b91a9a 228 * @brief Mode transition FEE to FEI mode
screamer 0:e4d670b91a9a 229 *
screamer 0:e4d670b91a9a 230 * This function transitions the MCG from FEE mode to FEI mode.
screamer 0:e4d670b91a9a 231 *
screamer 0:e4d670b91a9a 232 * @param baseAddr Base address for current MCG instance.
screamer 0:e4d670b91a9a 233 * @param ircFreq - internal reference clock frequency value (slow)
screamer 0:e4d670b91a9a 234 *
screamer 0:e4d670b91a9a 235 * @return value MCGCLKOUT frequency (Hz) or error code
screamer 0:e4d670b91a9a 236 */
screamer 0:e4d670b91a9a 237 uint32_t CLOCK_HAL_SetFeeToFeiMode(uint32_t baseAddr, uint32_t ircFreq);
screamer 0:e4d670b91a9a 238
screamer 0:e4d670b91a9a 239 /*!
screamer 0:e4d670b91a9a 240 * @brief Mode transition FEE to FBI mode
screamer 0:e4d670b91a9a 241 *
screamer 0:e4d670b91a9a 242 * This function transitions the MCG from FEE mode to FBI mode.
screamer 0:e4d670b91a9a 243 *
screamer 0:e4d670b91a9a 244 * @param baseAddr Base address for current MCG instance.
screamer 0:e4d670b91a9a 245 * @param ircFreq - internal reference clock frequency value
screamer 0:e4d670b91a9a 246 * @param ircSelect - slow or fast clock selection
screamer 0:e4d670b91a9a 247 * 0: slow, 1: fast
screamer 0:e4d670b91a9a 248 *
screamer 0:e4d670b91a9a 249 * @return value MCGCLKOUT frequency (Hz) or error code
screamer 0:e4d670b91a9a 250 */
screamer 0:e4d670b91a9a 251 uint32_t CLOCK_HAL_SetFeeToFbiMode(uint32_t baseAddr, uint32_t ircFreq,
screamer 0:e4d670b91a9a 252 mcg_internal_ref_clock_select_t ircSelect);
screamer 0:e4d670b91a9a 253
screamer 0:e4d670b91a9a 254 /*!
screamer 0:e4d670b91a9a 255 * @brief Mode transition FEE to FBE mode
screamer 0:e4d670b91a9a 256 *
screamer 0:e4d670b91a9a 257 * This function transitions the MCG from FEE mode to FBE mode.
screamer 0:e4d670b91a9a 258 *
screamer 0:e4d670b91a9a 259 * @param baseAddr Base address for current MCG instance.
screamer 0:e4d670b91a9a 260 * @param crystalVal - external reference clock frequency value
screamer 0:e4d670b91a9a 261 *
screamer 0:e4d670b91a9a 262 * @return value MCGCLKOUT frequency (Hz) or error code
screamer 0:e4d670b91a9a 263 */
screamer 0:e4d670b91a9a 264 uint32_t CLOCK_HAL_SetFeeToFbeMode(uint32_t baseAddr, uint32_t crystalVal);
screamer 0:e4d670b91a9a 265
screamer 0:e4d670b91a9a 266 /*!
screamer 0:e4d670b91a9a 267 * @brief Mode transition FBI to FEI mode
screamer 0:e4d670b91a9a 268 *
screamer 0:e4d670b91a9a 269 * This function transitions the MCG from FBI mode to FEI mode.
screamer 0:e4d670b91a9a 270 *
screamer 0:e4d670b91a9a 271 * @param baseAddr Base address for current MCG instance.
screamer 0:e4d670b91a9a 272 * @param ircFreq - internal reference clock frequency value (slow)
screamer 0:e4d670b91a9a 273 *
screamer 0:e4d670b91a9a 274 * @return value MCGCLKOUT frequency (Hz) or error code
screamer 0:e4d670b91a9a 275 */
screamer 0:e4d670b91a9a 276 uint32_t CLOCK_HAL_SetFbiToFeiMode(uint32_t baseAddr, uint32_t ircFreq);
screamer 0:e4d670b91a9a 277
screamer 0:e4d670b91a9a 278 /*!
screamer 0:e4d670b91a9a 279 * @brief Mode transition FBI to FEE mode
screamer 0:e4d670b91a9a 280 *
screamer 0:e4d670b91a9a 281 * This function transitions the MCG from FBI mode to FEE mode.
screamer 0:e4d670b91a9a 282 *
screamer 0:e4d670b91a9a 283 * @param baseAddr Base address for current MCG instance.
screamer 0:e4d670b91a9a 284 * @param oscselVal - oscillator selection value
screamer 0:e4d670b91a9a 285 * 0 - OSC 0, 1 - RTC 32k, 2 - IRC 48M
screamer 0:e4d670b91a9a 286 * @param crystalVal - external clock frequency in Hz
screamer 0:e4d670b91a9a 287 * oscselVal - 0
screamer 0:e4d670b91a9a 288 * erefsVal - 0: osc0 external clock frequency
screamer 0:e4d670b91a9a 289 * erefsVal - 1: osc0 crystal clock frequency
screamer 0:e4d670b91a9a 290 * oscselVal - 1: RTC 32Khz clock source frequency
screamer 0:e4d670b91a9a 291 * oscselVal - 2: IRC 48Mhz clock source frequency
screamer 0:e4d670b91a9a 292 * @param hgoVal - selects whether low power or high gain mode is selected
screamer 0:e4d670b91a9a 293 * for the crystal oscillator. This value is only valid when
screamer 0:e4d670b91a9a 294 * oscselVal is 0 and erefsVal is 1.
screamer 0:e4d670b91a9a 295 * @param erefsVal - selects external clock (=0) or crystal OSC (=1)
screamer 0:e4d670b91a9a 296 *
screamer 0:e4d670b91a9a 297 * @return value MCGCLKOUT frequency (Hz) or error code
screamer 0:e4d670b91a9a 298 */
screamer 0:e4d670b91a9a 299 uint32_t CLOCK_HAL_SetFbiToFeeMode(uint32_t baseAddr, mcg_oscsel_select_t oscselVal,
screamer 0:e4d670b91a9a 300 uint32_t crystalVal, mcg_high_gain_osc_select_t hgoVal,
screamer 0:e4d670b91a9a 301 mcg_external_ref_clock_select_t erefsVal);
screamer 0:e4d670b91a9a 302
screamer 0:e4d670b91a9a 303 /*!
screamer 0:e4d670b91a9a 304 * @brief Mode transition FBI to FBE mode
screamer 0:e4d670b91a9a 305 *
screamer 0:e4d670b91a9a 306 * This function transitions the MCG from FBI mode to FBE mode.
screamer 0:e4d670b91a9a 307 *
screamer 0:e4d670b91a9a 308 * @param baseAddr Base address for current MCG instance.
screamer 0:e4d670b91a9a 309 * @param oscselVal - oscillator selection value
screamer 0:e4d670b91a9a 310 * 0 - OSC 0, 1 - RTC 32k, 2 - IRC 48M
screamer 0:e4d670b91a9a 311 * @param crystalVal - external clock frequency in Hz
screamer 0:e4d670b91a9a 312 * oscselVal - 0
screamer 0:e4d670b91a9a 313 * erefsVal - 0: osc0 external clock frequency
screamer 0:e4d670b91a9a 314 * erefsVal - 1: osc0 crystal clock frequency
screamer 0:e4d670b91a9a 315 * oscselVal - 1: RTC 32Khz clock source frequency
screamer 0:e4d670b91a9a 316 * oscselVal - 2: IRC 48Mhz clock source frequency
screamer 0:e4d670b91a9a 317 * @param hgoVal - selects whether low power or high gain mode is selected
screamer 0:e4d670b91a9a 318 * for the crystal oscillator. This value is only valid when
screamer 0:e4d670b91a9a 319 * oscselVal is 0 and erefsVal is 1.
screamer 0:e4d670b91a9a 320 * @param erefsVal - selects external clock (=0) or crystal OSC (=1)
screamer 0:e4d670b91a9a 321 *
screamer 0:e4d670b91a9a 322 * @return value MCGCLKOUT frequency (Hz) or error code
screamer 0:e4d670b91a9a 323 */
screamer 0:e4d670b91a9a 324 uint32_t CLOCK_HAL_SetFbiToFbeMode(uint32_t baseAddr, mcg_oscsel_select_t oscselVal,
screamer 0:e4d670b91a9a 325 uint32_t crystalVal, mcg_high_gain_osc_select_t hgoVal,
screamer 0:e4d670b91a9a 326 mcg_external_ref_clock_select_t erefsVal);
screamer 0:e4d670b91a9a 327
screamer 0:e4d670b91a9a 328 /*!
screamer 0:e4d670b91a9a 329 * @brief Mode transition FBI to BLPI mode
screamer 0:e4d670b91a9a 330 *
screamer 0:e4d670b91a9a 331 * This function transitions the MCG from FBI mode to BLPI mode.This is
screamer 0:e4d670b91a9a 332 * achieved by setting the MCG_C2[LP] bit.
screamer 0:e4d670b91a9a 333 *
screamer 0:e4d670b91a9a 334 * @param baseAddr Base address for current MCG instance.
screamer 0:e4d670b91a9a 335 * @param ircFreq - internal reference clock frequency value
screamer 0:e4d670b91a9a 336 * @param ircSelect - slow or fast clock selection
screamer 0:e4d670b91a9a 337 * 0: slow, 1: fast
screamer 0:e4d670b91a9a 338 *
screamer 0:e4d670b91a9a 339 * @return value MCGCLKOUT frequency (Hz) or error code
screamer 0:e4d670b91a9a 340 */
screamer 0:e4d670b91a9a 341 uint32_t CLOCK_HAL_SetFbiToBlpiMode(uint32_t baseAddr, uint32_t ircFreq,
screamer 0:e4d670b91a9a 342 mcg_internal_ref_clock_select_t ircSelect);
screamer 0:e4d670b91a9a 343
screamer 0:e4d670b91a9a 344 /*!
screamer 0:e4d670b91a9a 345 * @brief Mode transition BLPI to FBI mode
screamer 0:e4d670b91a9a 346 *
screamer 0:e4d670b91a9a 347 * This function transitions the MCG from BLPI mode to FBI mode.This is
screamer 0:e4d670b91a9a 348 * achieved by clearing the MCG_C2[LP] bit.
screamer 0:e4d670b91a9a 349 *
screamer 0:e4d670b91a9a 350 * @param baseAddr Base address for current MCG instance.
screamer 0:e4d670b91a9a 351 * @param ircFreq - internal reference clock frequency value
screamer 0:e4d670b91a9a 352 * @param ircSelect - slow or fast clock selection
screamer 0:e4d670b91a9a 353 * 0: slow, 1: fast
screamer 0:e4d670b91a9a 354 *
screamer 0:e4d670b91a9a 355 * @return value MCGCLKOUT frequency (Hz) or error code
screamer 0:e4d670b91a9a 356 */
screamer 0:e4d670b91a9a 357 uint32_t CLOCK_HAL_SetBlpiToFbiMode(uint32_t baseAddr, uint32_t ircFreq, uint8_t ircSelect);
screamer 0:e4d670b91a9a 358
screamer 0:e4d670b91a9a 359 /*!
screamer 0:e4d670b91a9a 360 * @brief Mode transition FBE to FEE mode
screamer 0:e4d670b91a9a 361 *
screamer 0:e4d670b91a9a 362 * This function transitions the MCG from FBE mode to FEE mode.
screamer 0:e4d670b91a9a 363 *
screamer 0:e4d670b91a9a 364 * @param baseAddr Base address for current MCG instance.
screamer 0:e4d670b91a9a 365 * @param crystalVal - external reference clock frequency value
screamer 0:e4d670b91a9a 366 *
screamer 0:e4d670b91a9a 367 * @return value MCGCLKOUT frequency (Hz) or error code
screamer 0:e4d670b91a9a 368 */
screamer 0:e4d670b91a9a 369 uint32_t CLOCK_HAL_SetFbeToFeeMode(uint32_t baseAddr, uint32_t crystalVal);
screamer 0:e4d670b91a9a 370
screamer 0:e4d670b91a9a 371 /*!
screamer 0:e4d670b91a9a 372 * @brief Mode transition FBE to FEI mode
screamer 0:e4d670b91a9a 373 *
screamer 0:e4d670b91a9a 374 * This function transitions the MCG from FBE mode to FEI mode.
screamer 0:e4d670b91a9a 375 *
screamer 0:e4d670b91a9a 376 * @param baseAddr Base address for current MCG instance.
screamer 0:e4d670b91a9a 377 * @param ircFreq - internal reference clock frequency value (slow)
screamer 0:e4d670b91a9a 378 *
screamer 0:e4d670b91a9a 379 * @return value MCGCLKOUT frequency (Hz) or error code
screamer 0:e4d670b91a9a 380 *END***********************************************************************************/
screamer 0:e4d670b91a9a 381 uint32_t CLOCK_HAL_SetFbeToFeiMode(uint32_t baseAddr, uint32_t ircFreq);
screamer 0:e4d670b91a9a 382
screamer 0:e4d670b91a9a 383 /*!
screamer 0:e4d670b91a9a 384 * @brief Mode transition FBE to FBI mode
screamer 0:e4d670b91a9a 385 *
screamer 0:e4d670b91a9a 386 * This function transitions the MCG from FBE mode to FBI mode.
screamer 0:e4d670b91a9a 387 *
screamer 0:e4d670b91a9a 388 * @param baseAddr Base address for current MCG instance.
screamer 0:e4d670b91a9a 389 * @param ircFreq - internal reference clock frequency value
screamer 0:e4d670b91a9a 390 * @param ircSelect - slow or fast clock selection
screamer 0:e4d670b91a9a 391 * 0: slow, 1: fast
screamer 0:e4d670b91a9a 392 *
screamer 0:e4d670b91a9a 393 * @return value MCGCLKOUT frequency (Hz) or error code
screamer 0:e4d670b91a9a 394 *END***********************************************************************************/
screamer 0:e4d670b91a9a 395 uint32_t CLOCK_HAL_SetFbeToFbiMode(uint32_t baseAddr, uint32_t ircFreq,
screamer 0:e4d670b91a9a 396 mcg_internal_ref_clock_select_t ircSelect);
screamer 0:e4d670b91a9a 397
screamer 0:e4d670b91a9a 398 /*!
screamer 0:e4d670b91a9a 399 * @brief Mode transition FBE to PBE mode
screamer 0:e4d670b91a9a 400 *
screamer 0:e4d670b91a9a 401 * This function transitions the MCG from FBE mode to PBE mode.
screamer 0:e4d670b91a9a 402 * The function requires the desired OSC and PLL be passed in to it for compatibility
screamer 0:e4d670b91a9a 403 * with the future support of OSC/PLL selection
screamer 0:e4d670b91a9a 404 * (This function presently only supports OSC0 as PLL source)
screamer 0:e4d670b91a9a 405 *
screamer 0:e4d670b91a9a 406 * @param baseAddr Base address for current MCG instance.
screamer 0:e4d670b91a9a 407 * @param crystalVal - external clock frequency in Hz
screamer 0:e4d670b91a9a 408 * @param pllcsSelect - 0 to select PLL0, non-zero to select PLL1.
screamer 0:e4d670b91a9a 409 * @param prdivVal - value to divide the external clock source by to create
screamer 0:e4d670b91a9a 410 * the desired PLL reference clock frequency
screamer 0:e4d670b91a9a 411 * @param vdivVal - value to multiply the PLL reference clock frequency by
screamer 0:e4d670b91a9a 412 *
screamer 0:e4d670b91a9a 413 * @return value MCGCLKOUT frequency (Hz) or error code
screamer 0:e4d670b91a9a 414 */
screamer 0:e4d670b91a9a 415 uint32_t CLOCK_HAL_SetFbeToPbeMode(uint32_t baseAddr, uint32_t crystalVal,
screamer 0:e4d670b91a9a 416 mcg_pll_clk_select_t pllcsSelect,
screamer 0:e4d670b91a9a 417 uint8_t prdivVal, uint8_t vdivVal);
screamer 0:e4d670b91a9a 418
screamer 0:e4d670b91a9a 419 /*!
screamer 0:e4d670b91a9a 420 * @brief Mode transition FBE to BLPE mode
screamer 0:e4d670b91a9a 421 *
screamer 0:e4d670b91a9a 422 * This function transitions the MCG from FBE mode to BLPE mode.
screamer 0:e4d670b91a9a 423 *
screamer 0:e4d670b91a9a 424 * @param baseAddr Base address for current MCG instance.
screamer 0:e4d670b91a9a 425 * @param crystalVal - external clock frequency in Hz
screamer 0:e4d670b91a9a 426 *
screamer 0:e4d670b91a9a 427 * @return value MCGCLKOUT frequency (Hz) or error code
screamer 0:e4d670b91a9a 428 */
screamer 0:e4d670b91a9a 429 uint32_t CLOCK_HAL_SetFbeToBlpeMode(uint32_t baseAddr, uint32_t crystalVal);
screamer 0:e4d670b91a9a 430
screamer 0:e4d670b91a9a 431 /*!
screamer 0:e4d670b91a9a 432 * @brief Mode transition PBE to FBE mode
screamer 0:e4d670b91a9a 433 *
screamer 0:e4d670b91a9a 434 * This function transitions the MCG from PBE mode to FBE mode.
screamer 0:e4d670b91a9a 435 *
screamer 0:e4d670b91a9a 436 * @param baseAddr Base address for current MCG instance.
screamer 0:e4d670b91a9a 437 * @param crystalVal - external clock frequency in Hz
screamer 0:e4d670b91a9a 438 *
screamer 0:e4d670b91a9a 439 * @return value MCGCLKOUT frequency (Hz) or error code
screamer 0:e4d670b91a9a 440 */
screamer 0:e4d670b91a9a 441 uint32_t CLOCK_HAL_SetPbeToFbeMode(uint32_t baseAddr, uint32_t crystalVal);
screamer 0:e4d670b91a9a 442
screamer 0:e4d670b91a9a 443 /*!
screamer 0:e4d670b91a9a 444 * @brief Mode transition PBE to PEE mode
screamer 0:e4d670b91a9a 445 *
screamer 0:e4d670b91a9a 446 * This function transitions the MCG from PBE mode to PEE mode.
screamer 0:e4d670b91a9a 447 *
screamer 0:e4d670b91a9a 448 * @param baseAddr Base address for current MCG instance.
screamer 0:e4d670b91a9a 449 * @param crystalVal - external clock frequency in Hz
screamer 0:e4d670b91a9a 450 * @param pllcsSelect - PLLCS select setting
screamer 0:e4d670b91a9a 451 * mcg_pll_clk_select_t is defined in fsl_mcg_hal.h
screamer 0:e4d670b91a9a 452 * 0: kMcgPllcsSelectPll0 PLL0 output clock is selected
screamer 0:e4d670b91a9a 453 * 1: kMcgPllcsSelectPll1 PLL1 output clock is selected
screamer 0:e4d670b91a9a 454 *
screamer 0:e4d670b91a9a 455 * @return value MCGCLKOUT frequency (Hz) or error code
screamer 0:e4d670b91a9a 456 */
screamer 0:e4d670b91a9a 457 uint32_t CLOCK_HAL_SetPbeToPeeMode(uint32_t baseAddr, uint32_t crystalVal,
screamer 0:e4d670b91a9a 458 mcg_pll_clk_select_t pllcsSelect);
screamer 0:e4d670b91a9a 459
screamer 0:e4d670b91a9a 460 /*!
screamer 0:e4d670b91a9a 461 * @brief Mode transition PBE to BLPE mode
screamer 0:e4d670b91a9a 462 *
screamer 0:e4d670b91a9a 463 * This function transitions the MCG from PBE mode to BLPE mode.
screamer 0:e4d670b91a9a 464 *
screamer 0:e4d670b91a9a 465 * @param baseAddr Base address for current MCG instance.
screamer 0:e4d670b91a9a 466 * @param crystalVal - external clock frequency in Hz
screamer 0:e4d670b91a9a 467 *
screamer 0:e4d670b91a9a 468 * @return value MCGCLKOUT frequency (Hz) or error code
screamer 0:e4d670b91a9a 469 */
screamer 0:e4d670b91a9a 470 uint32_t CLOCK_HAL_SetPbeToBlpeMode(uint32_t baseAddr, uint32_t crystalVal);
screamer 0:e4d670b91a9a 471
screamer 0:e4d670b91a9a 472 /*!
screamer 0:e4d670b91a9a 473 * @brief Mode transition PEE to PBE mode
screamer 0:e4d670b91a9a 474 *
screamer 0:e4d670b91a9a 475 * This function transitions the MCG from PEE mode to PBE mode.
screamer 0:e4d670b91a9a 476 *
screamer 0:e4d670b91a9a 477 * @param baseAddr Base address for current MCG instance.
screamer 0:e4d670b91a9a 478 * @param crystalVal - external clock frequency in Hz
screamer 0:e4d670b91a9a 479 *
screamer 0:e4d670b91a9a 480 * @return value MCGCLKOUT frequency (Hz) or error code
screamer 0:e4d670b91a9a 481 */
screamer 0:e4d670b91a9a 482 uint32_t CLOCK_HAL_SetPeeToPbeMode(uint32_t baseAddr, uint32_t crystalVal);
screamer 0:e4d670b91a9a 483
screamer 0:e4d670b91a9a 484 /*!
screamer 0:e4d670b91a9a 485 * @brief Mode transition BLPE to PBE mode
screamer 0:e4d670b91a9a 486 *
screamer 0:e4d670b91a9a 487 * This function transitions the MCG from BLPE mode to PBE mode.
screamer 0:e4d670b91a9a 488 * The function requires the desired OSC and PLL be passed in to it for compatibility
screamer 0:e4d670b91a9a 489 * with the future support of OSC/PLL selection
screamer 0:e4d670b91a9a 490 * (This function presently only supports OSC0 as PLL source)
screamer 0:e4d670b91a9a 491 *
screamer 0:e4d670b91a9a 492 * @param baseAddr Base address for current MCG instance.
screamer 0:e4d670b91a9a 493 * @param crystalVal - external clock frequency in Hz
screamer 0:e4d670b91a9a 494 * @param pllcsSelect - 0 to select PLL0, non-zero to select PLL1.
screamer 0:e4d670b91a9a 495 * @param prdivVal - value to divide the external clock source by to create
screamer 0:e4d670b91a9a 496 * the desired PLL reference clock frequency
screamer 0:e4d670b91a9a 497 * @param vdivVal - value to multiply the PLL reference clock frequency by
screamer 0:e4d670b91a9a 498 *
screamer 0:e4d670b91a9a 499 * @return value MCGCLKOUT frequency (Hz) or error code
screamer 0:e4d670b91a9a 500 */
screamer 0:e4d670b91a9a 501 uint32_t CLOCK_HAL_SetBlpeToPbeMode(uint32_t baseAddr, uint32_t crystalVal,
screamer 0:e4d670b91a9a 502 mcg_pll_clk_select_t pllcsSelect,
screamer 0:e4d670b91a9a 503 uint8_t prdivVal, uint8_t vdivVal);
screamer 0:e4d670b91a9a 504
screamer 0:e4d670b91a9a 505 /*!
screamer 0:e4d670b91a9a 506 * @brief Mode transition BLPE to FBE mode
screamer 0:e4d670b91a9a 507 *
screamer 0:e4d670b91a9a 508 * This function transitions the MCG from BLPE mode to FBE mode.
screamer 0:e4d670b91a9a 509 *
screamer 0:e4d670b91a9a 510 * @param baseAddr Base address for current MCG instance.
screamer 0:e4d670b91a9a 511 * @param crystalVal - external reference clock frequency value
screamer 0:e4d670b91a9a 512 *
screamer 0:e4d670b91a9a 513 * @return value MCGCLKOUT frequency (Hz) or error code
screamer 0:e4d670b91a9a 514 */
screamer 0:e4d670b91a9a 515 uint32_t CLOCK_HAL_SetBlpeToFbeMode(uint32_t baseAddr, uint32_t crystalVal);
screamer 0:e4d670b91a9a 516
screamer 0:e4d670b91a9a 517 #if defined(__cplusplus)
screamer 0:e4d670b91a9a 518 }
screamer 0:e4d670b91a9a 519 #endif // __cplusplus
screamer 0:e4d670b91a9a 520
screamer 0:e4d670b91a9a 521 //! @}
screamer 0:e4d670b91a9a 522
screamer 0:e4d670b91a9a 523 #endif // __FSL_MCG_HAL_MODES_H__
screamer 0:e4d670b91a9a 524 ////////////////////////////////////////////////////////////////////////////////
screamer 0:e4d670b91a9a 525 // EOF
screamer 0:e4d670b91a9a 526 ////////////////////////////////////////////////////////////////////////////////