Morpheus / target-mcu-k64f

Fork of target-mcu-k64f by -deleted-

Committer:
screamer
Date:
Wed Mar 23 21:24:48 2016 +0000
Revision:
0:c5e2f793b59a
Initial revision

Who changed what in which revision?

UserRevisionLine numberNew contents of line
screamer 0:c5e2f793b59a 1 /*
screamer 0:c5e2f793b59a 2 * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc.
screamer 0:c5e2f793b59a 3 * All rights reserved.
screamer 0:c5e2f793b59a 4 *
screamer 0:c5e2f793b59a 5 * Redistribution and use in source and binary forms, with or without modification,
screamer 0:c5e2f793b59a 6 * are permitted provided that the following conditions are met:
screamer 0:c5e2f793b59a 7 *
screamer 0:c5e2f793b59a 8 * o Redistributions of source code must retain the above copyright notice, this list
screamer 0:c5e2f793b59a 9 * of conditions and the following disclaimer.
screamer 0:c5e2f793b59a 10 *
screamer 0:c5e2f793b59a 11 * o Redistributions in binary form must reproduce the above copyright notice, this
screamer 0:c5e2f793b59a 12 * list of conditions and the following disclaimer in the documentation and/or
screamer 0:c5e2f793b59a 13 * other materials provided with the distribution.
screamer 0:c5e2f793b59a 14 *
screamer 0:c5e2f793b59a 15 * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
screamer 0:c5e2f793b59a 16 * contributors may be used to endorse or promote products derived from this
screamer 0:c5e2f793b59a 17 * software without specific prior written permission.
screamer 0:c5e2f793b59a 18 *
screamer 0:c5e2f793b59a 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
screamer 0:c5e2f793b59a 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
screamer 0:c5e2f793b59a 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
screamer 0:c5e2f793b59a 22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
screamer 0:c5e2f793b59a 23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
screamer 0:c5e2f793b59a 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
screamer 0:c5e2f793b59a 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
screamer 0:c5e2f793b59a 26 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
screamer 0:c5e2f793b59a 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
screamer 0:c5e2f793b59a 28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
screamer 0:c5e2f793b59a 29 */
screamer 0:c5e2f793b59a 30
screamer 0:c5e2f793b59a 31 #include <stdint.h>
screamer 0:c5e2f793b59a 32 #include <stdlib.h>
screamer 0:c5e2f793b59a 33 #include <stdbool.h>
screamer 0:c5e2f793b59a 34 #include "fsl_device_registers.h"
screamer 0:c5e2f793b59a 35 #include "fsl_sim_hal.h"
screamer 0:c5e2f793b59a 36 #include "fsl_clock_manager.h"
screamer 0:c5e2f793b59a 37
screamer 0:c5e2f793b59a 38 /*******************************************************************************
screamer 0:c5e2f793b59a 39 * Definitions
screamer 0:c5e2f793b59a 40 ******************************************************************************/
screamer 0:c5e2f793b59a 41
screamer 0:c5e2f793b59a 42 /* Table of base addresses for instances. */
screamer 0:c5e2f793b59a 43 extern const uint32_t g_simBaseAddr[];
screamer 0:c5e2f793b59a 44 extern const uint32_t g_mcgBaseAddr[];
screamer 0:c5e2f793b59a 45
screamer 0:c5e2f793b59a 46 /*******************************************************************************
screamer 0:c5e2f793b59a 47 * Code
screamer 0:c5e2f793b59a 48 ******************************************************************************/
screamer 0:c5e2f793b59a 49
screamer 0:c5e2f793b59a 50 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 51 *
screamer 0:c5e2f793b59a 52 * Function Name : CLOCK_SYS_GetDmaFreq
screamer 0:c5e2f793b59a 53 * Description : Gets the clock frequency for DMA module
screamer 0:c5e2f793b59a 54 * This function gets the clock frequency for DMA moudle.
screamer 0:c5e2f793b59a 55 *
screamer 0:c5e2f793b59a 56 *END**************************************************************************/
screamer 0:c5e2f793b59a 57 uint32_t CLOCK_SYS_GetDmaFreq(uint32_t instance)
screamer 0:c5e2f793b59a 58 {
screamer 0:c5e2f793b59a 59 uint32_t freq = 0;
screamer 0:c5e2f793b59a 60 CLOCK_SYS_GetFreq(kSystemClock, &freq);
screamer 0:c5e2f793b59a 61 return freq;
screamer 0:c5e2f793b59a 62 }
screamer 0:c5e2f793b59a 63
screamer 0:c5e2f793b59a 64 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 65 *
screamer 0:c5e2f793b59a 66 * Function Name : CLOCK_SYS_GetDmamuxFreq
screamer 0:c5e2f793b59a 67 * Description : Gets the clock frequency for DMAMUX module
screamer 0:c5e2f793b59a 68 * This function gets the clock frequency for DMAMUX moudle.
screamer 0:c5e2f793b59a 69 *
screamer 0:c5e2f793b59a 70 *END**************************************************************************/
screamer 0:c5e2f793b59a 71 uint32_t CLOCK_SYS_GetDmamuxFreq(uint32_t instance)
screamer 0:c5e2f793b59a 72 {
screamer 0:c5e2f793b59a 73 uint32_t freq = 0;
screamer 0:c5e2f793b59a 74 CLOCK_SYS_GetFreq(kBusClock, &freq);
screamer 0:c5e2f793b59a 75 return freq;
screamer 0:c5e2f793b59a 76 }
screamer 0:c5e2f793b59a 77
screamer 0:c5e2f793b59a 78 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 79 *
screamer 0:c5e2f793b59a 80 * Function Name : CLOCK_SYS_GetPortFreq
screamer 0:c5e2f793b59a 81 * Description : Gets the clock frequency for PORT module
screamer 0:c5e2f793b59a 82 * This function gets the clock frequency for PORT moudle.
screamer 0:c5e2f793b59a 83 *
screamer 0:c5e2f793b59a 84 *END**************************************************************************/
screamer 0:c5e2f793b59a 85 uint32_t CLOCK_SYS_GetPortFreq(uint32_t instance)
screamer 0:c5e2f793b59a 86 {
screamer 0:c5e2f793b59a 87 uint32_t freq = 0;
screamer 0:c5e2f793b59a 88 CLOCK_SYS_GetFreq(kLpoClock, &freq);
screamer 0:c5e2f793b59a 89 return freq;
screamer 0:c5e2f793b59a 90 }
screamer 0:c5e2f793b59a 91
screamer 0:c5e2f793b59a 92 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 93 *
screamer 0:c5e2f793b59a 94 * Function Name : CLOCK_SYS_GetMpuFreq
screamer 0:c5e2f793b59a 95 * Description : Gets the clock frequency for MPU module
screamer 0:c5e2f793b59a 96 * This function gets the clock frequency for MPU moudle.
screamer 0:c5e2f793b59a 97 *
screamer 0:c5e2f793b59a 98 *END**************************************************************************/
screamer 0:c5e2f793b59a 99 uint32_t CLOCK_SYS_GetMpuFreq(uint32_t instance)
screamer 0:c5e2f793b59a 100 {
screamer 0:c5e2f793b59a 101 uint32_t freq = 0;
screamer 0:c5e2f793b59a 102 CLOCK_SYS_GetFreq(kSystemClock, &freq);
screamer 0:c5e2f793b59a 103 return freq;
screamer 0:c5e2f793b59a 104 }
screamer 0:c5e2f793b59a 105
screamer 0:c5e2f793b59a 106 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 107 *
screamer 0:c5e2f793b59a 108 * Function Name : CLOCK_SYS_GetEwmFreq
screamer 0:c5e2f793b59a 109 * Description : Gets the clock frequency for Ewm module
screamer 0:c5e2f793b59a 110 * This function gets the clock frequency for Ewm moudle.
screamer 0:c5e2f793b59a 111 *
screamer 0:c5e2f793b59a 112 *END**************************************************************************/
screamer 0:c5e2f793b59a 113 uint32_t CLOCK_SYS_GetEwmFreq(uint32_t instance)
screamer 0:c5e2f793b59a 114 {
screamer 0:c5e2f793b59a 115 uint32_t freq = 0;
screamer 0:c5e2f793b59a 116 CLOCK_SYS_GetFreq(kLpoClock, &freq);
screamer 0:c5e2f793b59a 117 return freq;
screamer 0:c5e2f793b59a 118 }
screamer 0:c5e2f793b59a 119
screamer 0:c5e2f793b59a 120 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 121 *
screamer 0:c5e2f793b59a 122 * Function Name : CLOCK_SYS_GetFlexbusFreq
screamer 0:c5e2f793b59a 123 * Description : Gets the clock frequency for FLEXBUS module
screamer 0:c5e2f793b59a 124 * This function gets the clock frequency for FLEXBUS moudle.
screamer 0:c5e2f793b59a 125 *
screamer 0:c5e2f793b59a 126 *END**************************************************************************/
screamer 0:c5e2f793b59a 127 uint32_t CLOCK_SYS_GetFlexbusFreq(uint32_t instance)
screamer 0:c5e2f793b59a 128 {
screamer 0:c5e2f793b59a 129 uint32_t freq = 0;
screamer 0:c5e2f793b59a 130 CLOCK_SYS_GetFreq(kSystemClock, &freq);
screamer 0:c5e2f793b59a 131 return freq;
screamer 0:c5e2f793b59a 132 }
screamer 0:c5e2f793b59a 133
screamer 0:c5e2f793b59a 134 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 135 *
screamer 0:c5e2f793b59a 136 * Function Name : CLOCK_SYS_GetFtfFreq
screamer 0:c5e2f793b59a 137 * Description : Gets the clock frequency for FTF module. (Flash Memory)
screamer 0:c5e2f793b59a 138 * This function gets the clock frequency for FTF moudle.
screamer 0:c5e2f793b59a 139 *
screamer 0:c5e2f793b59a 140 *END**************************************************************************/
screamer 0:c5e2f793b59a 141 uint32_t CLOCK_SYS_GetFtfFreq(uint32_t instance)
screamer 0:c5e2f793b59a 142 {
screamer 0:c5e2f793b59a 143 uint32_t freq = 0;
screamer 0:c5e2f793b59a 144 CLOCK_SYS_GetFreq(kFlashClock, &freq);
screamer 0:c5e2f793b59a 145 return freq;
screamer 0:c5e2f793b59a 146 }
screamer 0:c5e2f793b59a 147
screamer 0:c5e2f793b59a 148 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 149 *
screamer 0:c5e2f793b59a 150 * Function Name : CLOCK_SYS_GetCrcFreq
screamer 0:c5e2f793b59a 151 * Description : Gets the clock frequency for CRC module
screamer 0:c5e2f793b59a 152 * This function gets the clock frequency for CRC moudle.
screamer 0:c5e2f793b59a 153 *
screamer 0:c5e2f793b59a 154 *END**************************************************************************/
screamer 0:c5e2f793b59a 155 uint32_t CLOCK_SYS_GetCrcFreq(uint32_t instance)
screamer 0:c5e2f793b59a 156 {
screamer 0:c5e2f793b59a 157 uint32_t freq = 0;
screamer 0:c5e2f793b59a 158 CLOCK_SYS_GetFreq(kBusClock, &freq);
screamer 0:c5e2f793b59a 159 return freq;
screamer 0:c5e2f793b59a 160 }
screamer 0:c5e2f793b59a 161
screamer 0:c5e2f793b59a 162 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 163 *
screamer 0:c5e2f793b59a 164 * Function Name : CLOCK_SYS_GetRngaFreq
screamer 0:c5e2f793b59a 165 * Description : Gets the clock frequency for RNGA module
screamer 0:c5e2f793b59a 166 * This function gets the clock frequency for RNGA moudle.
screamer 0:c5e2f793b59a 167 *
screamer 0:c5e2f793b59a 168 *END**************************************************************************/
screamer 0:c5e2f793b59a 169 uint32_t CLOCK_SYS_GetRngaFreq(uint32_t instance)
screamer 0:c5e2f793b59a 170 {
screamer 0:c5e2f793b59a 171 uint32_t freq = 0;
screamer 0:c5e2f793b59a 172 CLOCK_SYS_GetFreq(kBusClock, &freq);
screamer 0:c5e2f793b59a 173 return freq;
screamer 0:c5e2f793b59a 174 }
screamer 0:c5e2f793b59a 175
screamer 0:c5e2f793b59a 176 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 177 *
screamer 0:c5e2f793b59a 178 * Function Name : CLOCK_SYS_GetAdcFreq
screamer 0:c5e2f793b59a 179 * Description : Gets the clock frequency for ADC module
screamer 0:c5e2f793b59a 180 * This function gets the clock frequency for ADC moudle.
screamer 0:c5e2f793b59a 181 *
screamer 0:c5e2f793b59a 182 *END**************************************************************************/
screamer 0:c5e2f793b59a 183 uint32_t CLOCK_SYS_GetAdcFreq(uint32_t instance)
screamer 0:c5e2f793b59a 184 {
screamer 0:c5e2f793b59a 185 uint32_t freq = 0;
screamer 0:c5e2f793b59a 186 CLOCK_SYS_GetFreq(kOsc0ErClock, &freq);
screamer 0:c5e2f793b59a 187 return freq;
screamer 0:c5e2f793b59a 188 }
screamer 0:c5e2f793b59a 189
screamer 0:c5e2f793b59a 190 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 191 *
screamer 0:c5e2f793b59a 192 * Function Name : CLOCK_SYS_GetCmpFreq
screamer 0:c5e2f793b59a 193 * Description : Gets the clock frequency for CMP module
screamer 0:c5e2f793b59a 194 * This function gets the clock frequency for CMP moudle.
screamer 0:c5e2f793b59a 195 *
screamer 0:c5e2f793b59a 196 *END**************************************************************************/
screamer 0:c5e2f793b59a 197 uint32_t CLOCK_SYS_GetCmpFreq(uint32_t instance)
screamer 0:c5e2f793b59a 198 {
screamer 0:c5e2f793b59a 199 uint32_t freq = 0;
screamer 0:c5e2f793b59a 200 CLOCK_SYS_GetFreq(kBusClock, &freq);
screamer 0:c5e2f793b59a 201 return freq;
screamer 0:c5e2f793b59a 202 }
screamer 0:c5e2f793b59a 203
screamer 0:c5e2f793b59a 204 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 205 *
screamer 0:c5e2f793b59a 206 * Function Name : CLOCK_SYS_GetVrefFreq
screamer 0:c5e2f793b59a 207 * Description : Gets the clock frequency for VREF module
screamer 0:c5e2f793b59a 208 * This function gets the clock frequency for VREF moudle.
screamer 0:c5e2f793b59a 209 *
screamer 0:c5e2f793b59a 210 *END**************************************************************************/
screamer 0:c5e2f793b59a 211 uint32_t CLOCK_SYS_GetVrefFreq(uint32_t instance)
screamer 0:c5e2f793b59a 212 {
screamer 0:c5e2f793b59a 213 uint32_t freq = 0;
screamer 0:c5e2f793b59a 214 CLOCK_SYS_GetFreq(kBusClock, &freq);
screamer 0:c5e2f793b59a 215 return freq;
screamer 0:c5e2f793b59a 216 }
screamer 0:c5e2f793b59a 217
screamer 0:c5e2f793b59a 218 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 219 *
screamer 0:c5e2f793b59a 220 * Function Name : CLOCK_SYS_GetPdbFreq
screamer 0:c5e2f793b59a 221 * Description : Gets the clock frequency for PDB module
screamer 0:c5e2f793b59a 222 * This function gets the clock frequency for PDB moudle.
screamer 0:c5e2f793b59a 223 *
screamer 0:c5e2f793b59a 224 *END**************************************************************************/
screamer 0:c5e2f793b59a 225 uint32_t CLOCK_SYS_GetPdbFreq(uint32_t instance)
screamer 0:c5e2f793b59a 226 {
screamer 0:c5e2f793b59a 227 uint32_t freq = 0;
screamer 0:c5e2f793b59a 228 CLOCK_SYS_GetFreq(kBusClock, &freq);
screamer 0:c5e2f793b59a 229 return freq;
screamer 0:c5e2f793b59a 230 }
screamer 0:c5e2f793b59a 231
screamer 0:c5e2f793b59a 232 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 233 *
screamer 0:c5e2f793b59a 234 * Function Name : CLOCK_SYS_GetFtmFreq
screamer 0:c5e2f793b59a 235 * Description : Gets the clock frequency for FTM module. (FlexTimers)
screamer 0:c5e2f793b59a 236 * This function gets the clock frequency for FTM moudle.
screamer 0:c5e2f793b59a 237 *
screamer 0:c5e2f793b59a 238 *END**************************************************************************/
screamer 0:c5e2f793b59a 239 uint32_t CLOCK_SYS_GetFtmFreq(uint32_t instance)
screamer 0:c5e2f793b59a 240 {
screamer 0:c5e2f793b59a 241 uint32_t freq = 0;
screamer 0:c5e2f793b59a 242 CLOCK_SYS_GetFreq(kMcgFfClock, &freq);
screamer 0:c5e2f793b59a 243 return freq;
screamer 0:c5e2f793b59a 244 }
screamer 0:c5e2f793b59a 245
screamer 0:c5e2f793b59a 246 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 247 *
screamer 0:c5e2f793b59a 248 * Function Name : CLOCK_SYS_GetPitFreq
screamer 0:c5e2f793b59a 249 * Description : Gets the clock frequency for Pit module.
screamer 0:c5e2f793b59a 250 * This function gets the clock frequency for Pit moudle.
screamer 0:c5e2f793b59a 251 *
screamer 0:c5e2f793b59a 252 *END**************************************************************************/
screamer 0:c5e2f793b59a 253 uint32_t CLOCK_SYS_GetPitFreq(uint32_t instance)
screamer 0:c5e2f793b59a 254 {
screamer 0:c5e2f793b59a 255 uint32_t freq = 0;
screamer 0:c5e2f793b59a 256 CLOCK_SYS_GetFreq(kBusClock, &freq);
screamer 0:c5e2f793b59a 257 return freq;
screamer 0:c5e2f793b59a 258 }
screamer 0:c5e2f793b59a 259
screamer 0:c5e2f793b59a 260 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 261 *
screamer 0:c5e2f793b59a 262 * Function Name : CLOCK_SYS_GetCmtFreq
screamer 0:c5e2f793b59a 263 * Description : Gets the clock frequency for CMT module.
screamer 0:c5e2f793b59a 264 * This function gets the clock frequency for CMT moudle.
screamer 0:c5e2f793b59a 265 *
screamer 0:c5e2f793b59a 266 *END**************************************************************************/
screamer 0:c5e2f793b59a 267 uint32_t CLOCK_SYS_GetCmtFreq(uint32_t instance)
screamer 0:c5e2f793b59a 268 {
screamer 0:c5e2f793b59a 269 uint32_t freq = 0;
screamer 0:c5e2f793b59a 270 CLOCK_SYS_GetFreq(kBusClock, &freq);
screamer 0:c5e2f793b59a 271 return freq;
screamer 0:c5e2f793b59a 272 }
screamer 0:c5e2f793b59a 273
screamer 0:c5e2f793b59a 274 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 275 *
screamer 0:c5e2f793b59a 276 * Function Name : CLOCK_SYS_GetEnetRmiiFreq
screamer 0:c5e2f793b59a 277 * Description : Gets the clock frequency for ENET module RMII clock.
screamer 0:c5e2f793b59a 278 * This function gets the clock frequency for ENET moudle RMII clock.
screamer 0:c5e2f793b59a 279 *
screamer 0:c5e2f793b59a 280 *END**************************************************************************/
screamer 0:c5e2f793b59a 281 uint32_t CLOCK_SYS_GetEnetRmiiFreq(uint32_t instance)
screamer 0:c5e2f793b59a 282 {
screamer 0:c5e2f793b59a 283 uint32_t freq = 0;
screamer 0:c5e2f793b59a 284 uint8_t setting;
screamer 0:c5e2f793b59a 285 clock_names_t clockName;
screamer 0:c5e2f793b59a 286 /* get the sim clock source setting*/
screamer 0:c5e2f793b59a 287 if (CLOCK_HAL_GetSource(g_simBaseAddr[0], kClockRmiiSrc, &setting) != kSimHalSuccess)
screamer 0:c5e2f793b59a 288 {
screamer 0:c5e2f793b59a 289 return freq;
screamer 0:c5e2f793b59a 290 }
screamer 0:c5e2f793b59a 291
screamer 0:c5e2f793b59a 292 if ((sim_rmii_clock_source_t)setting == kSimRmiiSrcExtalClk)
screamer 0:c5e2f793b59a 293 {
screamer 0:c5e2f793b59a 294 clockName = kEXTAL_Clock;
screamer 0:c5e2f793b59a 295 }
screamer 0:c5e2f793b59a 296 else
screamer 0:c5e2f793b59a 297 {
screamer 0:c5e2f793b59a 298 clockName = kENET_1588_CLKIN;
screamer 0:c5e2f793b59a 299 }
screamer 0:c5e2f793b59a 300
screamer 0:c5e2f793b59a 301 CLOCK_SYS_GetFreq(clockName, &freq);
screamer 0:c5e2f793b59a 302 return freq;
screamer 0:c5e2f793b59a 303 }
screamer 0:c5e2f793b59a 304
screamer 0:c5e2f793b59a 305 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 306 *
screamer 0:c5e2f793b59a 307 * Function Name : CLOCK_SYS_GetEnetTimeStampFreq
screamer 0:c5e2f793b59a 308 * Description : Gets the clock frequency for ENET module TIME clock.
screamer 0:c5e2f793b59a 309 * This function gets the clock frequency for ENET moudle TIME clock.
screamer 0:c5e2f793b59a 310 *
screamer 0:c5e2f793b59a 311 *END**************************************************************************/
screamer 0:c5e2f793b59a 312 uint32_t CLOCK_SYS_GetEnetTimeStampFreq(uint32_t instance)
screamer 0:c5e2f793b59a 313 {
screamer 0:c5e2f793b59a 314 uint32_t freq = 0;
screamer 0:c5e2f793b59a 315 uint8_t setting;
screamer 0:c5e2f793b59a 316 clock_names_t clockName;
screamer 0:c5e2f793b59a 317
screamer 0:c5e2f793b59a 318 /* get the sim clock source setting*/
screamer 0:c5e2f793b59a 319 if (CLOCK_HAL_GetSource(g_simBaseAddr[0], kClockTimeSrc, &setting) != kSimHalSuccess)
screamer 0:c5e2f793b59a 320 {
screamer 0:c5e2f793b59a 321 return freq;
screamer 0:c5e2f793b59a 322 }
screamer 0:c5e2f793b59a 323
screamer 0:c5e2f793b59a 324 switch ((sim_time_clock_source_t)setting)
screamer 0:c5e2f793b59a 325 {
screamer 0:c5e2f793b59a 326 case kSimTimeSrcCoreSysClk: /* Core/system clock */
screamer 0:c5e2f793b59a 327 clockName = kCoreClock;
screamer 0:c5e2f793b59a 328 break;
screamer 0:c5e2f793b59a 329 case kSimTimeSrcPllFllSel: /* clock as selected by SOPT2[PLLFLLSEL]. */
screamer 0:c5e2f793b59a 330 /* get the sim clock source setting*/
screamer 0:c5e2f793b59a 331 if (CLOCK_HAL_GetSource(g_simBaseAddr[0], kClockPllfllSel, &setting) != kSimHalSuccess)
screamer 0:c5e2f793b59a 332 {
screamer 0:c5e2f793b59a 333 return freq;
screamer 0:c5e2f793b59a 334 }
screamer 0:c5e2f793b59a 335
screamer 0:c5e2f793b59a 336 switch ((sim_pllfll_clock_sel_t)setting)
screamer 0:c5e2f793b59a 337 {
screamer 0:c5e2f793b59a 338 case kSimPllFllSelFll: /* Fll clock */
screamer 0:c5e2f793b59a 339 clockName = kMcgFllClock;
screamer 0:c5e2f793b59a 340 break;
screamer 0:c5e2f793b59a 341 case kSimPllFllSelPll: /* Pll0 clock */
screamer 0:c5e2f793b59a 342 clockName = kMcgPll0Clock;
screamer 0:c5e2f793b59a 343 break;
screamer 0:c5e2f793b59a 344 default:
screamer 0:c5e2f793b59a 345 clockName = kReserved;
screamer 0:c5e2f793b59a 346 break;
screamer 0:c5e2f793b59a 347 }
screamer 0:c5e2f793b59a 348 break;
screamer 0:c5e2f793b59a 349 case kSimTimeSrcOscerclk: /* OSCERCLK clock */
screamer 0:c5e2f793b59a 350 clockName = kOsc0ErClock;
screamer 0:c5e2f793b59a 351 break;
screamer 0:c5e2f793b59a 352 case kSimTimeSrcExt: /* Enet 1588 clock */
screamer 0:c5e2f793b59a 353 clockName = kENET_1588_CLKIN;
screamer 0:c5e2f793b59a 354 break;
screamer 0:c5e2f793b59a 355 default:
screamer 0:c5e2f793b59a 356 clockName = kReserved;
screamer 0:c5e2f793b59a 357 break;
screamer 0:c5e2f793b59a 358 }
screamer 0:c5e2f793b59a 359
screamer 0:c5e2f793b59a 360 /* Get ref clock freq */
screamer 0:c5e2f793b59a 361 CLOCK_SYS_GetFreq(clockName, &freq);
screamer 0:c5e2f793b59a 362 return freq;
screamer 0:c5e2f793b59a 363 }
screamer 0:c5e2f793b59a 364
screamer 0:c5e2f793b59a 365 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 366 *
screamer 0:c5e2f793b59a 367 * Function Name : CLOCK_SYS_GetUsbFreq
screamer 0:c5e2f793b59a 368 * Description : Gets the clock frequency for USB FS OTG module.
screamer 0:c5e2f793b59a 369 * This function gets the clock frequency for USB FS OTG moudle.
screamer 0:c5e2f793b59a 370 *
screamer 0:c5e2f793b59a 371 *END**************************************************************************/
screamer 0:c5e2f793b59a 372 uint32_t CLOCK_SYS_GetUsbFreq(uint32_t instance)
screamer 0:c5e2f793b59a 373 {
screamer 0:c5e2f793b59a 374 uint32_t freq = 0;
screamer 0:c5e2f793b59a 375 uint8_t setting;
screamer 0:c5e2f793b59a 376 clock_names_t clockName;
screamer 0:c5e2f793b59a 377 uint32_t frac = 0;
screamer 0:c5e2f793b59a 378 uint32_t divider = 0;
screamer 0:c5e2f793b59a 379
screamer 0:c5e2f793b59a 380 /* get the sim clock source setting*/
screamer 0:c5e2f793b59a 381 if (CLOCK_HAL_GetSource(g_simBaseAddr[0], kClockUsbSrc, &setting) != kSimHalSuccess)
screamer 0:c5e2f793b59a 382 {
screamer 0:c5e2f793b59a 383 return freq;
screamer 0:c5e2f793b59a 384 }
screamer 0:c5e2f793b59a 385
screamer 0:c5e2f793b59a 386 switch ((sim_usb_clock_source_t)setting)
screamer 0:c5e2f793b59a 387 {
screamer 0:c5e2f793b59a 388 case kSimUsbSrcClkIn: /* Core/system clock */
screamer 0:c5e2f793b59a 389 clockName = kUSB_CLKIN;
screamer 0:c5e2f793b59a 390 break;
screamer 0:c5e2f793b59a 391 case kSimUsbSrcPllFllSel: /* clock as selected by SOPT2[PLLFLLSEL]. */
screamer 0:c5e2f793b59a 392 /* get the sim clock source setting*/
screamer 0:c5e2f793b59a 393 if (CLOCK_HAL_GetSource(g_simBaseAddr[0], kClockPllfllSel, &setting) != kSimHalSuccess)
screamer 0:c5e2f793b59a 394 {
screamer 0:c5e2f793b59a 395 return freq;
screamer 0:c5e2f793b59a 396 }
screamer 0:c5e2f793b59a 397
screamer 0:c5e2f793b59a 398 switch ((sim_pllfll_clock_sel_t)setting)
screamer 0:c5e2f793b59a 399 {
screamer 0:c5e2f793b59a 400 case kSimPllFllSelFll: /* Fll clock */
screamer 0:c5e2f793b59a 401 clockName = kMcgFllClock;
screamer 0:c5e2f793b59a 402 break;
screamer 0:c5e2f793b59a 403 case kSimPllFllSelPll: /* Pll0 clock */
screamer 0:c5e2f793b59a 404 clockName = kMcgPll0Clock;
screamer 0:c5e2f793b59a 405 break;
screamer 0:c5e2f793b59a 406 default:
screamer 0:c5e2f793b59a 407 clockName = kReserved;
screamer 0:c5e2f793b59a 408 break;
screamer 0:c5e2f793b59a 409 }
screamer 0:c5e2f793b59a 410 break;
screamer 0:c5e2f793b59a 411 default:
screamer 0:c5e2f793b59a 412 clockName = kReserved;
screamer 0:c5e2f793b59a 413 break;
screamer 0:c5e2f793b59a 414 }
screamer 0:c5e2f793b59a 415
screamer 0:c5e2f793b59a 416 /* Get ref clock freq */
screamer 0:c5e2f793b59a 417 CLOCK_SYS_GetFreq(clockName, &freq);
screamer 0:c5e2f793b59a 418
screamer 0:c5e2f793b59a 419 /* Get divider and frac */
screamer 0:c5e2f793b59a 420 CLOCK_HAL_GetDivider(g_simBaseAddr[0], kClockDividerUsbDiv, &divider);
screamer 0:c5e2f793b59a 421 CLOCK_HAL_GetDivider(g_simBaseAddr[0], kClockDividerUsbFrac, &frac);
screamer 0:c5e2f793b59a 422
screamer 0:c5e2f793b59a 423 /* Divider output clock = Divider input clock × [ (FRAC+1) / (DIV+1) ]*/
screamer 0:c5e2f793b59a 424 freq = (freq) * (frac + 1) / (divider + 1);
screamer 0:c5e2f793b59a 425
screamer 0:c5e2f793b59a 426 return freq;
screamer 0:c5e2f793b59a 427 }
screamer 0:c5e2f793b59a 428
screamer 0:c5e2f793b59a 429 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 430 *
screamer 0:c5e2f793b59a 431 * Function Name : CLOCK_SYS_GetUsbdcdFreq
screamer 0:c5e2f793b59a 432 * Description : Gets the clock frequency for USB DCD module.
screamer 0:c5e2f793b59a 433 * This function gets the clock frequency for USB DCD moudle.
screamer 0:c5e2f793b59a 434 *
screamer 0:c5e2f793b59a 435 *END**************************************************************************/
screamer 0:c5e2f793b59a 436 uint32_t CLOCK_SYS_GetUsbdcdFreq(uint32_t instance)
screamer 0:c5e2f793b59a 437 {
screamer 0:c5e2f793b59a 438 uint32_t freq = 0;
screamer 0:c5e2f793b59a 439 CLOCK_SYS_GetFreq(kBusClock, &freq);
screamer 0:c5e2f793b59a 440 return freq;
screamer 0:c5e2f793b59a 441 }
screamer 0:c5e2f793b59a 442
screamer 0:c5e2f793b59a 443 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 444 *
screamer 0:c5e2f793b59a 445 * Function Name : CLOCK_SYS_GetSpiFreq
screamer 0:c5e2f793b59a 446 * Description : Gets the clock frequency for SPI module.
screamer 0:c5e2f793b59a 447 * This function gets the clock frequency for SPI moudle.
screamer 0:c5e2f793b59a 448 *
screamer 0:c5e2f793b59a 449 *END**************************************************************************/
screamer 0:c5e2f793b59a 450 uint32_t CLOCK_SYS_GetSpiFreq(uint32_t instance)
screamer 0:c5e2f793b59a 451 {
screamer 0:c5e2f793b59a 452 uint32_t freq = 0;
screamer 0:c5e2f793b59a 453 CLOCK_SYS_GetFreq(kBusClock, &freq);
screamer 0:c5e2f793b59a 454 return freq;
screamer 0:c5e2f793b59a 455 }
screamer 0:c5e2f793b59a 456
screamer 0:c5e2f793b59a 457 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 458 *
screamer 0:c5e2f793b59a 459 * Function Name : CLOCK_SYS_GetI2cFreq
screamer 0:c5e2f793b59a 460 * Description : Gets the clock frequency for I2C module.
screamer 0:c5e2f793b59a 461 * This function gets the clock frequency for I2C moudle.
screamer 0:c5e2f793b59a 462 *
screamer 0:c5e2f793b59a 463 *END**************************************************************************/
screamer 0:c5e2f793b59a 464 uint32_t CLOCK_SYS_GetI2cFreq(uint32_t instance)
screamer 0:c5e2f793b59a 465 {
screamer 0:c5e2f793b59a 466 uint32_t freq = 0;
screamer 0:c5e2f793b59a 467 CLOCK_SYS_GetFreq(kBusClock, &freq);
screamer 0:c5e2f793b59a 468 return freq;
screamer 0:c5e2f793b59a 469 }
screamer 0:c5e2f793b59a 470
screamer 0:c5e2f793b59a 471 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 472 *
screamer 0:c5e2f793b59a 473 * Function Name : CLOCK_SYS_GetUartFreq
screamer 0:c5e2f793b59a 474 * Description : Gets the clock frequency for UART module.
screamer 0:c5e2f793b59a 475 * This function gets the clock frequency for UART moudle.
screamer 0:c5e2f793b59a 476 *
screamer 0:c5e2f793b59a 477 *END**************************************************************************/
screamer 0:c5e2f793b59a 478 uint32_t CLOCK_SYS_GetUartFreq(uint32_t instance)
screamer 0:c5e2f793b59a 479 {
screamer 0:c5e2f793b59a 480 uint32_t freq = 0;
screamer 0:c5e2f793b59a 481
screamer 0:c5e2f793b59a 482 switch (instance)
screamer 0:c5e2f793b59a 483 {
screamer 0:c5e2f793b59a 484 case 0:
screamer 0:c5e2f793b59a 485 case 1:
screamer 0:c5e2f793b59a 486 CLOCK_SYS_GetFreq(kSystemClock, &freq);
screamer 0:c5e2f793b59a 487 break;
screamer 0:c5e2f793b59a 488 case 2:
screamer 0:c5e2f793b59a 489 case 3:
screamer 0:c5e2f793b59a 490 case 4:
screamer 0:c5e2f793b59a 491 case 5:
screamer 0:c5e2f793b59a 492 CLOCK_SYS_GetFreq(kBusClock, &freq);
screamer 0:c5e2f793b59a 493 break;
screamer 0:c5e2f793b59a 494 default:
screamer 0:c5e2f793b59a 495 break;
screamer 0:c5e2f793b59a 496 }
screamer 0:c5e2f793b59a 497
screamer 0:c5e2f793b59a 498 return freq;
screamer 0:c5e2f793b59a 499 }
screamer 0:c5e2f793b59a 500
screamer 0:c5e2f793b59a 501 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 502 *
screamer 0:c5e2f793b59a 503 * Function Name : CLOCK_SYS_GetSdhcFreq
screamer 0:c5e2f793b59a 504 * Description : Gets the clock frequency for SDHC module
screamer 0:c5e2f793b59a 505 * This function gets the clock frequency for SDHC moudle
screamer 0:c5e2f793b59a 506 *
screamer 0:c5e2f793b59a 507 *END**************************************************************************/
screamer 0:c5e2f793b59a 508 uint32_t CLOCK_SYS_GetSdhcFreq(uint32_t instance)
screamer 0:c5e2f793b59a 509 {
screamer 0:c5e2f793b59a 510 uint32_t freq = 0;
screamer 0:c5e2f793b59a 511 uint8_t setting;
screamer 0:c5e2f793b59a 512 clock_names_t clockName;
screamer 0:c5e2f793b59a 513
screamer 0:c5e2f793b59a 514 /* get the sim clock source setting*/
screamer 0:c5e2f793b59a 515 if (CLOCK_HAL_GetSource(g_simBaseAddr[0], kClockSdhcSrc, &setting) != kSimHalSuccess)
screamer 0:c5e2f793b59a 516 {
screamer 0:c5e2f793b59a 517 return freq;
screamer 0:c5e2f793b59a 518 }
screamer 0:c5e2f793b59a 519
screamer 0:c5e2f793b59a 520 switch ((sim_sdhc_clock_source_t)setting)
screamer 0:c5e2f793b59a 521 {
screamer 0:c5e2f793b59a 522 case kSimSdhcSrcCoreSysClk: /* Core/system clock */
screamer 0:c5e2f793b59a 523 clockName = kCoreClock;
screamer 0:c5e2f793b59a 524 break;
screamer 0:c5e2f793b59a 525 case kSimSdhcSrcPllFllSel: /* clock as selected by SOPT2[PLLFLLSEL]. */
screamer 0:c5e2f793b59a 526 /* get the sim clock source setting*/
screamer 0:c5e2f793b59a 527 if (CLOCK_HAL_GetSource(g_simBaseAddr[0], kClockPllfllSel, &setting) != kSimHalSuccess)
screamer 0:c5e2f793b59a 528 {
screamer 0:c5e2f793b59a 529 return freq;
screamer 0:c5e2f793b59a 530 }
screamer 0:c5e2f793b59a 531
screamer 0:c5e2f793b59a 532 switch ((sim_pllfll_clock_sel_t)setting)
screamer 0:c5e2f793b59a 533 {
screamer 0:c5e2f793b59a 534 case kSimPllFllSelFll: /* Fll clock */
screamer 0:c5e2f793b59a 535 clockName = kMcgFllClock;
screamer 0:c5e2f793b59a 536 break;
screamer 0:c5e2f793b59a 537 case kSimPllFllSelPll: /* Pll0 clock */
screamer 0:c5e2f793b59a 538 clockName = kMcgPll0Clock;
screamer 0:c5e2f793b59a 539 break;
screamer 0:c5e2f793b59a 540 default:
screamer 0:c5e2f793b59a 541 clockName = kReserved;
screamer 0:c5e2f793b59a 542 break;
screamer 0:c5e2f793b59a 543 }
screamer 0:c5e2f793b59a 544 break;
screamer 0:c5e2f793b59a 545 case kSimSdhcSrcOscerclk: /* OSCERCLK clock */
screamer 0:c5e2f793b59a 546 clockName = kOsc0ErClock;
screamer 0:c5e2f793b59a 547 break;
screamer 0:c5e2f793b59a 548 case kSimSdhcSrcExt: /* SDHC CLKIN clock */
screamer 0:c5e2f793b59a 549 clockName = kSDHC0_CLKIN;
screamer 0:c5e2f793b59a 550 break;
screamer 0:c5e2f793b59a 551 default:
screamer 0:c5e2f793b59a 552 clockName = kReserved;
screamer 0:c5e2f793b59a 553 break;
screamer 0:c5e2f793b59a 554 }
screamer 0:c5e2f793b59a 555
screamer 0:c5e2f793b59a 556 /* Get ref clock freq */
screamer 0:c5e2f793b59a 557 CLOCK_SYS_GetFreq(clockName, &freq);
screamer 0:c5e2f793b59a 558 return freq;
screamer 0:c5e2f793b59a 559 }
screamer 0:c5e2f793b59a 560
screamer 0:c5e2f793b59a 561 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 562 *
screamer 0:c5e2f793b59a 563 * Function Name : CLOCK_SYS_GetSaiFreq
screamer 0:c5e2f793b59a 564 * Description : Gets the clock frequency for I2S module
screamer 0:c5e2f793b59a 565 * This function gets the clock frequency for I2S moudle.
screamer 0:c5e2f793b59a 566 *
screamer 0:c5e2f793b59a 567 *END**************************************************************************/
screamer 0:c5e2f793b59a 568 uint32_t CLOCK_SYS_GetSaiFreq(uint32_t instance)
screamer 0:c5e2f793b59a 569 {
screamer 0:c5e2f793b59a 570 uint32_t freq = 0;
screamer 0:c5e2f793b59a 571 CLOCK_SYS_GetFreq(kBusClock, &freq);
screamer 0:c5e2f793b59a 572 return freq;
screamer 0:c5e2f793b59a 573 }
screamer 0:c5e2f793b59a 574
screamer 0:c5e2f793b59a 575 /*FUNCTION**********************************************************************
screamer 0:c5e2f793b59a 576 *
screamer 0:c5e2f793b59a 577 * Function Name : CLOCK_SYS_GetGpioFreq
screamer 0:c5e2f793b59a 578 * Description : Gets the clock frequency for GPIO module.
screamer 0:c5e2f793b59a 579 * This function gets the clock frequency for GPIO moudle.
screamer 0:c5e2f793b59a 580 *
screamer 0:c5e2f793b59a 581 *END**************************************************************************/
screamer 0:c5e2f793b59a 582 uint32_t CLOCK_SYS_GetGpioFreq(uint32_t instance)
screamer 0:c5e2f793b59a 583 {
screamer 0:c5e2f793b59a 584 uint32_t freq = 0;
screamer 0:c5e2f793b59a 585
screamer 0:c5e2f793b59a 586 CLOCK_SYS_GetFreq(kSystemClock, &freq);
screamer 0:c5e2f793b59a 587
screamer 0:c5e2f793b59a 588 return freq;
screamer 0:c5e2f793b59a 589 }
screamer 0:c5e2f793b59a 590 /*******************************************************************************
screamer 0:c5e2f793b59a 591 * EOF
screamer 0:c5e2f793b59a 592 ******************************************************************************/