@@ -448,6 +448,31 @@ static uint16_t gCptsClkSrcValMap[] =
448448 [SOC_RcmPeripheralClockSource_DPLL_PER_HSDIV0_CLKOUT2 ] = UNSUPPORTED_CLOCK_SOURCE ,
449449};
450450
451+ /**
452+ * @brief
453+ * Mapping Array for CPSW_5_50_250
454+ *
455+ * @details
456+ * Mapping Array between Clock mode and Clock Mode Value for CPSW_5_50_250
457+ */
458+ static uint16_t gCpswClkSrcValMap [] =
459+ {
460+ [SOC_RcmPeripheralClockSource_XTALCLK ] = 0x111U ,
461+ [SOC_RcmPeripheralClockSource_SYS_CLK ] = 0x222U ,
462+ [SOC_RcmPeripheralClockSource_WUCPUCLK ] = 0x000U ,
463+ [SOC_RcmPeripheralClockSource_EXT_REFCLK ] = 0x666U ,
464+ [SOC_RcmPeripheralClockSource_RCCLK10M ] = 0x555U ,
465+ [SOC_RcmPeripheralClockSource_RCCLK32K ] = UNSUPPORTED_CLOCK_SOURCE ,
466+ [SOC_RcmPeripheralClockSource_CTPS_GENF0 ] = UNSUPPORTED_CLOCK_SOURCE ,
467+ [SOC_RcmPeripheralClockSource_DPLL_CORE_HSDIV0_CLKOUT0 ] = UNSUPPORTED_CLOCK_SOURCE ,
468+ [SOC_RcmPeripheralClockSource_DPLL_CORE_HSDIV0_CLKOUT1 ] = 0x333U ,
469+ [SOC_RcmPeripheralClockSource_DPLL_CORE_HSDIV0_CLKOUT2 ] = UNSUPPORTED_CLOCK_SOURCE ,
470+ [SOC_RcmPeripheralClockSource_DPLL_CORE_HSDIV0_CLKOUT3 ] = UNSUPPORTED_CLOCK_SOURCE ,
471+ [SOC_RcmPeripheralClockSource_DPLL_ETH_HSDIV0_CLKOUT0 ] = 0x444U ,
472+ [SOC_RcmPeripheralClockSource_DPLL_PER_HSDIV0_CLKOUT0 ] = UNSUPPORTED_CLOCK_SOURCE ,
473+ [SOC_RcmPeripheralClockSource_DPLL_PER_HSDIV0_CLKOUT2 ] = UNSUPPORTED_CLOCK_SOURCE ,
474+ };
475+
451476/**
452477 * @brief
453478 * Mapping Array for GPMC
@@ -1087,6 +1112,13 @@ static void SOC_rcmGetClkSrcAndDivReg (SOC_RcmPeripheralId periphId,
10871112 * clkSrcVal = gIcssmUartClkSrcValMap [clkSource ];
10881113 break ;
10891114 }
1115+ case SOC_RcmPeripheralId_CPSW_5_50_250 :
1116+ {
1117+ * clkSrcReg = & (ptrMSSRCMRegs -> CPSW_5_50_250_CLK_MUX_CTRL );
1118+ * clkdDivReg = NULL ; /* No Divisor register for CPSW */
1119+ * clkSrcVal = gCpswClkSrcValMap [clkSource ];
1120+ break ;
1121+ }
10901122 case SOC_RcmPeripheralId_CPTS :
10911123 {
10921124 * clkSrcReg = & (ptrMSSRCMRegs -> CPTS_CLK_SRC_SEL );
@@ -2368,25 +2400,43 @@ int32_t SOC_rcmSetPeripheralClock (SOC_RcmPeripheralId periphId,
23682400 clkDivisor = SOC_rcmGetModuleClkDivVal (Finp , freqHz );
23692401 SOC_rcmGetClkSrcAndDivReg (periphId , clkSource , & clkSrcVal , & ptrClkSrcReg , & ptrClkDivReg );
23702402
2371- if (( ptrClkSrcReg != NULL ) && ( ptrClkDivReg != NULL ) && ( clkSrcVal != 0x888U ) )
2403+ if ( periphId == SOC_RcmPeripheralId_CPSW_5_50_250 )
23722404 {
2373- uint16_t clkDivVal ;
2374-
2375- /* Create the Divider Value to be programmed */
2376- clkDivVal = (( uint16_t ) clkDivisor & 0xFU );
2377- clkDivVal = ( clkDivVal | ( clkDivVal << 4U ) | ( clkDivVal << 8U ) );
2378-
2379- /* Write the Divider Value */
2380- * ptrClkDivReg = SOC_rcmInsert16 ( * ptrClkDivReg , 11U , 0U , clkDivVal );
2381-
2382- /* Write the Clock Source Selection Value */
2383- * ptrClkSrcReg = SOC_rcmInsert16 ( * ptrClkSrcReg , 11U , 0U , clkSrcVal ) ;
2384- retVal = SystemP_SUCCESS ;
2405+ /* CPSW Clock doesn't have Sel and Div registers. It has Mux register which is passed as Sel. */
2406+ if (( ptrClkSrcReg != NULL ) && ( clkSrcVal != 0x888U ))
2407+ {
2408+ /* Write the Clock Mux Value */
2409+ * ptrClkSrcReg = SOC_rcmInsert16 ( * ptrClkSrcReg , 11U , 0U , clkSrcVal );
2410+ retVal = SystemP_SUCCESS ;
2411+ }
2412+ else
2413+ {
2414+ /* Error */
2415+ retVal = SystemP_FAILURE ;
2416+ }
23852417 }
23862418 else
23872419 {
2388- /* Error */
2389- retVal = SystemP_FAILURE ;
2420+ if ((ptrClkSrcReg != NULL ) && (ptrClkDivReg != NULL ) && (clkSrcVal != 0x888U ))
2421+ {
2422+ uint16_t clkDivVal ;
2423+
2424+ /* Create the Divider Value to be programmed */
2425+ clkDivVal = ((uint16_t )clkDivisor & 0xFU );
2426+ clkDivVal = (clkDivVal | (clkDivVal << 4U ) | (clkDivVal << 8U ));
2427+
2428+ /* Write the Divider Value */
2429+ * ptrClkDivReg = SOC_rcmInsert16 (* ptrClkDivReg , 11U , 0U , clkDivVal );
2430+
2431+ /* Write the Clock Source Selection Value */
2432+ * ptrClkSrcReg = SOC_rcmInsert16 (* ptrClkSrcReg , 11U , 0U , clkSrcVal );
2433+ retVal = SystemP_SUCCESS ;
2434+ }
2435+ else
2436+ {
2437+ /* Error */
2438+ retVal = SystemP_FAILURE ;
2439+ }
23902440 }
23912441
23922442 return (retVal );
@@ -2700,6 +2750,11 @@ int32_t SOC_rcmEnablePeripheralClock(SOC_RcmPeripheralId periphId, uint32_t enab
27002750 }
27012751 break ;
27022752 }
2753+ case SOC_RcmPeripheralId_CPSW_5_50_250 :
2754+ {
2755+ /* Do nothing since there is no GATE register */
2756+ break ;
2757+ }
27032758 case SOC_RcmPeripheralId_GPMC :
27042759 {
27052760 if (enable == 1 )
0 commit comments