1 /******************************************************************************* 2 * @file rsi_ulpss_clk.h 3 ******************************************************************************* 4 * # License 5 * <b>Copyright 2024 Silicon Laboratories Inc. www.silabs.com</b> 6 ******************************************************************************* 7 * 8 * SPDX-License-Identifier: Zlib 9 * 10 * The licensor of this software is Silicon Laboratories Inc. 11 * 12 * This software is provided 'as-is', without any express or implied 13 * warranty. In no event will the authors be held liable for any damages 14 * arising from the use of this software. 15 * 16 * Permission is granted to anyone to use this software for any purpose, 17 * including commercial applications, and to alter it and redistribute it 18 * freely, subject to the following restrictions: 19 * 20 * 1. The origin of this software must not be misrepresented; you must not 21 * claim that you wrote the original software. If you use this software 22 * in a product, an acknowledgment in the product documentation would be 23 * appreciated but is not required. 24 * 2. Altered source versions must be plainly marked as such, and must not be 25 * misrepresented as being the original software. 26 * 3. This notice may not be removed or altered from any source distribution. 27 * 28 ******************************************************************************/ 29 30 /** 31 * Includes 32 */ 33 34 #ifndef __RSI_ULPSS_CLK_H__ 35 #define __RSI_ULPSS_CLK_H__ 36 37 #include "rsi_ccp_common.h" 38 #include "rsi_error.h" 39 #include "rsi_pll.h" 40 #include "rsi_ulpss_clk.h" 41 #include "rsi_power_save.h" 42 43 /*requied delays for turn on the clocks in micro seconds*/ 44 #define MCU_ULP_40MHZ_CLK_EN_TRUN_ON_DELAY 10 /* delay to enable the ULP 40MHZ CLK*/ 45 #define MCU_ULP_DOUBLER_CLK_EN_TRUN_ON_DELAY 10 /* delay to enable the ULP DOUBLER CLK*/ 46 #define MCU_ULP_20MHZ_RING_OSC_CLK_EN_TRUN_ON_DELAY 10 /* delay to enable the ULP 20MHZ_RING_OSC CLK*/ 47 #define MCU_ULP_MHZ_RC_CLK_EN_TRUN_ON_DELAY 2 /* delay to enable the ULP MHZ_RC CLK*/ 48 #define MCU_ULP_32KHZ_XTAL_CLK_EN_TRUN_ON_DELAY_1 500 /* delay to enable the ULP 32KHZ_XTAL CLK*/ 49 #define MCU_ULP_32KHZ_XTAL_CLK_EN_TRUN_ON_DELAY_2 1500 /* delay to enable the ULP 32KHZ_XTAL CLK*/ 50 #define MCU_ULP_32KHZ_RO_CLK_EN_TRUN_ON_DELAY 250 /* delay to enable the ULP 32KHZ_RO CLK*/ 51 #define MCU_ULP_32KHZ_RC_CLK_EN_TRUN_ON_DELAY 150 /* delay to enable the ULP 32KHZ_RC CLK*/ 52 53 /*Clock enable Bits */ 54 #define TOUCH_SENSOR_PCLK_ENABLE BIT(31) /* Enables TOUCH_SENSOR_PCLK_ENABLE */ 55 #define FIM_AHB_CLK_ENABLE BIT(30) /* Enables FIM_AHB_CLK_ENABLE */ 56 #define ULPSS_TASS_QUASI_SYNC BIT(27) /* Enables ULPSS_TASS_QUASI_SYNC */ 57 #define ULPSS_M4SS_SLV_SEL BIT(26) /* Enables ULPSS_M4SS_SLV_SEL */ 58 #define AUX_SOC_EXT_TRIG_2_SEL BIT(25) /* Enables TOUCH_SENSOR_PCLK_ENABLE */ 59 #define AUX_SOC_EXT_TRIG_1_SEL BIT(24) /* Enables AUX_SOC_EXT_TRIG_1_SEL */ 60 #define AUX_ULP_EXT_TRIG_2_SEL BIT(23) /* Enables AUX_ULP_EXT_TRIG_2_SEL */ 61 #define AUX_ULP_EXT_TRIG_1_SEL BIT(22) /* Enables AUX_ULP_EXT_TRIG_1_SEL */ 62 #define TIMER_PCLK_EN BIT(21) /* Enables TIMER_PCLK_EN */ 63 #define EGPIO_PCLK_EN BIT(20) /* Enables EGPIO_PCLK_EN */ 64 #define EGPIO_PCLK_DYN_CTRL_DISABLE_ULP BIT(19) /* Enables EGPIO_PCLK_DYN_CTRL_DISABLE_ULP */ 65 #define CLK_ENABLE_ULP_MEMORIES BIT(18) /* Enables CLK_ENABLE_ULP_MEMORIES */ 66 #define VAD_CLK_EN BIT(17) /* Enables VAD_CLK_EN */ 67 #define FIM_CLK_EN BIT(16) /* Enables FIM_CLK_EN */ 68 #define REG_ACCESS_SPI_CLK_EN BIT(15) /* Enables REG_ACCESS_SPI_CLK_EN */ 69 #define EGPIO_CLK_EN BIT(14) /* Enables EGPIO_CLK_EN */ 70 #define CLK_ENABLE_TIMER BIT(13) /* Enables CLK_ENABLE_TIMER */ 71 #define VAD_PCLK_ENABLE BIT(12) /* Enables VAD_PCLK_ENABLE */ 72 #define FIM_PCLK_ENABLE BIT(11) /* Enables FIM_PCLK_ENABLE */ 73 #define SCLK_ENABLE_UART BIT(10) /* Enables SCLK_ENABLE_UART */ 74 #define PCLK_ENABLE_UART BIT(9) /* Enables PCLK_ENABLE_UART */ 75 #define SCLK_ENABLE_SSI_MASTER BIT(8) /* Enables SCLK_ENABLE_SSI_MASTER */ 76 #define PCLK_ENABLE_SSI_MASTER BIT(7) /* Enables PCLK_ENABLE_SSI_MASTER */ 77 #define CLK_ENABLE_I2S BIT(6) /* Enables CLK_ENABLE_I2S */ 78 #define PCLK_ENABLE_I2C BIT(5) /* Enables PCLK_ENABLE_I2C */ 79 #define IR_PCLK_EN BIT(4) /* Enables IR_PCLK_EN */ 80 #define PCM_FSYNC_START BIT(1) /* Enables PCM_FSYNC_START */ 81 #define PCM_ENABLE BIT(0) /* Enables PCM_ENABLE */ 82 83 #define I2C_PCLK_DYN_CTRL_DISABLE BIT(0) /* Enables PCM_ENABLE */ 84 #define I2S_CLK_DYN_CTRL_DISABLE BIT(1) 85 #define ULP_SSI_MST_PCLK_DYN_CTRL_DISABLE BIT(2) 86 #define ULP_SSI_MST_SCLK_DYN_CTRL_DISABLE BIT(3) 87 #define UART_CLK_DYN_CTRL_DISABLE BIT(4) 88 #define UART_SCLK_DYN_CTRL_DISABLE BIT(5) 89 #define ULP_TIMER_PCLK_DYN_CTRL_DISABLE BIT(6) 90 #define ULP_TIMER_SCLK_DYN_CTRL_DISABLE BIT(7) 91 #define REG_ACCESS_SPI_CLK_DYN_CTRL_DISABLE BIT(8) 92 #define FIM_CLK_DYN_CTRL_DISABLE BIT(9) 93 #define VAD_CLK_DYN_CTRL_DISABLE BIT(10) 94 #define AUX_PCLK_EN BIT(11) 95 #define AUX_CLK_EN BIT(12) 96 #define AUX_MEM_EN BIT(13) 97 #define AUX_PCLK_DYN_CTRL_DISABLE BIT(14) 98 #define AUX_CLK_DYN_CTRL_DISABLE BIT(15) 99 #define AUX_CLK_MEM_DYN_CTRL_DISABLE BIT(16) 100 #define UDMA_CLK_ENABLE BIT(17) 101 #define IR_CLK_ENABLE BIT(18) 102 #define IR_CLK_DYN_CTRL_DISABLE BIT(19) 103 104 /*ULP PROCESSOR CLOCK */ 105 #define ULP_PROC_MAX_SEL 7 /* Maximum Seletion value for ulp processor clock source*/ 106 #define ULP_PROC_MIN_SEL 0 /* Minimum Seletion value for ulp processor clock source*/ 107 #define ULP_PROC_MAX_DIVISOIN_FACTOR 255 /* Maximum division factor value for ulp processor clock*/ 108 #define ULP_PROC_MIN_DIVISOIN_FACTOR 0 /* Minimum division factor value for ulp processor clock*/ 109 110 /*ULP SSI CLOCK*/ 111 #define ULP_SSI_MAX_SEL 6 /* Maximum Seletion value for ulp SSI clock source*/ 112 #define ULP_SSI_MIN_SEL 0 /* Minimum Seletion value for ulp SSI clock source*/ 113 #define ULP_SSI_MAX_DIVISION_FACTOR 127 /* Maximum division factor value for ulp SSI clock*/ 114 #define ULP_SSI_MIN_DIVISION_FACTOR 0 /* Minimum division factor value for ulp SSI clock*/ 115 116 /*ULP I2S CLOCK*/ 117 #define ULP_I2S_MAX_SEL 8 /* Maximum Seletion value for ulp I2S clock source*/ 118 #define ULP_I2S_MIN_SEL 0 /* Minimum Seletion value for ulp I2S clock source*/ 119 #define ULP_I2S_MAX_DIVISION_FACTOR 255 /* Maximum division factor value for ulp SSI clock*/ 120 #define ULP_I2S_MIN_DIVISION_FACTOR 0 /* Minimum division factor value for ulp SSI clock*/ 121 122 /*ULP UART CLOCK*/ 123 #define ULP_UART_MAX_SEL 7 /* Maximum Seletion value for ulp Uart clock source*/ 124 #define ULP_UART_MIN_SEL 0 /* Minimum Seletion value for ulp Uart clock source*/ 125 #define ULP_UART_MAX_DIVISION_FACTOR 7 /* Maximum division factor value for ulp Uart clock*/ 126 #define ULP_UART_MIN_DIVISION_FACTOR 0 /* Minimum division factor value for ulp Uart clock*/ 127 128 /*ULP AUX CLOCK*/ 129 #define ULP_AUX_MAX_SEL 8 /* Maximum Seletion value for ulp Aux clock source*/ 130 #define ULP_AUX_MIN_SEL 0 /* Minimum Seletion value for ulp Aux clock source*/ 131 #define ULP_AUX_MAX_DIVISION_FACTOR 255 /* Maximum division factor value for ulp Aux clock*/ 132 #define ULP_AUX_MIN_DIVISION_FACTOR 0 /* Minimum division factor value for ulp Aux clock*/ 133 134 /*ULP TIMER CLOCK*/ 135 #define ULP_TIMER_MAX_SEL 6 /* Maximum Seletion value for ulp Timer clock source*/ 136 #define ULP_TIMER_MIN_SEL 0 /* Minimum Seletion value for ulp Tiemer clock source*/ 137 138 /*ULP VAD CLOCK*/ 139 #define ULP_VAD_MAX_SEL 8 /* Maximum Seletion value for ulp Vad clock source*/ 140 #define ULP_VAD_MIN_SEL 0 /* Minimum Seletion value for ulp Vad clock source*/ 141 #define ULP_VAD_FCLK_MAX_SEL 8 /* Maximum Seletion value for ulp Vad fclock source*/ 142 #define ULP_VAD_FCLK_MIN_SEL 0 /* Minimum Seletion value for ulp Vad fclock source*/ 143 #define ULP_VAD_MAX_DIVISION_FACTOR 255 /* Maximum division factor value for ulp Vad clock*/ 144 #define ULP_VAD_MIN_DIVISION_FACTOR 0 /* Minimum division factor value for ulp Vad clock*/ 145 146 /*ULP TOUCH CLOCK*/ 147 #define ULP_TOUCH_MAX_SEL 6 /* Maximum Seletion value for ulp Touch clock source*/ 148 #define ULP_TOUCH_MIN_SEL 0 /* Minimum Seletion value for ulp Touch clock source*/ 149 #define ULP_TOUCH_MAX_DIVISION_FACTOR 255 /* Maximum division factor value for ulp Touch clock*/ 150 #define ULP_TOUCH_MIN_DIVISION_FACTOR 0 /* Minimum division factor value for ulp Touch clock*/ 151 152 /*ULP SLEEP SENSOR */ 153 #define ULP_SLP_SENSOR_MAX_DIVISION_FACTOR 255 /* Maximum division factor value for ulp Sleep sensor clock*/ 154 #define ULP_SLP_SENSOR_MIN_DIVISION_FACTOR 0 /* Minimum division factor value for ulp Sleep sensor clock*/ 155 /** 156 *@brief ulpss Reference Input clock source selection 157 **/ 158 typedef enum ULPSS_REF_CLK_SEL { 159 ULPSS_REF_BYP_CLK = 1, /*!< REF_BYP_CLK selection*/ 160 ULPSS_ULP_MHZ_RC_CLK = 2, /*!< ULP_MHZ_RC_CLK selection*/ 161 ULPSS_40MHZ_CLK = 3, /*!< EXT_40MHZ_CLK selection*/ 162 ULPSS_MEMS_REF_CLK = 4, /*!< MEMS_REF_CLK selection*/ 163 ULPSS_ULP_20MHZ_RINGOSC_CLK = 5, /*!< ULP_20MHZ_RINGOSC_CLK selection*/ 164 ULPSS_ULP_DOUBLER_CLK = 6, /*!< ULP_DOUBLER_CLK selection*/ 165 } ULPSS_REF_CLK_SEL_T; 166 /** 167 *@brief Different possible ref_clk sources for Ulp_proc_clk 168 **/ 169 typedef enum ULP_PROC_CLK_SELECT { 170 ULP_PROC_REF_CLK, /*!< ULP_REF_CLK selection*/ 171 ULP_PROC_ULP_32KHZ_RO_CLK, /*!< ULP_32KHZ_RO_CLK selection*/ 172 ULP_PROC_ULP_32KHZ_RC_CLK, /*!< ULP_32KHZ_RC_CLK selection*/ 173 ULP_PROC_ULP_32KHZ_XTAL_CLK, /*!< ULP_32KHZ_XTAL_CLK selection*/ 174 ULP_PROC_ULP_MHZ_RC_CLK, /*!< ULP_MHZ_RC_CLK selection*/ 175 ULP_PROC_ULP_20MHZ_RO_CLK, /*!< ULP_20MHZ_RO_CLK selection*/ 176 ULP_PROC_SOC_CLK, /*!< SOC_CLK selection*/ 177 ULP_PROC_ULP_DOUBLER_CLK /*!< ULP_DOUBLER_CLK selection*/ 178 } ULP_PROC_CLK_SELECT_T; 179 /** 180 *@brief Different possible input clk sources for Ulp_SSI_clk 181 **/ 182 typedef enum ULP_SSI_CLK_SELECT { 183 184 ULP_SSI_REF_CLK, /*!< ULP_REF_CLK selection*/ 185 ULP_SSI_ULP_32KHZ_RO_CLK, /*!< ULP_32KHZ_RO_CLK selection*/ 186 ULP_SSI_ULP_32KHZ_RC_CLK, /*!< ULP_32KHZ_RC_CLK selection*/ 187 ULP_SSI_ULP_32KHZ_XTAL_CLK, /*!< ULP_32KHZ_XTAL_CLK selection*/ 188 ULP_SSI_ULP_MHZ_RC_CLK, /*!< ULP_MHZ_RC_CLK selection*/ 189 ULP_SSI_ULP_20MHZ_RO_CLK, /*!< ULP_20MHZ_RO_CLK selection*/ 190 ULP_SSI_SOC_CLK, /*!< SOC_CLK selection*/ 191 } ULP_SSI_CLK_SELECT_T; 192 /** 193 *@brief Different possible input clk sources for Ulp_I2S_clk 194 **/ 195 typedef enum ULP_I2S_CLK_SELECT { 196 197 ULP_I2S_REF_CLK, /*!< ULP_REF_CLK selection*/ 198 ULP_I2S_ULP_32KHZ_RO_CLK, /*!< ULP_32KHZ_RO_CLK selection*/ 199 ULP_I2S_ULP_32KHZ_RC_CLK, /*!< ULP_32KHZ_RC_CLK selection*/ 200 ULP_I2S_ULP_32KHZ_XTAL_CLK, /*!< ULP_32KHZ_XTAL_CLK selection*/ 201 ULP_I2S_ULP_MHZ_RC_CLK, /*!< ULP_MHZ_RC_CLK selection*/ 202 ULP_I2S_ULP_20MHZ_RO_CLK, /*!< ULP_20MHZ_RO_CLK selection*/ 203 ULP_I2S_SOC_CLK, /*!< SOC_CLK selection*/ 204 ULP_I2S_ULP_DOUBLER_CLK, /*!< ULP_DOUBLER_CLK selection*/ 205 ULP_I2S_PLL_CLK /*!< I2s_PLL_CLK selection*/ 206 207 } ULP_I2S_CLK_SELECT_T; 208 /** 209 *@brief Different possible input clk sources for Ulp_Uart_clk 210 **/ 211 typedef enum ULP_UART_CLK_SELECT { 212 213 ULP_UART_REF_CLK, /*!< ULP_REF_CLK selection*/ 214 ULP_UART_ULP_32KHZ_RO_CLK, /*!< ULP_32KHZ_RO_CLK selection*/ 215 ULP_UART_ULP_32KHZ_RC_CLK, /*!< ULP_32KHZ_RC_CLK selection*/ 216 ULP_UART_ULP_32KHZ_XTAL_CLK, /*!< ULP_32KHZ_XTAL_CLK selection*/ 217 ULP_UART_ULP_MHZ_RC_CLK, /*!< ULP_MHZ_RC_CLK selection*/ 218 ULP_UART_ULP_20MHZ_RO_CLK, /*!< ULP_20MHZ_RO_CLK selection*/ 219 ULP_UART_SOC_CLK, /*!< SOC_CLK selection*/ 220 ULP_UART_ULP_DOUBLER_CLK, /*!< ULP_DOUBLER_CLK selection*/ 221 } ULP_UART_CLK_SELECT_T; 222 /** 223 *@brief Different possible input clk sources for Ulp_Timer_clk 224 **/ 225 typedef enum ULP_TIMER_CLK_SELECT { 226 227 ULP_TIMER_REF_CLK, /*!< ULP_REF_CLK selection*/ 228 ULP_TIMER_32KHZ_RO_CLK, /*!< ULP_32KHZ_RO_CLK selection*/ 229 ULP_TIMER_32KHZ_RC_CLK, /*!< ULP_32KHZ_RC_CLK selection*/ 230 ULP_TIMER_32KHZ_XTAL_CLK, /*!< ULP_32KHZ_XTAL_CLK selection*/ 231 ULP_TIMER_MHZ_RC_CLK, /*!< ULP_MHZ_RC_CLK selection*/ 232 ULP_TIMER_20MHZ_RO_CLK, /*!< ULP_20MHZ_RO_CLK selection*/ 233 ULP_TIMER_ULP_SOC_CLK, /*!< SOC_CLK selection*/ 234 } ULP_TIMER_CLK_SELECT_T; 235 /** 236 *@brief Different possible input clk sources for Ulp_AUX_clk 237 **/ 238 typedef enum ULP_AUX_CLK_SELECT { 239 240 ULP_AUX_REF_CLK, /*!< ULP_REF_CLK selection*/ 241 ULP_AUX_32KHZ_RO_CLK, /*!< ULP_32KHZ_RO_CLK selection*/ 242 ULP_AUX_32KHZ_RC_CLK, /*!< ULP_32KHZ_RC_CLK selection*/ 243 ULP_AUX_32KHZ_XTAL_CLK, /*!< ULP_32KHZ_XTAL_CLK selection*/ 244 ULP_AUX_MHZ_RC_CLK, /*!< ULP_MHZ_RC_CLK selection*/ 245 ULP_AUX_20MHZ_RO_CLK, /*!< ULP_20MHZ_RO_CLK selection*/ 246 ULP_AUX_ULP_SOC_CLK, /*!< SOC_CLK selection*/ 247 ULP_AUX_ULP_DOUBLER_CLK, /*!< ULP_DOUBLER_CLK selection*/ 248 ULP_AUX_I2S_PLL_CLK /*!< I2s_PLL_CLK selection*/ 249 } ULP_AUX_CLK_SELECT_T; 250 /** 251 *@brief Different possible input clk sources for Ulp_Vad_clk 252 **/ 253 typedef enum ULP_VAD_CLK_SELECT { 254 255 ULP_VAD_32KHZ_RO_CLK, /*!< ULP_32KHZ_RO_CLK selection*/ 256 ULP_VAD_32KHZ_RC_CLK, /*!< ULP_32KHZ_RC_CLK selection*/ 257 ULP_VAD_32KHZ_XTAL_CLK, /*!< ULP_32KHZ_XTAL_CLK selection*/ 258 } ULP_VAD_CLK_SELECT_T; 259 /** 260 *@brief Different possible input clk sources for Ulp_Vad_fclk 261 **/ 262 typedef enum ULP_VAD_FCLK_SELECT { 263 264 ULP_VAD_ULP_PROCESSOR_CLK, /*!< ULP_PROCESSOR_CLK selection*/ 265 ULP_VAD_REF_CLK, /*!< ULP_REF_CLK selection*/ 266 ULP_VAD_MHZ_RC_CLK, /*!< ULP_MHZ_RC_CLK selection*/ 267 ULP_VAD_20MHZ_RO_CLK, /*!< ULP_20MHZ_RO_CLK selection*/ 268 ULP_VAD_ULP_SOC_CLK, /*!< SOC_CLK selection*/ 269 } ULP_VAD_FCLK_SELECT_T; 270 /** 271 *@brief Different possible input clk sources for Ulp_Touch_clk 272 **/ 273 typedef enum ULP_TOUCH_CLK_SELECT { 274 275 ULP_TOUCH_REF_CLK, /*!< ULP_REF_CLK selection*/ 276 ULP_TOUCH_32KHZ_RO_CLK, /*!< ULP_32KHZ_RO_CLK selection*/ 277 ULP_TOUCH_32KHZ_RC_CLK, /*!< ULP_32KHZ_RC_CLK selection*/ 278 ULP_TOUCH_32KHZ_XTAL_CLK, /*!< ULP_32KHZ_XTAL_CLK selection*/ 279 ULP_TOUCH_MHZ_RC_CLK, /*!< ULP_MHZ_RC_CLK selection*/ 280 ULP_TOUCH_20MHZ_RO_CLK, /*!< ULP_20MHZ_RO_CLK selection*/ 281 ULP_TOUCH_ULP_SOC_CLK /*!< SOC_CLK selection*/ 282 283 } ULP_TOUCH_CLK_SELECT_T; 284 285 /** 286 *@brief list of peripherals, particular ulp clock that to be disabled 287 **/ 288 typedef enum ULPPERIPHERALS_CLK { 289 ULP_I2C_CLK, /*!< Enables or Disables ULP_I2C Peripheral clock when it is passed */ 290 ULP_EGPIO_CLK, /*!< Enables or Disables Ulp_Egpio Peripheral clock when it is passed */ 291 ULP_AUX_CLK, /*!< Enables or Disables Ulp_Aux Peripheral clock when it is passed */ 292 ULP_FIM_CLK, /*!< Enables or Disables Ulp_Fim Peripheral clock when it is passed */ 293 ULP_VAD_CLK, /*!< Enables or Disables Ulp_Vad Peripheral clock when it is passed */ 294 ULP_TIMER_CLK, /*!< Enables or Disables Ulp_Timer Peripheral clock when it is passed */ 295 ULP_UDMA_CLK, /*!< Enables or Disables Ulp_Udma Peripheral clock when it is passed */ 296 ULP_TOUCH_CLK, /*!< Enables or Disables Ulp_Touch Peripheral clock when it is passed */ 297 ULP_UART_CLK, /*!< Enables or Disables Ulp_Uart Peripheral clock when it is passed */ 298 ULP_SSI_CLK, /*!< Enables or Disables Ulp_SSI Peripheral clock when it is passed */ 299 ULP_I2S_CLK, /*!< Enables or Disables Ulp_I2S Peripheral clock when it is passed */ 300 } ULPPERIPHERALS_CLK_T; 301 302 rsi_error_t ulpss_ulp_proc_clk_config(ULPCLK_Type *pULPCLK, 303 ULP_PROC_CLK_SELECT_T clkSource, 304 uint16_t divFactor, 305 cdDelay delayFn); 306 rsi_error_t ulpss_ref_clk_config(ULPSS_REF_CLK_SEL_T clkSource); 307 308 rsi_error_t ulpss_clock_config(M4CLK_Type *pCLK, boolean_t clkEnable, uint16_t divFactor, boolean_t oddDivFactor); 309 310 rsi_error_t ulpss_ulp_proc_clk_config(ULPCLK_Type *pULPCLK, 311 ULP_PROC_CLK_SELECT_T clkSource, 312 uint16_t divFactor, 313 cdDelay delayFn); 314 315 rsi_error_t ulpss_ulp_peri_clk_enable(ULPCLK_Type *pULPCLK, uint32_t u32Flags); 316 317 rsi_error_t ulpss_ulp_peri_clk_disable(ULPCLK_Type *pULPCLK, uint32_t u32Flags); 318 319 rsi_error_t ulpss_ulp_dyn_clk_enable(ULPCLK_Type *pULPCLK, uint32_t u32Flags); 320 321 rsi_error_t ulpss_ulp_dyn_clk_disable(ULPCLK_Type *pULPCLK, uint32_t u32Flags); 322 323 rsi_error_t ulpss_ulp_ssi_clk_config(ULPCLK_Type *pULPCLK, 324 CLK_ENABLE_T clkType, 325 ULP_SSI_CLK_SELECT_T clkSource, 326 uint16_t divFactor); 327 328 rsi_error_t ulpss_ulp_i2s_clk_config(ULPCLK_Type *pULPCLK, ULP_I2S_CLK_SELECT_T clkSource, uint16_t divFactor); 329 330 rsi_error_t ulpss_ulp_uar_clk_config(ULPCLK_Type *pULPCLK, 331 CLK_ENABLE_T clkType, 332 boolean_t bFrClkSel, 333 ULP_UART_CLK_SELECT_T clkSource, 334 uint16_t divFactor); 335 336 rsi_error_t ulpss_time_clk_config(ULPCLK_Type *pULPCLK, 337 CLK_ENABLE_T clkType, 338 boolean_t bTmrSync, 339 ULP_TIMER_CLK_SELECT_T clkSource, 340 uint8_t skipSwitchTime); 341 342 rsi_error_t ulpss_aux_clk_config(ULPCLK_Type *pULPCLK, CLK_ENABLE_T clkType, ULP_AUX_CLK_SELECT_T clkSource); 343 344 rsi_error_t ulpss_vad_clk_config(ULPCLK_Type *pULPCLK, 345 ULP_VAD_CLK_SELECT_T clkSource, 346 ULP_VAD_FCLK_SELECT_T FclkSource, 347 uint16_t divFactor); 348 349 rsi_error_t ulpss_touch_clk_config(ULPCLK_Type *pULPCLK, ULP_TOUCH_CLK_SELECT_T clkSource, uint16_t divFactor); 350 351 rsi_error_t ulpss_slp_sensor_clk_config(ULPCLK_Type *pULPCLK, boolean_t clkEnable, uint32_t divFactor); 352 353 rsi_error_t ulpss_peripheral_enable(ULPCLK_Type *pULPCLK, ULPPERIPHERALS_CLK_T module, CLK_ENABLE_T clkType); 354 355 rsi_error_t ulpss_peripheral_disable(ULPCLK_Type *pULPCLK, ULPPERIPHERALS_CLK_T module); 356 357 rsi_error_t ulpss_time_clk_disable(ULPCLK_Type *pULPCLK); 358 359 #endif /*__RSI_ULPSS_CLK_H__*/ 360