@@ -2068,6 +2068,32 @@ bool CLOCK_EnableUsbfs0HostClock(clock_usbfs_src_t src, uint32_t freq)
2068
2068
/* Select FRO 96 MHz */
2069
2069
CLOCK_AttachClk (kFRO_HF_to_USB0_CLK );
2070
2070
}
2071
+ else if (kCLOCK_UsbfsSrcPll0 == src )
2072
+ {
2073
+ /*!< Configure XTAL32M */
2074
+ POWER_DisablePD (kPDRUNCFG_PD_XTAL32M ); /* Ensure XTAL32M is powered */
2075
+ POWER_DisablePD (kPDRUNCFG_PD_LDOXO32M ); /* Ensure XTAL32M is powered */
2076
+ (void )CLOCK_SetupExtClocking (16000000U ); /* Enable clk_in clock */
2077
+ SYSCON -> CLOCK_CTRL |= SYSCON_CLOCK_CTRL_CLKIN_ENA_MASK ; /* Enable clk_in from XTAL32M clock */
2078
+ ANACTRL -> XO32M_CTRL |= ANACTRL_XO32M_CTRL_ENABLE_SYSTEM_CLK_OUT_MASK ; /* Enable clk_in to system */
2079
+
2080
+ /*!< Set up PLL0 */
2081
+ POWER_DisablePD (kPDRUNCFG_PD_PLL0 );
2082
+ CLOCK_AttachClk (kEXT_CLK_to_PLL0 ); /*!< Switch PLL0CLKSEL to EXT_CLK */
2083
+ POWER_DisablePD (kPDRUNCFG_PD_PLL0_SSCG );
2084
+ const pll_setup_t pll1Setup = {
2085
+ .pllctrl = SYSCON_PLL0CTRL_CLKEN_MASK | SYSCON_PLL0CTRL_SELI (19U ) | SYSCON_PLL0CTRL_SELP (9U ),
2086
+ .pllndec = SYSCON_PLL0NDEC_NDIV (1U ),
2087
+ .pllpdec = SYSCON_PLL0PDEC_PDIV (5U ),
2088
+ .pllsscg = {0x0U ,(SYSCON_PLL0SSCG1_MDIV_EXT (30U ) | SYSCON_PLL0SSCG1_SEL_EXT_MASK )},
2089
+ .pllRate = 48000000U ,
2090
+ .flags = PLL_SETUPFLAG_WAITLOCK };
2091
+ (void )CLOCK_SetPLL0Freq (& pll1Setup );
2092
+
2093
+ CLOCK_SetClkDiv (kCLOCK_DivUsb0Clk , 1U , false);
2094
+ CLOCK_AttachClk (kPLL0_to_USB0_CLK );
2095
+ SDK_DelayAtLeastUs (50U , SDK_DEVICE_MAXIMUM_CPU_CLOCK_FREQUENCY );
2096
+ }
2071
2097
else
2072
2098
{
2073
2099
/*!< Configure XTAL32M */
0 commit comments