1*086ee20fSGhennadi Procopciuc /* SPDX-License-Identifier: BSD-3-Clause */ 2*086ee20fSGhennadi Procopciuc /* 3*086ee20fSGhennadi Procopciuc * Copyright 2024 NXP 4*086ee20fSGhennadi Procopciuc */ 5*086ee20fSGhennadi Procopciuc #ifndef S32CC_CLK_IDS_H 6*086ee20fSGhennadi Procopciuc #define S32CC_CLK_IDS_H 7*086ee20fSGhennadi Procopciuc 8*086ee20fSGhennadi Procopciuc #include <stdint.h> 9*086ee20fSGhennadi Procopciuc #include <lib/utils_def.h> 10*086ee20fSGhennadi Procopciuc 11*086ee20fSGhennadi Procopciuc /** 12*086ee20fSGhennadi Procopciuc * Clock ID encoding: 13*086ee20fSGhennadi Procopciuc * 31:30 bits = Type of the clock 14*086ee20fSGhennadi Procopciuc * 29:0 bits = Clock ID within the clock category 15*086ee20fSGhennadi Procopciuc */ 16*086ee20fSGhennadi Procopciuc #define S32CC_CLK_ID_MASK GENMASK_64(29U, 0U) 17*086ee20fSGhennadi Procopciuc #define S32CC_CLK_TYPE_MASK GENMASK_64(31U, 30U) 18*086ee20fSGhennadi Procopciuc #define S32CC_CLK_ID(ID) (((unsigned long)(ID)) & S32CC_CLK_ID_MASK) 19*086ee20fSGhennadi Procopciuc #define S32CC_CLK_TYPE(ID) (((unsigned long)(ID)) & S32CC_CLK_TYPE_MASK) 20*086ee20fSGhennadi Procopciuc #define S32CC_CLK(TAG, ID) (S32CC_CLK_ID(ID) | (S32CC_CLK_TYPE((TAG) << 30U))) 21*086ee20fSGhennadi Procopciuc #define S32CC_HW_CLK(ID) S32CC_CLK(0UL, U(ID)) 22*086ee20fSGhennadi Procopciuc #define S32CC_SW_CLK(SUB, ID) S32CC_CLK(2UL | ((SUB) & 1UL), U(ID)) 23*086ee20fSGhennadi Procopciuc 24*086ee20fSGhennadi Procopciuc /* SW clocks subcategories */ 25*086ee20fSGhennadi Procopciuc #define S32CC_ARCH_CLK(ID) S32CC_SW_CLK(0UL, ID) 26*086ee20fSGhennadi Procopciuc #define S32CC_PLAT_CLK(ID) S32CC_SW_CLK(1UL, ID) 27*086ee20fSGhennadi Procopciuc 28*086ee20fSGhennadi Procopciuc /* IDs for clock selectors listed in S32CC Reference Manuals */ 29*086ee20fSGhennadi Procopciuc #define S32CC_CLK_FIRC S32CC_HW_CLK(0) 30*086ee20fSGhennadi Procopciuc #define S32CC_CLK_SIRC S32CC_HW_CLK(1) 31*086ee20fSGhennadi Procopciuc #define S32CC_CLK_FXOSC S32CC_HW_CLK(2) 32*086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_PHI0 S32CC_HW_CLK(4) 33*086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_PHI1 S32CC_HW_CLK(5) 34*086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_PHI2 S32CC_HW_CLK(6) 35*086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_PHI3 S32CC_HW_CLK(7) 36*086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_PHI4 S32CC_HW_CLK(8) 37*086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_PHI5 S32CC_HW_CLK(9) 38*086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_PHI6 S32CC_HW_CLK(10) 39*086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_PHI7 S32CC_HW_CLK(11) 40*086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_DFS1 S32CC_HW_CLK(12) 41*086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_DFS2 S32CC_HW_CLK(13) 42*086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_DFS3 S32CC_HW_CLK(14) 43*086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_DFS4 S32CC_HW_CLK(15) 44*086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_DFS5 S32CC_HW_CLK(16) 45*086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_DFS6 S32CC_HW_CLK(17) 46*086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_PHI0 S32CC_HW_CLK(18) 47*086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_PHI1 S32CC_HW_CLK(19) 48*086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_PHI2 S32CC_HW_CLK(20) 49*086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_PHI3 S32CC_HW_CLK(21) 50*086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_PHI4 S32CC_HW_CLK(22) 51*086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_PHI5 S32CC_HW_CLK(23) 52*086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_PHI6 S32CC_HW_CLK(24) 53*086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_PHI7 S32CC_HW_CLK(25) 54*086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_DFS1 S32CC_HW_CLK(26) 55*086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_DFS2 S32CC_HW_CLK(27) 56*086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_DFS3 S32CC_HW_CLK(28) 57*086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_DFS4 S32CC_HW_CLK(29) 58*086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_DFS5 S32CC_HW_CLK(30) 59*086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_DFS6 S32CC_HW_CLK(31) 60*086ee20fSGhennadi Procopciuc #define S32CC_CLK_FTM0_EXT_REF S32CC_HW_CLK(34) 61*086ee20fSGhennadi Procopciuc #define S32CC_CLK_FTM1_EXT_REF S32CC_HW_CLK(35) 62*086ee20fSGhennadi Procopciuc #define S32CC_CLK_DDR_PLL_PHI0 S32CC_HW_CLK(36) 63*086ee20fSGhennadi Procopciuc #define S32CC_CLK_GMAC0_EXT_TX S32CC_HW_CLK(37) 64*086ee20fSGhennadi Procopciuc #define S32CC_CLK_GMAC0_EXT_RX S32CC_HW_CLK(38) 65*086ee20fSGhennadi Procopciuc #define S32CC_CLK_GMAC0_EXT_REF S32CC_HW_CLK(39) 66*086ee20fSGhennadi Procopciuc #define S32CC_CLK_SERDES0_LANE0_TX S32CC_HW_CLK(40) 67*086ee20fSGhennadi Procopciuc #define S32CC_CLK_SERDES0_LANE0_CDR S32CC_HW_CLK(41) 68*086ee20fSGhennadi Procopciuc #define S32CC_CLK_GMAC0_EXT_TS S32CC_HW_CLK(44) 69*086ee20fSGhennadi Procopciuc #define S32CC_CLK_GMAC0_REF_DIV S32CC_HW_CLK(45) 70*086ee20fSGhennadi Procopciuc 71*086ee20fSGhennadi Procopciuc /* Software defined clock IDs */ 72*086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_MUX S32CC_ARCH_CLK(0) 73*086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_VCO S32CC_ARCH_CLK(1) 74*086ee20fSGhennadi Procopciuc 75*086ee20fSGhennadi Procopciuc /* ARM CGM1 clocks */ 76*086ee20fSGhennadi Procopciuc #define S32CC_CLK_MC_CGM1_MUX0 S32CC_ARCH_CLK(2) 77*086ee20fSGhennadi Procopciuc #define S32CC_CLK_A53_CORE S32CC_ARCH_CLK(3) 78*086ee20fSGhennadi Procopciuc #define S32CC_CLK_A53_CORE_DIV2 S32CC_ARCH_CLK(4) 79*086ee20fSGhennadi Procopciuc #define S32CC_CLK_A53_CORE_DIV10 S32CC_ARCH_CLK(5) 80*086ee20fSGhennadi Procopciuc 81*086ee20fSGhennadi Procopciuc #endif /* S32CC_CLK_IDS_H */ 82