1 /* SPDX-License-Identifier: GPL-2.0+ */
3 * Copyright 2018-2019 NXP
5 * Peng Fan <peng.fan@nxp.com>
8 #ifndef _ASM_ARCH_IMX8MM_CLOCK_H
9 #define _ASM_ARCH_IMX8MM_CLOCK_H
11 #define PLL_1443X_RATE(_rate, _m, _p, _s, _k) \
20 #define LOCK_STATUS BIT(31)
21 #define LOCK_SEL_MASK BIT(29)
22 #define CLKE_MASK BIT(11)
23 #define RST_MASK BIT(9)
24 #define BYPASS_MASK BIT(4)
26 #define MDIV_MASK GENMASK(21, 12)
28 #define PDIV_MASK GENMASK(9, 4)
30 #define SDIV_MASK GENMASK(2, 0)
32 #define KDIV_MASK GENMASK(15, 0)
34 struct imx_int_pll_rate_table {
59 GPU_CORE_CLK_ROOT = 3,
60 GPU_SHADER_CLK_ROOT = 4,
61 MAIN_AXI_CLK_ROOT = 16,
62 ENET_AXI_CLK_ROOT = 17,
63 NAND_USDHC_BUS_CLK_ROOT = 18,
64 DISPLAY_AXI_CLK_ROOT = 20,
65 DISPLAY_APB_CLK_ROOT = 21,
66 USB_BUS_CLK_ROOT = 23,
67 GPU_AXI_CLK_ROOT = 24,
68 GPU_AHB_CLK_ROOT = 25,
72 AUDIO_AHB_CLK_ROOT = 34,
75 DRAM_ALT_CLK_ROOT = 64,
76 DRAM_APB_CLK_ROOT = 65,
77 DISPLAY_PIXEL_CLK_ROOT = 74,
83 ENET_REF_CLK_ROOT = 83,
84 ENET_TIMER_CLK_ROOT = 84,
85 ENET_PHY_REF_CLK_ROOT = 85,
98 USB_CORE_REF_CLK_ROOT = 98,
99 USB_PHY_REF_CLK_ROOT = 99,
101 ECSPI1_CLK_ROOT = 101,
102 ECSPI2_CLK_ROOT = 102,
113 TRACE_CLK_ROOT = 113,
115 WRCLK_CLK_ROOT = 115,
118 MIPI_DSI_CORE_CLK_ROOT = 118,
119 DISPLAY_DSI_PHY_REF_CLK_ROOT = 119,
120 MIPI_DSI_DBI_CLK_ROOT = 120,
121 USDHC3_CLK_ROOT = 121,
122 DISPLAY_CAMERA_PIXEL_CLK_ROOT = 122,
123 MIPI_CSI1_PHY_REF_CLK_ROOT = 123,
124 MIPI_CSI2_PHY_REF_CLK_ROOT = 126,
125 MIPI_CSI2_ESC_CLK_ROOT = 127,
126 ECSPI3_CLK_ROOT = 131,
132 enum clk_root_index {
133 ARM_A53_CLK_ROOT = 0,
135 VPU_A53_CLK_ROOT = 2,
138 MAIN_AXI_CLK_ROOT = 16,
139 ENET_AXI_CLK_ROOT = 17,
140 NAND_USDHC_BUS_CLK_ROOT = 18,
141 VPU_BUS_CLK_ROOT = 19,
142 DISPLAY_AXI_CLK_ROOT = 20,
143 DISPLAY_APB_CLK_ROOT = 21,
144 DISPLAY_RTRM_CLK_ROOT = 22,
145 USB_BUS_CLK_ROOT = 23,
146 GPU_AXI_CLK_ROOT = 24,
147 GPU_AHB_CLK_ROOT = 25,
149 NOC_APB_CLK_ROOT = 27,
152 AUDIO_AHB_CLK_ROOT = 34,
153 MIPI_DSI_ESC_RX_CLK_ROOT = 36,
156 DRAM_ALT_CLK_ROOT = 64,
157 DRAM_APB_CLK_ROOT = 65,
158 VPU_G1_CLK_ROOT = 66,
159 VPU_G2_CLK_ROOT = 67,
160 DISPLAY_DTRC_CLK_ROOT = 68,
161 DISPLAY_DC8000_CLK_ROOT = 69,
162 PCIE_CTRL_CLK_ROOT = 70,
163 PCIE_PHY_CLK_ROOT = 71,
164 PCIE_AUX_CLK_ROOT = 72,
165 DC_PIXEL_CLK_ROOT = 73,
166 LCDIF_PIXEL_CLK_ROOT = 74,
173 SPDIF1_CLK_ROOT = 81,
174 SPDIF2_CLK_ROOT = 82,
175 ENET_REF_CLK_ROOT = 83,
176 ENET_TIMER_CLK_ROOT = 84,
177 ENET_PHY_REF_CLK_ROOT = 85,
180 USDHC1_CLK_ROOT = 88,
181 USDHC2_CLK_ROOT = 89,
190 USB_CORE_REF_CLK_ROOT = 98,
191 USB_PHY_REF_CLK_ROOT = 99,
193 ECSPI1_CLK_ROOT = 101,
194 ECSPI2_CLK_ROOT = 102,
205 TRACE_CLK_ROOT = 113,
207 WRCLK_CLK_ROOT = 115,
210 MIPI_DSI_CORE_CLK_ROOT = 118,
211 MIPI_DSI_PHY_REF_CLK_ROOT = 119,
212 MIPI_DSI_DBI_CLK_ROOT = 120,
213 USDHC3_CLK_ROOT = 121,
214 MIPI_CSI1_CORE_CLK_ROOT = 122,
215 MIPI_CSI1_PHY_REF_CLK_ROOT = 123,
216 MIPI_CSI1_ESC_CLK_ROOT = 124,
217 MIPI_CSI2_CORE_CLK_ROOT = 125,
218 MIPI_CSI2_PHY_REF_CLK_ROOT = 126,
219 MIPI_CSI2_ESC_CLK_ROOT = 127,
220 PCIE2_CTRL_CLK_ROOT = 128,
221 PCIE2_PHY_CLK_ROOT = 129,
222 PCIE2_AUX_CLK_ROOT = 130,
223 ECSPI3_CLK_ROOT = 131,
225 VPU_H1_CLK_ROOT = 133,
237 SYSTEM_PLL1_800M_CLK,
238 SYSTEM_PLL1_400M_CLK,
239 SYSTEM_PLL1_266M_CLK,
240 SYSTEM_PLL1_200M_CLK,
241 SYSTEM_PLL1_160M_CLK,
242 SYSTEM_PLL1_133M_CLK,
243 SYSTEM_PLL1_100M_CLK,
246 SYSTEM_PLL2_1000M_CLK,
247 SYSTEM_PLL2_500M_CLK,
248 SYSTEM_PLL2_333M_CLK,
249 SYSTEM_PLL2_250M_CLK,
250 SYSTEM_PLL2_200M_CLK,
251 SYSTEM_PLL2_166M_CLK,
252 SYSTEM_PLL2_125M_CLK,
253 SYSTEM_PLL2_100M_CLK,
267 enum clk_ccgr_index {
299 CCGR_SNVSMIX_IPG_CLK = 32,
312 CCGR_QOS_DISPMIX = 45,
313 CCGR_QOS_ETHENET = 46,
330 CCGR_SIM_DISPLAY = 63,
335 CCGR_SIM_WAKEUP = 68,
344 CCGR_USB_MSCALE_PL301 = 77,
362 CCGR_TEMP_SENSOR = 98,
363 CCGR_VPUMIX_BUS = 99,
369 CLK_SRC_CKIL_SYNC_REQ = 0,
370 CLK_SRC_ARM_PLL_EN = 1,
371 CLK_SRC_GPU_PLL_EN = 2,
372 CLK_SRC_VPU_PLL_EN = 3,
373 CLK_SRC_DRAM_PLL_EN = 4,
374 CLK_SRC_SYSTEM_PLL1_EN = 5,
375 CLK_SRC_SYSTEM_PLL2_EN = 6,
376 CLK_SRC_SYSTEM_PLL3_EN = 7,
377 CLK_SRC_AUDIO_PLL1_EN = 8,
378 CLK_SRC_AUDIO_PLL2_EN = 9,
379 CLK_SRC_VIDEO_PLL1_EN = 10,
380 CLK_SRC_RESERVED = 11,
381 CLK_SRC_ARM_PLL = 12,
382 CLK_SRC_GPU_PLL = 13,
383 CLK_SRC_VPU_PLL = 14,
384 CLK_SRC_DRAM_PLL = 15,
385 CLK_SRC_SYSTEM_PLL1_800M = 16,
386 CLK_SRC_SYSTEM_PLL1_400M = 17,
387 CLK_SRC_SYSTEM_PLL1_266M = 18,
388 CLK_SRC_SYSTEM_PLL1_200M = 19,
389 CLK_SRC_SYSTEM_PLL1_160M = 20,
390 CLK_SRC_SYSTEM_PLL1_133M = 21,
391 CLK_SRC_SYSTEM_PLL1_100M = 22,
392 CLK_SRC_SYSTEM_PLL1_80M = 23,
393 CLK_SRC_SYSTEM_PLL1_40M = 24,
394 CLK_SRC_SYSTEM_PLL2_1000M = 25,
395 CLK_SRC_SYSTEM_PLL2_500M = 26,
396 CLK_SRC_SYSTEM_PLL2_333M = 27,
397 CLK_SRC_SYSTEM_PLL2_250M = 28,
398 CLK_SRC_SYSTEM_PLL2_200M = 29,
399 CLK_SRC_SYSTEM_PLL2_166M = 30,
400 CLK_SRC_SYSTEM_PLL2_125M = 31,
401 CLK_SRC_SYSTEM_PLL2_100M = 32,
402 CLK_SRC_SYSTEM_PLL2_50M = 33,
403 CLK_SRC_SYSTEM_PLL3 = 34,
404 CLK_SRC_AUDIO_PLL1 = 35,
405 CLK_SRC_AUDIO_PLL2 = 36,
406 CLK_SRC_VIDEO_PLL1 = 37,
409 #define INTPLL_LOCK_MASK BIT(31)
410 #define INTPLL_LOCK_SEL_MASK BIT(29)
411 #define INTPLL_EXT_BYPASS_MASK BIT(28)
412 #define INTPLL_DIV20_CLKE_MASK BIT(27)
413 #define INTPLL_DIV20_CLKE_OVERRIDE_MASK BIT(26)
414 #define INTPLL_DIV10_CLKE_MASK BIT(25)
415 #define INTPLL_DIV10_CLKE_OVERRIDE_MASK BIT(24)
416 #define INTPLL_DIV8_CLKE_MASK BIT(23)
417 #define INTPLL_DIV8_CLKE_OVERRIDE_MASK BIT(22)
418 #define INTPLL_DIV6_CLKE_MASK BIT(21)
419 #define INTPLL_DIV6_CLKE_OVERRIDE_MASK BIT(20)
420 #define INTPLL_DIV5_CLKE_MASK BIT(19)
421 #define INTPLL_DIV5_CLKE_OVERRIDE_MASK BIT(18)
422 #define INTPLL_DIV4_CLKE_MASK BIT(17)
423 #define INTPLL_DIV4_CLKE_OVERRIDE_MASK BIT(16)
424 #define INTPLL_DIV3_CLKE_MASK BIT(15)
425 #define INTPLL_DIV3_CLKE_OVERRIDE_MASK BIT(14)
426 #define INTPLL_DIV2_CLKE_MASK BIT(13)
427 #define INTPLL_DIV2_CLKE_OVERRIDE_MASK BIT(12)
428 #define INTPLL_CLKE_MASK BIT(11)
429 #define INTPLL_CLKE_OVERRIDE_MASK BIT(10)
430 #define INTPLL_RST_MASK BIT(9)
431 #define INTPLL_RST_OVERRIDE_MASK BIT(8)
432 #define INTPLL_BYPASS_MASK BIT(4)
433 #define INTPLL_PAD_CLK_SEL_MASK GENMASK(3, 2)
434 #define INTPLL_REF_CLK_SEL_MASK GENMASK(1, 0)
436 #define INTPLL_MAIN_DIV_MASK GENMASK(21, 12)
437 #define INTPLL_MAIN_DIV_VAL(n) ((n << 12) & GENMASK(21, 12))
438 #define INTPLL_MAIN_DIV_SHIFT 12
439 #define INTPLL_PRE_DIV_MASK GENMASK(9, 4)
440 #define INTPLL_PRE_DIV_VAL(n) ((n << 4) & GENMASK(9, 4))
441 #define INTPLL_PRE_DIV_SHIFT 4
442 #define INTPLL_POST_DIV_MASK GENMASK(2, 0)
443 #define INTPLL_POST_DIV_VAL(n) ((n << 0) & GENMASK(2, 0))
444 #define INTPLL_POST_DIV_SHIFT 0
446 #define INTPLL_LOCK_CON_DLY_MASK GENMASK(5, 4)
447 #define INTPLL_LOCK_CON_DLY_SHIFT 4
448 #define INTPLL_LOCK_CON_OUT_MASK GENMASK(3, 2)
449 #define INTPLL_LOCK_CON_OUT_SHIFT 2
450 #define INTPLL_LOCK_CON_IN_MASK GENMASK(1, 0)
451 #define INTPLL_LOCK_CON_IN_SHIFT 0
453 #define INTPLL_LRD_EN_MASK BIT(21)
454 #define INTPLL_FOUT_MASK BIT(20)
455 #define INTPLL_AFC_SEL_MASK BIT(19)
456 #define INTPLL_PBIAS_CTRL_MASK BIT(18)
457 #define INTPLL_PBIAS_CTRL_EN_MASK BIT(17)
458 #define INTPLL_AFCINIT_SEL_MASK BIT(16)
459 #define INTPLL_FSEL_MASK BIT(14)
460 #define INTPLL_FEED_EN_MASK BIT(13)
461 #define INTPLL_EXTAFC_MASK GENMASK(7, 3)
462 #define INTPLL_AFC_EN_MASK BIT(2)
463 #define INTPLL_ICP_MASK GENMASK(1, 0)