xref: /openbmc/u-boot/arch/arm/include/asm/arch-rockchip/cru_rk3368.h (revision 83d290c56fab2d38cd1ab4c4cc7099559c1d5046)
1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */
2d1dcf852SAndy Yan /*
3d1dcf852SAndy Yan  * (C) Copyright 2017 Rockchip Electronics Co., Ltd
4d1dcf852SAndy Yan  * Author: Andy Yan <andy.yan@rock-chips.com>
5d1dcf852SAndy Yan  */
6d1dcf852SAndy Yan #ifndef _ASM_ARCH_CRU_RK3368_H
7d1dcf852SAndy Yan #define _ASM_ARCH_CRU_RK3368_H
8d1dcf852SAndy Yan 
9d1dcf852SAndy Yan #include <common.h>
10d1dcf852SAndy Yan 
11d1dcf852SAndy Yan 
12d1dcf852SAndy Yan /* RK3368 clock numbers */
13d1dcf852SAndy Yan enum rk3368_pll_id {
14d1dcf852SAndy Yan 	APLLB,
15d1dcf852SAndy Yan 	APLLL,
16d1dcf852SAndy Yan 	DPLL,
17d1dcf852SAndy Yan 	CPLL,
18d1dcf852SAndy Yan 	GPLL,
19d1dcf852SAndy Yan 	NPLL,
20d1dcf852SAndy Yan 	PLL_COUNT,
21d1dcf852SAndy Yan };
22d1dcf852SAndy Yan 
23d1dcf852SAndy Yan struct rk3368_cru {
24d1dcf852SAndy Yan 	struct rk3368_pll {
25d1dcf852SAndy Yan 		unsigned int con0;
26d1dcf852SAndy Yan 		unsigned int con1;
27d1dcf852SAndy Yan 		unsigned int con2;
28d1dcf852SAndy Yan 		unsigned int con3;
29d1dcf852SAndy Yan 	} pll[6];
30d1dcf852SAndy Yan 	unsigned int reserved[0x28];
31d1dcf852SAndy Yan 	unsigned int clksel_con[56];
32d1dcf852SAndy Yan 	unsigned int reserved1[8];
33d1dcf852SAndy Yan 	unsigned int clkgate_con[25];
34d1dcf852SAndy Yan 	unsigned int reserved2[7];
35d1dcf852SAndy Yan 	unsigned int glb_srst_fst_val;
36d1dcf852SAndy Yan 	unsigned int glb_srst_snd_val;
37d1dcf852SAndy Yan 	unsigned int reserved3[0x1e];
38d1dcf852SAndy Yan 	unsigned int softrst_con[15];
39d1dcf852SAndy Yan 	unsigned int reserved4[0x11];
40d1dcf852SAndy Yan 	unsigned int misc_con;
41d1dcf852SAndy Yan 	unsigned int glb_cnt_th;
42d1dcf852SAndy Yan 	unsigned int glb_rst_con;
43d1dcf852SAndy Yan 	unsigned int glb_rst_st;
44d1dcf852SAndy Yan 	unsigned int reserved5[0x1c];
45d1dcf852SAndy Yan 	unsigned int sdmmc_con[2];
46d1dcf852SAndy Yan 	unsigned int sdio0_con[2];
47d1dcf852SAndy Yan 	unsigned int sdio1_con[2];
48d1dcf852SAndy Yan 	unsigned int emmc_con[2];
49d1dcf852SAndy Yan };
50d1dcf852SAndy Yan check_member(rk3368_cru, emmc_con[1], 0x41c);
51d1dcf852SAndy Yan 
52d1dcf852SAndy Yan struct rk3368_clk_priv {
53d1dcf852SAndy Yan 	struct rk3368_cru *cru;
54d1dcf852SAndy Yan };
55d1dcf852SAndy Yan 
56d1dcf852SAndy Yan enum {
57d1dcf852SAndy Yan 	/* PLL CON0 */
58d1dcf852SAndy Yan 	PLL_NR_SHIFT			= 8,
59d1dcf852SAndy Yan 	PLL_NR_MASK			= GENMASK(13, 8),
60d1dcf852SAndy Yan 	PLL_OD_SHIFT			= 0,
61d1dcf852SAndy Yan 	PLL_OD_MASK			= GENMASK(3, 0),
62d1dcf852SAndy Yan 
63d1dcf852SAndy Yan 	/* PLL CON1 */
64d1dcf852SAndy Yan 	PLL_LOCK_STA			= BIT(31),
65d1dcf852SAndy Yan 	PLL_NF_SHIFT			= 0,
66d1dcf852SAndy Yan 	PLL_NF_MASK			= GENMASK(12, 0),
67d1dcf852SAndy Yan 
68d1dcf852SAndy Yan 	/* PLL CON2 */
69d1dcf852SAndy Yan 	PLL_BWADJ_SHIFT			= 0,
70d1dcf852SAndy Yan 	PLL_BWADJ_MASK			= GENMASK(11, 0),
71d1dcf852SAndy Yan 
72d1dcf852SAndy Yan 	/* PLL CON3 */
73d1dcf852SAndy Yan 	PLL_MODE_SHIFT			= 8,
74d1dcf852SAndy Yan 	PLL_MODE_MASK			= GENMASK(9, 8),
75d1dcf852SAndy Yan 	PLL_MODE_SLOW			= 0,
76d1dcf852SAndy Yan 	PLL_MODE_NORMAL			= 1,
77d1dcf852SAndy Yan 	PLL_MODE_DEEP_SLOW		= 3,
78d1dcf852SAndy Yan 	PLL_RESET_SHIFT			= 5,
79d1dcf852SAndy Yan 	PLL_RESET			= 1,
80d1dcf852SAndy Yan 	PLL_RESET_MASK			= GENMASK(5, 5),
81d1dcf852SAndy Yan 
82d1dcf852SAndy Yan 	/* CLKSEL12_CON */
83d1dcf852SAndy Yan 	MCU_STCLK_DIV_SHIFT		= 8,
84d1dcf852SAndy Yan 	MCU_STCLK_DIV_MASK		= GENMASK(10, 8),
85d1dcf852SAndy Yan 	MCU_PLL_SEL_SHIFT		= 7,
86d1dcf852SAndy Yan 	MCU_PLL_SEL_MASK		= BIT(7),
87d1dcf852SAndy Yan 	MCU_PLL_SEL_CPLL		= 0,
88d1dcf852SAndy Yan 	MCU_PLL_SEL_GPLL		= 1,
89d1dcf852SAndy Yan 	MCU_CLK_DIV_SHIFT		= 0,
90d1dcf852SAndy Yan 	MCU_CLK_DIV_MASK		= GENMASK(4, 0),
91d1dcf852SAndy Yan 
92615514c1SDavid Wu 	/* CLKSEL_CON25 */
93615514c1SDavid Wu 	CLK_SARADC_DIV_CON_SHIFT	= 8,
94615514c1SDavid Wu 	CLK_SARADC_DIV_CON_MASK		= GENMASK(15, 8),
95615514c1SDavid Wu 	CLK_SARADC_DIV_CON_WIDTH	= 8,
96615514c1SDavid Wu 
97df0ae000SPhilipp Tomsich 	/* CLKSEL43_CON */
9864a12202SDavid Wu 	GMAC_DIV_CON_SHIFT		= 0x0,
9964a12202SDavid Wu 	GMAC_DIV_CON_MASK		= GENMASK(4, 0),
10064a12202SDavid Wu 	GMAC_PLL_SHIFT			= 6,
10164a12202SDavid Wu 	GMAC_PLL_MASK			= GENMASK(7, 6),
10264a12202SDavid Wu 	GMAC_PLL_SELECT_NEW		= (0x0 << GMAC_PLL_SHIFT),
10364a12202SDavid Wu 	GMAC_PLL_SELECT_CODEC		= (0x1 << GMAC_PLL_SHIFT),
10464a12202SDavid Wu 	GMAC_PLL_SELECT_GENERAL		= (0x2 << GMAC_PLL_SHIFT),
105df0ae000SPhilipp Tomsich 	GMAC_MUX_SEL_EXTCLK             = BIT(8),
106df0ae000SPhilipp Tomsich 
107d1dcf852SAndy Yan 	/* CLKSEL51_CON */
108d1dcf852SAndy Yan 	MMC_PLL_SEL_SHIFT		= 8,
109d1dcf852SAndy Yan 	MMC_PLL_SEL_MASK		= GENMASK(9, 8),
110f5a43295SPhilipp Tomsich 	MMC_PLL_SEL_CPLL		= (0 << MMC_PLL_SEL_SHIFT),
111f5a43295SPhilipp Tomsich 	MMC_PLL_SEL_GPLL                = (1 << MMC_PLL_SEL_SHIFT),
112f5a43295SPhilipp Tomsich 	MMC_PLL_SEL_USBPHY_480M         = (2 << MMC_PLL_SEL_SHIFT),
113f5a43295SPhilipp Tomsich 	MMC_PLL_SEL_24M                 = (3 << MMC_PLL_SEL_SHIFT),
114d1dcf852SAndy Yan 	MMC_CLK_DIV_SHIFT		= 0,
115d1dcf852SAndy Yan 	MMC_CLK_DIV_MASK		= GENMASK(6, 0),
116d1dcf852SAndy Yan 
117d1dcf852SAndy Yan 	/* SOFTRST1_CON */
118d1dcf852SAndy Yan 	MCU_PO_SRST_MASK		= BIT(13),
119d1dcf852SAndy Yan 	MCU_SYS_SRST_MASK		= BIT(12),
12005c57e12SPhilipp Tomsich 	DMA1_SRST_REQ                   = BIT(2),
12105c57e12SPhilipp Tomsich 
12205c57e12SPhilipp Tomsich 	/* SOFTRST4_CON */
12305c57e12SPhilipp Tomsich 	DMA2_SRST_REQ                   = BIT(0),
124d1dcf852SAndy Yan 
125d1dcf852SAndy Yan 	/* GLB_RST_CON */
126d1dcf852SAndy Yan 	PMU_GLB_SRST_CTRL_SHIFT		= 2,
127d1dcf852SAndy Yan 	PMU_GLB_SRST_CTRL_MASK		= GENMASK(3, 2),
128d1dcf852SAndy Yan 	PMU_RST_BY_FST_GLB_SRST 	= 0,
129d1dcf852SAndy Yan 	PMU_RST_BY_SND_GLB_SRST 	= 1,
130d1dcf852SAndy Yan 	PMU_RST_DISABLE			= 2,
131d1dcf852SAndy Yan 	WDT_GLB_SRST_CTRL_SHIFT		= 1,
132d1dcf852SAndy Yan 	WDT_GLB_SRST_CTRL_MASK		= BIT(1),
133d1dcf852SAndy Yan 	WDT_TRIGGER_SND_GLB_SRST 	= 0,
134d1dcf852SAndy Yan 	WDT_TRIGGER_FST_GLB_SRST 	= 1,
135d1dcf852SAndy Yan 	TSADC_GLB_SRST_CTRL_SHIFT 	= 0,
136d1dcf852SAndy Yan 	TSADC_GLB_SRST_CTRL_MASK  	= BIT(0),
137d1dcf852SAndy Yan 	TSADC_TRIGGER_SND_GLB_SRST 	= 0,
138d1dcf852SAndy Yan 	TSADC_TRIGGER_FST_GLB_SRST 	= 1,
139d1dcf852SAndy Yan 
140d1dcf852SAndy Yan };
141d1dcf852SAndy Yan #endif
142