blob: 633f173231b0ff3611e7a93790ee4d138c6992f9 [file] [log] [blame]
Ghennadi Procopciuc48cb7612024-06-11 18:52:17 +03001/* 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#endif /* S32CC_CLK_IDS_H */