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