1086ee20fSGhennadi Procopciuc /* SPDX-License-Identifier: BSD-3-Clause */ 2086ee20fSGhennadi Procopciuc /* 3*cf6d73d4SGhennadi Procopciuc * Copyright 2024-2025 NXP 4086ee20fSGhennadi Procopciuc */ 5086ee20fSGhennadi Procopciuc #ifndef S32CC_CLK_IDS_H 6086ee20fSGhennadi Procopciuc #define S32CC_CLK_IDS_H 7086ee20fSGhennadi Procopciuc 8086ee20fSGhennadi Procopciuc #include <stdint.h> 9086ee20fSGhennadi Procopciuc #include <lib/utils_def.h> 10086ee20fSGhennadi Procopciuc 11086ee20fSGhennadi Procopciuc /** 12086ee20fSGhennadi Procopciuc * Clock ID encoding: 13086ee20fSGhennadi Procopciuc * 31:30 bits = Type of the clock 14086ee20fSGhennadi Procopciuc * 29:0 bits = Clock ID within the clock category 15086ee20fSGhennadi Procopciuc */ 16086ee20fSGhennadi Procopciuc #define S32CC_CLK_ID_MASK GENMASK_64(29U, 0U) 17086ee20fSGhennadi Procopciuc #define S32CC_CLK_TYPE_MASK GENMASK_64(31U, 30U) 18086ee20fSGhennadi Procopciuc #define S32CC_CLK_ID(ID) (((unsigned long)(ID)) & S32CC_CLK_ID_MASK) 19086ee20fSGhennadi Procopciuc #define S32CC_CLK_TYPE(ID) (((unsigned long)(ID)) & S32CC_CLK_TYPE_MASK) 20086ee20fSGhennadi Procopciuc #define S32CC_CLK(TAG, ID) (S32CC_CLK_ID(ID) | (S32CC_CLK_TYPE((TAG) << 30U))) 21086ee20fSGhennadi Procopciuc #define S32CC_HW_CLK(ID) S32CC_CLK(0UL, U(ID)) 22086ee20fSGhennadi Procopciuc #define S32CC_SW_CLK(SUB, ID) S32CC_CLK(2UL | ((SUB) & 1UL), U(ID)) 23086ee20fSGhennadi Procopciuc 24086ee20fSGhennadi Procopciuc /* SW clocks subcategories */ 25086ee20fSGhennadi Procopciuc #define S32CC_ARCH_CLK(ID) S32CC_SW_CLK(0UL, ID) 26086ee20fSGhennadi Procopciuc #define S32CC_PLAT_CLK(ID) S32CC_SW_CLK(1UL, ID) 27086ee20fSGhennadi Procopciuc 28086ee20fSGhennadi Procopciuc /* IDs for clock selectors listed in S32CC Reference Manuals */ 29086ee20fSGhennadi Procopciuc #define S32CC_CLK_FIRC S32CC_HW_CLK(0) 30086ee20fSGhennadi Procopciuc #define S32CC_CLK_SIRC S32CC_HW_CLK(1) 31086ee20fSGhennadi Procopciuc #define S32CC_CLK_FXOSC S32CC_HW_CLK(2) 32086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_PHI0 S32CC_HW_CLK(4) 33086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_PHI1 S32CC_HW_CLK(5) 34086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_PHI2 S32CC_HW_CLK(6) 35086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_PHI3 S32CC_HW_CLK(7) 36086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_PHI4 S32CC_HW_CLK(8) 37086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_PHI5 S32CC_HW_CLK(9) 38086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_PHI6 S32CC_HW_CLK(10) 39086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_PHI7 S32CC_HW_CLK(11) 40086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_DFS1 S32CC_HW_CLK(12) 41086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_DFS2 S32CC_HW_CLK(13) 42086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_DFS3 S32CC_HW_CLK(14) 43086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_DFS4 S32CC_HW_CLK(15) 44086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_DFS5 S32CC_HW_CLK(16) 45086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_DFS6 S32CC_HW_CLK(17) 46086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_PHI0 S32CC_HW_CLK(18) 47086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_PHI1 S32CC_HW_CLK(19) 48086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_PHI2 S32CC_HW_CLK(20) 49086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_PHI3 S32CC_HW_CLK(21) 50086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_PHI4 S32CC_HW_CLK(22) 51086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_PHI5 S32CC_HW_CLK(23) 52086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_PHI6 S32CC_HW_CLK(24) 53086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_PHI7 S32CC_HW_CLK(25) 54086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_DFS1 S32CC_HW_CLK(26) 55086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_DFS2 S32CC_HW_CLK(27) 56086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_DFS3 S32CC_HW_CLK(28) 57086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_DFS4 S32CC_HW_CLK(29) 58086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_DFS5 S32CC_HW_CLK(30) 59086ee20fSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_DFS6 S32CC_HW_CLK(31) 60086ee20fSGhennadi Procopciuc #define S32CC_CLK_FTM0_EXT_REF S32CC_HW_CLK(34) 61086ee20fSGhennadi Procopciuc #define S32CC_CLK_FTM1_EXT_REF S32CC_HW_CLK(35) 62086ee20fSGhennadi Procopciuc #define S32CC_CLK_DDR_PLL_PHI0 S32CC_HW_CLK(36) 63086ee20fSGhennadi Procopciuc #define S32CC_CLK_GMAC0_EXT_TX S32CC_HW_CLK(37) 64086ee20fSGhennadi Procopciuc #define S32CC_CLK_GMAC0_EXT_RX S32CC_HW_CLK(38) 65086ee20fSGhennadi Procopciuc #define S32CC_CLK_GMAC0_EXT_REF S32CC_HW_CLK(39) 66086ee20fSGhennadi Procopciuc #define S32CC_CLK_SERDES0_LANE0_TX S32CC_HW_CLK(40) 67086ee20fSGhennadi Procopciuc #define S32CC_CLK_SERDES0_LANE0_CDR S32CC_HW_CLK(41) 68086ee20fSGhennadi Procopciuc #define S32CC_CLK_GMAC0_EXT_TS S32CC_HW_CLK(44) 69086ee20fSGhennadi Procopciuc #define S32CC_CLK_GMAC0_REF_DIV S32CC_HW_CLK(45) 70086ee20fSGhennadi Procopciuc 71086ee20fSGhennadi Procopciuc /* Software defined clock IDs */ 72086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_MUX S32CC_ARCH_CLK(0) 73086ee20fSGhennadi Procopciuc #define S32CC_CLK_ARM_PLL_VCO S32CC_ARCH_CLK(1) 74086ee20fSGhennadi Procopciuc 75086ee20fSGhennadi Procopciuc /* ARM CGM1 clocks */ 76086ee20fSGhennadi Procopciuc #define S32CC_CLK_MC_CGM1_MUX0 S32CC_ARCH_CLK(2) 77086ee20fSGhennadi Procopciuc #define S32CC_CLK_A53_CORE S32CC_ARCH_CLK(3) 78086ee20fSGhennadi Procopciuc #define S32CC_CLK_A53_CORE_DIV2 S32CC_ARCH_CLK(4) 79086ee20fSGhennadi Procopciuc #define S32CC_CLK_A53_CORE_DIV10 S32CC_ARCH_CLK(5) 80086ee20fSGhennadi Procopciuc 815692f881SGhennadi Procopciuc /* XBAR clock*/ 825692f881SGhennadi Procopciuc #define S32CC_CLK_MC_CGM0_MUX0 S32CC_ARCH_CLK(6) 835692f881SGhennadi Procopciuc #define S32CC_CLK_XBAR_2X S32CC_ARCH_CLK(7) 845692f881SGhennadi Procopciuc #define S32CC_CLK_XBAR S32CC_ARCH_CLK(8) 855692f881SGhennadi Procopciuc #define S32CC_CLK_XBAR_DIV2 S32CC_ARCH_CLK(9) 865692f881SGhennadi Procopciuc #define S32CC_CLK_XBAR_DIV3 S32CC_ARCH_CLK(10) 875692f881SGhennadi Procopciuc #define S32CC_CLK_XBAR_DIV4 S32CC_ARCH_CLK(11) 885692f881SGhennadi Procopciuc #define S32CC_CLK_XBAR_DIV6 S32CC_ARCH_CLK(12) 895692f881SGhennadi Procopciuc 908653352aSGhennadi Procopciuc /* Periph PLL */ 918653352aSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_MUX S32CC_ARCH_CLK(13) 928653352aSGhennadi Procopciuc #define S32CC_CLK_PERIPH_PLL_VCO S32CC_ARCH_CLK(14) 938653352aSGhennadi Procopciuc 94e4462daeSGhennadi Procopciuc #define S32CC_CLK_MC_CGM0_MUX8 S32CC_ARCH_CLK(15) 95e4462daeSGhennadi Procopciuc #define S32CC_CLK_LINFLEX_BAUD S32CC_ARCH_CLK(16) 96e4462daeSGhennadi Procopciuc #define S32CC_CLK_LINFLEX S32CC_ARCH_CLK(17) 97e4462daeSGhennadi Procopciuc 9818c2b137SGhennadi Procopciuc /* DDR PLL */ 9918c2b137SGhennadi Procopciuc #define S32CC_CLK_DDR_PLL_MUX S32CC_ARCH_CLK(18) 10018c2b137SGhennadi Procopciuc #define S32CC_CLK_DDR_PLL_VCO S32CC_ARCH_CLK(19) 10118c2b137SGhennadi Procopciuc 1024a2ca718SGhennadi Procopciuc /* DDR clock */ 1034a2ca718SGhennadi Procopciuc #define S32CC_CLK_MC_CGM5_MUX0 S32CC_ARCH_CLK(20) 1044a2ca718SGhennadi Procopciuc #define S32CC_CLK_DDR S32CC_ARCH_CLK(21) 1054a2ca718SGhennadi Procopciuc 106*cf6d73d4SGhennadi Procopciuc /* USDHC clock */ 107*cf6d73d4SGhennadi Procopciuc #define S32CC_CLK_MC_CGM0_MUX14 S32CC_ARCH_CLK(22) 108*cf6d73d4SGhennadi Procopciuc #define S32CC_CLK_USDHC S32CC_ARCH_CLK(23) 109*cf6d73d4SGhennadi Procopciuc 110086ee20fSGhennadi Procopciuc #endif /* S32CC_CLK_IDS_H */ 111