t

Fork of mbed-dev by mbed official

Committer:
<>
Date:
Tue Nov 08 17:45:16 2016 +0000
Revision:
150:02e0a0aed4ec
This updates the lib to the mbed lib v129

Who changed what in which revision?

UserRevisionLine numberNew contents of line
<> 150:02e0a0aed4ec 1 /*******************************************************************************
<> 150:02e0a0aed4ec 2 * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
<> 150:02e0a0aed4ec 3 *
<> 150:02e0a0aed4ec 4 * Permission is hereby granted, free of charge, to any person obtaining a
<> 150:02e0a0aed4ec 5 * copy of this software and associated documentation files (the "Software"),
<> 150:02e0a0aed4ec 6 * to deal in the Software without restriction, including without limitation
<> 150:02e0a0aed4ec 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
<> 150:02e0a0aed4ec 8 * and/or sell copies of the Software, and to permit persons to whom the
<> 150:02e0a0aed4ec 9 * Software is furnished to do so, subject to the following conditions:
<> 150:02e0a0aed4ec 10 *
<> 150:02e0a0aed4ec 11 * The above copyright notice and this permission notice shall be included
<> 150:02e0a0aed4ec 12 * in all copies or substantial portions of the Software.
<> 150:02e0a0aed4ec 13 *
<> 150:02e0a0aed4ec 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
<> 150:02e0a0aed4ec 15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
<> 150:02e0a0aed4ec 16 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
<> 150:02e0a0aed4ec 17 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
<> 150:02e0a0aed4ec 18 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
<> 150:02e0a0aed4ec 19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
<> 150:02e0a0aed4ec 20 * OTHER DEALINGS IN THE SOFTWARE.
<> 150:02e0a0aed4ec 21 *
<> 150:02e0a0aed4ec 22 * Except as contained in this notice, the name of Maxim Integrated
<> 150:02e0a0aed4ec 23 * Products, Inc. shall not be used except as stated in the Maxim Integrated
<> 150:02e0a0aed4ec 24 * Products, Inc. Branding Policy.
<> 150:02e0a0aed4ec 25 *
<> 150:02e0a0aed4ec 26 * The mere transfer of this software does not imply any licenses
<> 150:02e0a0aed4ec 27 * of trade secrets, proprietary technology, copyrights, patents,
<> 150:02e0a0aed4ec 28 * trademarks, maskwork rights, or any other form of intellectual
<> 150:02e0a0aed4ec 29 * property whatsoever. Maxim Integrated Products, Inc. retains all
<> 150:02e0a0aed4ec 30 * ownership rights.
<> 150:02e0a0aed4ec 31 *
<> 150:02e0a0aed4ec 32 * $Date: 2016-05-18 16:40:40 -0500 (Wed, 18 May 2016) $
<> 150:02e0a0aed4ec 33 * $Revision: 22910 $
<> 150:02e0a0aed4ec 34 *
<> 150:02e0a0aed4ec 35 ******************************************************************************/
<> 150:02e0a0aed4ec 36
<> 150:02e0a0aed4ec 37 /**
<> 150:02e0a0aed4ec 38 * @file mxc_sys.h
<> 150:02e0a0aed4ec 39 * @brief System level header file.
<> 150:02e0a0aed4ec 40 */
<> 150:02e0a0aed4ec 41
<> 150:02e0a0aed4ec 42 #ifndef _MXC_SYS_H_
<> 150:02e0a0aed4ec 43 #define _MXC_SYS_H_
<> 150:02e0a0aed4ec 44
<> 150:02e0a0aed4ec 45 #include "mxc_config.h"
<> 150:02e0a0aed4ec 46 #include "clkman.h"
<> 150:02e0a0aed4ec 47 #include "ioman.h"
<> 150:02e0a0aed4ec 48 #include "gpio.h"
<> 150:02e0a0aed4ec 49 #include "i2cm_regs.h"
<> 150:02e0a0aed4ec 50 #include "i2cs_regs.h"
<> 150:02e0a0aed4ec 51 #include "tmr_regs.h"
<> 150:02e0a0aed4ec 52 #include "pt_regs.h"
<> 150:02e0a0aed4ec 53 #include "wdt_regs.h"
<> 150:02e0a0aed4ec 54 #include "owm_regs.h"
<> 150:02e0a0aed4ec 55 #include "spis_regs.h"
<> 150:02e0a0aed4ec 56
<> 150:02e0a0aed4ec 57 #ifdef __cplusplus
<> 150:02e0a0aed4ec 58 extern "C" {
<> 150:02e0a0aed4ec 59 #endif
<> 150:02e0a0aed4ec 60
<> 150:02e0a0aed4ec 61 /***** Definitions *****/
<> 150:02e0a0aed4ec 62
<> 150:02e0a0aed4ec 63 /** @brief System Configuration Object */
<> 150:02e0a0aed4ec 64 typedef struct {
<> 150:02e0a0aed4ec 65 clkman_scale_t clk_scale; /** desired clock scale value for the peripheral */
<> 150:02e0a0aed4ec 66 ioman_cfg_t io_cfg; /** IOMAN configuration object */
<> 150:02e0a0aed4ec 67 } sys_cfg_t;
<> 150:02e0a0aed4ec 68
<> 150:02e0a0aed4ec 69 /** @brief Watchdog System Configuration Object */
<> 150:02e0a0aed4ec 70 typedef struct {
<> 150:02e0a0aed4ec 71 clkman_wdt_clk_select_t clk; /** select the clock source for the watchdog */
<> 150:02e0a0aed4ec 72 clkman_scale_t clk_scale; /** desired clock scale value for the peripheral */
<> 150:02e0a0aed4ec 73 /** clk_scale is only applied if the system clock is used as the clk */
<> 150:02e0a0aed4ec 74 } sys_cfg_wdt_t;
<> 150:02e0a0aed4ec 75
<> 150:02e0a0aed4ec 76 /** @brief UART System Configuration Object */
<> 150:02e0a0aed4ec 77 typedef sys_cfg_t sys_cfg_uart_t;
<> 150:02e0a0aed4ec 78
<> 150:02e0a0aed4ec 79 /** @brief I2CM System Configuration Object */
<> 150:02e0a0aed4ec 80 typedef sys_cfg_t sys_cfg_i2cm_t;
<> 150:02e0a0aed4ec 81
<> 150:02e0a0aed4ec 82 /** @brief I2CS System Configuration Object */
<> 150:02e0a0aed4ec 83 typedef sys_cfg_t sys_cfg_i2cs_t;
<> 150:02e0a0aed4ec 84
<> 150:02e0a0aed4ec 85 /** @brief SPIM System Configuration Object */
<> 150:02e0a0aed4ec 86 typedef sys_cfg_t sys_cfg_spim_t;
<> 150:02e0a0aed4ec 87
<> 150:02e0a0aed4ec 88 /** @brief SPIX System Configuration Object */
<> 150:02e0a0aed4ec 89 typedef sys_cfg_t sys_cfg_spix_t;
<> 150:02e0a0aed4ec 90
<> 150:02e0a0aed4ec 91 /** @brief SPIS System Configuration Object */
<> 150:02e0a0aed4ec 92 typedef sys_cfg_t sys_cfg_spis_t;
<> 150:02e0a0aed4ec 93
<> 150:02e0a0aed4ec 94 /** @brief OWM System Configuration Object */
<> 150:02e0a0aed4ec 95 typedef sys_cfg_t sys_cfg_owm_t;
<> 150:02e0a0aed4ec 96
<> 150:02e0a0aed4ec 97 /** @brief Timer System Configuration Object */
<> 150:02e0a0aed4ec 98 typedef gpio_cfg_t sys_cfg_tmr_t;
<> 150:02e0a0aed4ec 99
<> 150:02e0a0aed4ec 100 /** @brief Pulse Train System Configuration Object */
<> 150:02e0a0aed4ec 101 typedef gpio_cfg_t sys_cfg_pt_t;
<> 150:02e0a0aed4ec 102 typedef clkman_scale_t sys_pt_clk_scale;
<> 150:02e0a0aed4ec 103
<> 150:02e0a0aed4ec 104 /***** Include Files *****/
<> 150:02e0a0aed4ec 105 /* These includes require the above types to be defined first */
<> 150:02e0a0aed4ec 106 #include "uart.h"
<> 150:02e0a0aed4ec 107 #include "spim.h"
<> 150:02e0a0aed4ec 108
<> 150:02e0a0aed4ec 109 /***** Function Prototypes *****/
<> 150:02e0a0aed4ec 110
<> 150:02e0a0aed4ec 111 /**
<> 150:02e0a0aed4ec 112 * @brief Get the frequency of a clock scaler
<> 150:02e0a0aed4ec 113 * @param clk_scale value of clk_scale field from clk_ctrl register
<> 150:02e0a0aed4ec 114 * @returns frequency in Hz
<> 150:02e0a0aed4ec 115 */
<> 150:02e0a0aed4ec 116 uint32_t SYS_GetFreq(uint32_t clk_scale);
<> 150:02e0a0aed4ec 117
<> 150:02e0a0aed4ec 118 /**
<> 150:02e0a0aed4ec 119 * @brief Get the frequency of the CPU
<> 150:02e0a0aed4ec 120 * @returns frequency in Hz
<> 150:02e0a0aed4ec 121 */
<> 150:02e0a0aed4ec 122 uint32_t SYS_CPU_GetFreq(void);
<> 150:02e0a0aed4ec 123
<> 150:02e0a0aed4ec 124 /**
<> 150:02e0a0aed4ec 125 * @brief System level initialization for ADC module.
<> 150:02e0a0aed4ec 126 * @returns E_NO_ERROR if everything is successful
<> 150:02e0a0aed4ec 127 */
<> 150:02e0a0aed4ec 128 int SYS_ADC_Init(void);
<> 150:02e0a0aed4ec 129
<> 150:02e0a0aed4ec 130 /**
<> 150:02e0a0aed4ec 131 * @brief System level initialization for AES module.
<> 150:02e0a0aed4ec 132 * @returns E_NO_ERROR if everything is successful
<> 150:02e0a0aed4ec 133 */
<> 150:02e0a0aed4ec 134 int SYS_AES_Init(void);
<> 150:02e0a0aed4ec 135
<> 150:02e0a0aed4ec 136 /**
<> 150:02e0a0aed4ec 137 * @brief System level initialization for GPIO module.
<> 150:02e0a0aed4ec 138 * @returns E_NO_ERROR if everything is successful
<> 150:02e0a0aed4ec 139 */
<> 150:02e0a0aed4ec 140 int SYS_GPIO_Init(void);
<> 150:02e0a0aed4ec 141
<> 150:02e0a0aed4ec 142 /**
<> 150:02e0a0aed4ec 143 * @brief System level initialization for UART module.
<> 150:02e0a0aed4ec 144 * @param uart Pointer to UART module registers
<> 150:02e0a0aed4ec 145 * @param uart_cfg UART configuration object
<> 150:02e0a0aed4ec 146 * @param sys_cfg System configuration object
<> 150:02e0a0aed4ec 147 * @returns E_NO_ERROR if everything is successful
<> 150:02e0a0aed4ec 148 */
<> 150:02e0a0aed4ec 149 int SYS_UART_Init(mxc_uart_regs_t *uart, const uart_cfg_t *uart_cfg, const sys_cfg_uart_t *sys_cfg);
<> 150:02e0a0aed4ec 150
<> 150:02e0a0aed4ec 151 /**
<> 150:02e0a0aed4ec 152 * @brief System level shutdown for UART module
<> 150:02e0a0aed4ec 153 * @param uart Pointer to UART module registers
<> 150:02e0a0aed4ec 154 * @returns E_NO_ERROR if everything is successful
<> 150:02e0a0aed4ec 155 */
<> 150:02e0a0aed4ec 156 int SYS_UART_Shutdown(mxc_uart_regs_t *uart);
<> 150:02e0a0aed4ec 157
<> 150:02e0a0aed4ec 158 /**
<> 150:02e0a0aed4ec 159 * @brief Get the frequency of the UART module source clock
<> 150:02e0a0aed4ec 160 * @param uart Pointer to UART module registers
<> 150:02e0a0aed4ec 161 * @returns frequency in Hz
<> 150:02e0a0aed4ec 162 */
<> 150:02e0a0aed4ec 163 uint32_t SYS_UART_GetFreq(mxc_uart_regs_t *uart);
<> 150:02e0a0aed4ec 164
<> 150:02e0a0aed4ec 165 /**
<> 150:02e0a0aed4ec 166 * @brief System level initialization for I2CM module.
<> 150:02e0a0aed4ec 167 * @param i2cm Pointer to I2CM module registers
<> 150:02e0a0aed4ec 168 * @param cfg System configuration object
<> 150:02e0a0aed4ec 169 * @returns E_NO_ERROR if everything is successful
<> 150:02e0a0aed4ec 170 */
<> 150:02e0a0aed4ec 171 int SYS_I2CM_Init(mxc_i2cm_regs_t *i2cm, const sys_cfg_i2cm_t *cfg);
<> 150:02e0a0aed4ec 172
<> 150:02e0a0aed4ec 173 /**
<> 150:02e0a0aed4ec 174 * @brief System level shutdown for I2CM module
<> 150:02e0a0aed4ec 175 * @param i2cm Pointer to I2CM module registers
<> 150:02e0a0aed4ec 176 * @returns E_NO_ERROR if everything is successful
<> 150:02e0a0aed4ec 177 */
<> 150:02e0a0aed4ec 178 int SYS_I2CM_Shutdown(mxc_i2cm_regs_t *i2cm);
<> 150:02e0a0aed4ec 179
<> 150:02e0a0aed4ec 180 /**
<> 150:02e0a0aed4ec 181 * @brief Get the frequency of the I2CM module source clock
<> 150:02e0a0aed4ec 182 * @param i2cm Pointer to I2CM module registers
<> 150:02e0a0aed4ec 183 * @returns frequency in Hz
<> 150:02e0a0aed4ec 184 */
<> 150:02e0a0aed4ec 185 uint32_t SYS_I2CM_GetFreq(mxc_i2cm_regs_t *i2cm);
<> 150:02e0a0aed4ec 186
<> 150:02e0a0aed4ec 187 /**
<> 150:02e0a0aed4ec 188 * @brief System level initialization for I2CS module.
<> 150:02e0a0aed4ec 189 * @param i2cs Pointer to I2CS module registers
<> 150:02e0a0aed4ec 190 * @param cfg System configuration object
<> 150:02e0a0aed4ec 191 * @returns E_NO_ERROR if everything is successful
<> 150:02e0a0aed4ec 192 */
<> 150:02e0a0aed4ec 193 int SYS_I2CS_Init(mxc_i2cs_regs_t *i2cs, const sys_cfg_i2cs_t *cfg);
<> 150:02e0a0aed4ec 194
<> 150:02e0a0aed4ec 195 /**
<> 150:02e0a0aed4ec 196 * @brief System level shutdown for I2CS module
<> 150:02e0a0aed4ec 197 * @param i2cs Pointer to I2CS module registers
<> 150:02e0a0aed4ec 198 * @returns E_NO_ERROR if everything is successful
<> 150:02e0a0aed4ec 199 */
<> 150:02e0a0aed4ec 200 int SYS_I2CS_Shutdown(mxc_i2cs_regs_t *i2cs);
<> 150:02e0a0aed4ec 201
<> 150:02e0a0aed4ec 202 /**
<> 150:02e0a0aed4ec 203 * @brief Get the frequency of the I2CS module source clock
<> 150:02e0a0aed4ec 204 * @param i2cs Pointer to I2CS module registers
<> 150:02e0a0aed4ec 205 * @returns frequency in Hz
<> 150:02e0a0aed4ec 206 */
<> 150:02e0a0aed4ec 207 uint32_t SYS_I2CS_GetFreq(mxc_i2cs_regs_t *i2cs);
<> 150:02e0a0aed4ec 208
<> 150:02e0a0aed4ec 209 /**
<> 150:02e0a0aed4ec 210 * @brief System level initialization for SPIM module.
<> 150:02e0a0aed4ec 211 * @param spim Pointer to SPIM module registers
<> 150:02e0a0aed4ec 212 * @param spim_cfg SPIM configuration object
<> 150:02e0a0aed4ec 213 * @param sys_cfg System configuration object
<> 150:02e0a0aed4ec 214 * @returns E_NO_ERROR if everything is successful
<> 150:02e0a0aed4ec 215 */
<> 150:02e0a0aed4ec 216 int SYS_SPIM_Init(mxc_spim_regs_t *spim, const spim_cfg_t *spim_cfg, const sys_cfg_spim_t *sys_cfg);
<> 150:02e0a0aed4ec 217
<> 150:02e0a0aed4ec 218 /**
<> 150:02e0a0aed4ec 219 * @brief System level shutdown for SPIM module
<> 150:02e0a0aed4ec 220 * @param spim Pointer to SPIM module registers
<> 150:02e0a0aed4ec 221 * @returns E_NO_ERROR if everything is successful
<> 150:02e0a0aed4ec 222 */
<> 150:02e0a0aed4ec 223 int SYS_SPIM_Shutdown(mxc_spim_regs_t *spim);
<> 150:02e0a0aed4ec 224
<> 150:02e0a0aed4ec 225 /**
<> 150:02e0a0aed4ec 226 * @brief Get the frequency of the SPIM module source clock
<> 150:02e0a0aed4ec 227 * @param spim Pointer to SPIM module registers
<> 150:02e0a0aed4ec 228 * @returns frequency in Hz
<> 150:02e0a0aed4ec 229 */
<> 150:02e0a0aed4ec 230 uint32_t SYS_SPIM_GetFreq(mxc_spim_regs_t *spim);
<> 150:02e0a0aed4ec 231
<> 150:02e0a0aed4ec 232 /**
<> 150:02e0a0aed4ec 233 * @brief System level initialization for SPIX module.
<> 150:02e0a0aed4ec 234 * @param sys_cfg System configuration object
<> 150:02e0a0aed4ec 235 * @param baud Baud rate for clock divider configuration
<> 150:02e0a0aed4ec 236 * @returns E_NO_ERROR if everything is successful
<> 150:02e0a0aed4ec 237 */
<> 150:02e0a0aed4ec 238 int SYS_SPIX_Init(const sys_cfg_spix_t *sys_cfg, uint32_t baud);
<> 150:02e0a0aed4ec 239
<> 150:02e0a0aed4ec 240 /**
<> 150:02e0a0aed4ec 241 * @brief System level shutdown for SPIX module
<> 150:02e0a0aed4ec 242 * @returns E_NO_ERROR if everything is successful
<> 150:02e0a0aed4ec 243 */
<> 150:02e0a0aed4ec 244 int SYS_SPIX_Shutdown(void);
<> 150:02e0a0aed4ec 245
<> 150:02e0a0aed4ec 246 /**
<> 150:02e0a0aed4ec 247 * @brief Get the frequency of the SPIX module source clock
<> 150:02e0a0aed4ec 248 * @returns frequency in Hz
<> 150:02e0a0aed4ec 249 */
<> 150:02e0a0aed4ec 250 uint32_t SYS_SPIX_GetFreq(void);
<> 150:02e0a0aed4ec 251
<> 150:02e0a0aed4ec 252 /**
<> 150:02e0a0aed4ec 253 * @brief System level initialization for SPIS module.
<> 150:02e0a0aed4ec 254 * @param sys_cfg System configuration object.
<> 150:02e0a0aed4ec 255 * @returns E_NO_ERROR if everything is successful.
<> 150:02e0a0aed4ec 256 */
<> 150:02e0a0aed4ec 257 int SYS_SPIS_Init(const sys_cfg_spix_t *sys_cfg);
<> 150:02e0a0aed4ec 258
<> 150:02e0a0aed4ec 259 /**
<> 150:02e0a0aed4ec 260 * @brief System level shutdown for SPIS module
<> 150:02e0a0aed4ec 261 * @returns E_NO_ERROR if everything is successful
<> 150:02e0a0aed4ec 262 */
<> 150:02e0a0aed4ec 263 int SYS_SPIS_Shutdown(mxc_spis_regs_t *spis);
<> 150:02e0a0aed4ec 264
<> 150:02e0a0aed4ec 265 /**
<> 150:02e0a0aed4ec 266 * @brief Get the frequency of the SPIS module source clock
<> 150:02e0a0aed4ec 267 * @returns frequency in Hz
<> 150:02e0a0aed4ec 268 */
<> 150:02e0a0aed4ec 269 uint32_t SYS_SPIS_GetFreq(mxc_spis_regs_t *spis);
<> 150:02e0a0aed4ec 270
<> 150:02e0a0aed4ec 271 /**
<> 150:02e0a0aed4ec 272 * @brief System level initialization for OWM module.
<> 150:02e0a0aed4ec 273 * @param owm Pointer to OWM module registers
<> 150:02e0a0aed4ec 274 * @param owm_cfg OWM configuration object
<> 150:02e0a0aed4ec 275 * @param sys_cfg System configuration object
<> 150:02e0a0aed4ec 276 * @returns E_NO_ERROR if everything is successful
<> 150:02e0a0aed4ec 277 */
<> 150:02e0a0aed4ec 278 int SYS_OWM_Init(mxc_owm_regs_t *owm, const sys_cfg_owm_t *sys_cfg);
<> 150:02e0a0aed4ec 279
<> 150:02e0a0aed4ec 280 /**
<> 150:02e0a0aed4ec 281 * @brief System level shutdown for OWM module
<> 150:02e0a0aed4ec 282 * @param owm Pointer to OWM module registers
<> 150:02e0a0aed4ec 283 * @returns E_NO_ERROR if everything is successful
<> 150:02e0a0aed4ec 284 */
<> 150:02e0a0aed4ec 285 int SYS_OWM_Shutdown(mxc_owm_regs_t *owm);
<> 150:02e0a0aed4ec 286
<> 150:02e0a0aed4ec 287 /**
<> 150:02e0a0aed4ec 288 * @brief Get the frequency of the OWM module source clock
<> 150:02e0a0aed4ec 289 * @param owm Pointer to OWM module registers
<> 150:02e0a0aed4ec 290 * @returns frequency in Hz
<> 150:02e0a0aed4ec 291 */
<> 150:02e0a0aed4ec 292 uint32_t SYS_OWM_GetFreq(mxc_owm_regs_t *owm);
<> 150:02e0a0aed4ec 293
<> 150:02e0a0aed4ec 294 /**
<> 150:02e0a0aed4ec 295 * @brief System level initialization for TMR module.
<> 150:02e0a0aed4ec 296 * @param tmr Pointer to TMR module registers
<> 150:02e0a0aed4ec 297 * @param cfg System configuration object
<> 150:02e0a0aed4ec 298 * @returns E_NO_ERROR if everything is successful
<> 150:02e0a0aed4ec 299 */
<> 150:02e0a0aed4ec 300 int SYS_TMR_Init(mxc_tmr_regs_t *tmr, const sys_cfg_tmr_t *cfg);
<> 150:02e0a0aed4ec 301
<> 150:02e0a0aed4ec 302 /**
<> 150:02e0a0aed4ec 303 * @brief Get the frequency of the TMR module source clock
<> 150:02e0a0aed4ec 304 * @param spim Pointer to TMR module registers
<> 150:02e0a0aed4ec 305 * @returns frequency in Hz
<> 150:02e0a0aed4ec 306 */
<> 150:02e0a0aed4ec 307 uint32_t SYS_TMR_GetFreq(mxc_tmr_regs_t *tmr);
<> 150:02e0a0aed4ec 308
<> 150:02e0a0aed4ec 309 /**
<> 150:02e0a0aed4ec 310 * @brief Get the frequency of the Pulse Train module source clock
<> 150:02e0a0aed4ec 311 * @returns frequency in Hz
<> 150:02e0a0aed4ec 312 */
<> 150:02e0a0aed4ec 313 uint32_t SYS_PT_GetFreq(void);
<> 150:02e0a0aed4ec 314
<> 150:02e0a0aed4ec 315 /**
<> 150:02e0a0aed4ec 316 * @brief Initialize the global pulse train clock scale
<> 150:02e0a0aed4ec 317 * @param clk_scale scale the system clock for the PT clock
<> 150:02e0a0aed4ec 318 */
<> 150:02e0a0aed4ec 319 void SYS_PT_Init(sys_pt_clk_scale clk_scale);
<> 150:02e0a0aed4ec 320
<> 150:02e0a0aed4ec 321 /**
<> 150:02e0a0aed4ec 322 * @brief System level initialization for Pulse Train module.
<> 150:02e0a0aed4ec 323 * @param pt Pointer to PT module registers
<> 150:02e0a0aed4ec 324 * @param cfg System configuration object
<> 150:02e0a0aed4ec 325 * @returns E_NO_ERROR if everything is successful
<> 150:02e0a0aed4ec 326 */
<> 150:02e0a0aed4ec 327 int SYS_PT_Config(mxc_pt_regs_t *pt, const sys_cfg_pt_t *cfg);
<> 150:02e0a0aed4ec 328
<> 150:02e0a0aed4ec 329 /**
<> 150:02e0a0aed4ec 330 * @brief System level initialization for USB device.
<> 150:02e0a0aed4ec 331 * @param enable 1 to enable the peripheral, 0 to disable.
<> 150:02e0a0aed4ec 332 */
<> 150:02e0a0aed4ec 333 void SYS_USB_Enable(uint8_t enable);
<> 150:02e0a0aed4ec 334
<> 150:02e0a0aed4ec 335 /**
<> 150:02e0a0aed4ec 336 * @brief System Tick Configuration Helper
<> 150:02e0a0aed4ec 337 *
<> 150:02e0a0aed4ec 338 * The function enables selection of the external clock source for the
<> 150:02e0a0aed4ec 339 * System Tick Timer. It initializes the System Timer and its interrupt,
<> 150:02e0a0aed4ec 340 * and starts the System Tick Timer. Counter is in free running mode to generate
<> 150:02e0a0aed4ec 341 * periodic interrupts.
<> 150:02e0a0aed4ec 342
<> 150:02e0a0aed4ec 343 * @param ticks Number of ticks between two interrupts.
<> 150:02e0a0aed4ec 344 * @param clk_src Selects between default SystemClock or External Clock.
<> 150:02e0a0aed4ec 345 * - 0 Use external clock source
<> 150:02e0a0aed4ec 346 * - 1 SystemClock
<> 150:02e0a0aed4ec 347 * @return E_NO_ERROR Function succeeded.
<> 150:02e0a0aed4ec 348 * @return E_INVALID Invalid reload value requested.
<> 150:02e0a0aed4ec 349 *
<> 150:02e0a0aed4ec 350 * @see CLKMAN_SetRTOSMode(uint8_t enable) if using the external clock source to drive the System Tick Timer
<> 150:02e0a0aed4ec 351 *
<> 150:02e0a0aed4ec 352 */
<> 150:02e0a0aed4ec 353 int SYS_SysTick_Config(uint32_t ticks, int clk_src);
<> 150:02e0a0aed4ec 354
<> 150:02e0a0aed4ec 355 /**
<> 150:02e0a0aed4ec 356 * @brief Disable System Tick timer
<> 150:02e0a0aed4ec 357 *
<> 150:02e0a0aed4ec 358 *
<> 150:02e0a0aed4ec 359 */
<> 150:02e0a0aed4ec 360 __STATIC_INLINE void SYS_SysTick_Disable(void)
<> 150:02e0a0aed4ec 361 {
<> 150:02e0a0aed4ec 362 SysTick->CTRL = 0;
<> 150:02e0a0aed4ec 363 }
<> 150:02e0a0aed4ec 364
<> 150:02e0a0aed4ec 365 /**
<> 150:02e0a0aed4ec 366 * @brief Delay a requested number of SysTick Timer Ticks.
<> 150:02e0a0aed4ec 367 * @param ticks Number of System Ticks to delay.
<> 150:02e0a0aed4ec 368 * @note This delay function is based on the clock used for the SysTick timer
<> 150:02e0a0aed4ec 369 * if the SysTick timer is enabled. If the SysTick timer is
<> 150:02e0a0aed4ec 370 * not enabled, the current SysTick registers are saved and the
<> 150:02e0a0aed4ec 371 * timer will use the SystemClock as the source for the delay.
<> 150:02e0a0aed4ec 372 * The delay is measured in clock ticks and is not based on the
<> 150:02e0a0aed4ec 373 * SysTick interval.
<> 150:02e0a0aed4ec 374 * @returns E_NO_ERROR if everything is successful
<> 150:02e0a0aed4ec 375 */
<> 150:02e0a0aed4ec 376 int SYS_SysTick_Delay(uint32_t ticks);
<> 150:02e0a0aed4ec 377
<> 150:02e0a0aed4ec 378 /**
<> 150:02e0a0aed4ec 379 * @brief Get the frequency of the SysTick Timer
<> 150:02e0a0aed4ec 380 * @returns frequency in Hz
<> 150:02e0a0aed4ec 381 */
<> 150:02e0a0aed4ec 382 uint32_t SYS_SysTick_GetFreq(void);
<> 150:02e0a0aed4ec 383
<> 150:02e0a0aed4ec 384 /**
<> 150:02e0a0aed4ec 385 * @brief Delay a requested number of microseconds.
<> 150:02e0a0aed4ec 386 * @param us Number of microseconds to delay.
<> 150:02e0a0aed4ec 387 * @note Calls SYS_SysTick_Delay.
<> 150:02e0a0aed4ec 388 */
<> 150:02e0a0aed4ec 389 __STATIC_INLINE void SYS_SysTick_DelayUs(uint32_t us)
<> 150:02e0a0aed4ec 390 {
<> 150:02e0a0aed4ec 391 SYS_SysTick_Delay((uint32_t)(((uint64_t)SYS_SysTick_GetFreq() * us) / 1000000));
<> 150:02e0a0aed4ec 392 }
<> 150:02e0a0aed4ec 393
<> 150:02e0a0aed4ec 394 /**
<> 150:02e0a0aed4ec 395 * @brief System level initialization for RTC module.
<> 150:02e0a0aed4ec 396 * @returns E_NO_ERROR if everything is successful
<> 150:02e0a0aed4ec 397 */
<> 150:02e0a0aed4ec 398 int SYS_RTC_Init(void);
<> 150:02e0a0aed4ec 399
<> 150:02e0a0aed4ec 400 /**
<> 150:02e0a0aed4ec 401 * @brief Select VDDIO for the specified GPIO pin.
<> 150:02e0a0aed4ec 402 */
<> 150:02e0a0aed4ec 403 void SYS_IOMAN_UseVDDIO(const gpio_cfg_t *cfg);
<> 150:02e0a0aed4ec 404
<> 150:02e0a0aed4ec 405 /**
<> 150:02e0a0aed4ec 406 * @brief Select VDDIOH for the specified GPIO pin.
<> 150:02e0a0aed4ec 407 */
<> 150:02e0a0aed4ec 408 void SYS_IOMAN_UseVDDIOH(const gpio_cfg_t *cfg);
<> 150:02e0a0aed4ec 409
<> 150:02e0a0aed4ec 410 /**
<> 150:02e0a0aed4ec 411 * @brief System level initialization for Watchdog module.
<> 150:02e0a0aed4ec 412 * @param wdt Pointer to Watchdog module registers
<> 150:02e0a0aed4ec 413 * @param cfg Watchdog System configuration object
<> 150:02e0a0aed4ec 414 */
<> 150:02e0a0aed4ec 415 void SYS_WDT_Init(mxc_wdt_regs_t *wdt, const sys_cfg_wdt_t *cfg);
<> 150:02e0a0aed4ec 416
<> 150:02e0a0aed4ec 417 /**
<> 150:02e0a0aed4ec 418 * @brief System level initialization for PRNG module.
<> 150:02e0a0aed4ec 419 * Enable crypto clock and set divisors to 1 if disabled
<> 150:02e0a0aed4ec 420 */
<> 150:02e0a0aed4ec 421 void SYS_PRNG_Init(void);
<> 150:02e0a0aed4ec 422
<> 150:02e0a0aed4ec 423 /**
<> 150:02e0a0aed4ec 424 * @brief System level initialization for MAA module.
<> 150:02e0a0aed4ec 425 * Enable crypto clock and set divisors to 1 if disabled
<> 150:02e0a0aed4ec 426 */
<> 150:02e0a0aed4ec 427 void SYS_MAA_Init(void);
<> 150:02e0a0aed4ec 428
<> 150:02e0a0aed4ec 429 /*
<> 150:02e0a0aed4ec 430 * @brief Gets the size of the SRAM
<> 150:02e0a0aed4ec 431 * @returns size of SRAM in bytes
<> 150:02e0a0aed4ec 432 */
<> 150:02e0a0aed4ec 433 uint32_t SYS_SRAM_GetSize(void);
<> 150:02e0a0aed4ec 434
<> 150:02e0a0aed4ec 435 /*
<> 150:02e0a0aed4ec 436 * @brief Gets the size of the Flash
<> 150:02e0a0aed4ec 437 * @returns size of Flash in bytes
<> 150:02e0a0aed4ec 438 */
<> 150:02e0a0aed4ec 439 uint32_t SYS_FLASH_GetSize(void);
<> 150:02e0a0aed4ec 440
<> 150:02e0a0aed4ec 441 #ifdef __cplusplus
<> 150:02e0a0aed4ec 442 }
<> 150:02e0a0aed4ec 443 #endif
<> 150:02e0a0aed4ec 444
<> 150:02e0a0aed4ec 445 #endif /* _MXC_SYS_H_*/