coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
clock.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef __SOC_ROCKCHIP_RK3399_CLOCK_H__
4 #define __SOC_ROCKCHIP_RK3399_CLOCK_H__
5 
6 #include <soc/addressmap.h>
7 #include <types.h>
8 
11  u32 reserved[0x1a];
14  u32 reserved2[0x18];
22 };
23 check_member(rk3399_pmucru_reg, pmucru_gatedis_con[1], 0x134);
24 
39  u32 reserved6[0x0a];
41  u32 reserved7[0x14];
43  u32 reserved8[0x1d];
45  u32 reserved9[0x2b];
52  u32 reserved10[0x1a];
56 };
57 check_member(rk3399_cru_reg, sdio1_con[1], 0x594);
58 
59 static struct rk3399_pmucru_reg * const pmucru_ptr = (void *)PMUCRU_BASE;
60 static struct rk3399_cru_reg * const cru_ptr = (void *)CRU_BASE;
61 
62 #define OSC_HZ (24*MHz)
63 #define GPLL_HZ (594*MHz)
64 #define CPLL_HZ (800*MHz)
65 #define PPLL_HZ (676*MHz)
66 
67 #define PMU_PCLK_HZ 96571428
68 
69 #define ACLKM_CORE_HZ (300*MHz)
70 #define ATCLK_CORE_HZ (300*MHz)
71 #define PCLK_DBG_HZ (100*MHz)
72 
73 #define PERIHP_ACLK_HZ (148500*KHz)
74 #define PERIHP_HCLK_HZ (148500*KHz)
75 #define PERIHP_PCLK_HZ (37125*KHz)
76 
77 #define PERILP0_ACLK_HZ (99000*KHz)
78 #define PERILP0_HCLK_HZ (99000*KHz)
79 #define PERILP0_PCLK_HZ (49500*KHz)
80 
81 #define PERILP1_HCLK_HZ (99000*KHz)
82 #define PERILP1_PCLK_HZ (99000*KHz)
83 
84 #define PWM_CLOCK_HZ PMU_PCLK_HZ
85 
89 };
90 
94 };
95 
96 void rkclk_init(void);
97 int rkclk_configure_vop_dclk(u32 vop_id, u32 dclk_hz);
98 void rkclk_configure_cpu(enum apll_frequencies freq, enum cpu_cluster cluster);
99 void rkclk_configure_ddr(unsigned int hz);
100 void rkclk_configure_emmc(void);
101 void rkclk_configure_i2s(unsigned int hz);
102 void rkclk_configure_saradc(unsigned int hz);
103 void rkclk_configure_spi(unsigned int bus, unsigned int hz);
104 void rkclk_configure_tsadc(unsigned int hz);
105 void rkclk_configure_vop_aclk(u32 vop_id, u32 aclk_hz);
106 void rkclk_ddr_reset(u32 ch, u32 ctl, u32 phy);
107 int rkclk_was_watchdog_reset(void);
108 uint32_t rkclk_i2c_clock_for_bus(unsigned int bus);
109 void rkclk_configure_edp(unsigned int hz);
110 void rkclk_configure_mipi(void);
111 
112 #endif /* __SOC_ROCKCHIP_RK3399_CLOCK_H__ */
static struct dramc_channel const ch[2]
check_member(sc7180_gcc, usb30_prim_bcr, 0xf000)
#define CRU_BASE
Definition: addressmap.h:52
void rkclk_configure_cpu(enum apll_frequencies apll_freq)
Definition: clock.c:309
void rkclk_ddr_reset(u32 ch, u32 ctl, u32 phy)
Definition: clock.c:388
int rkclk_was_watchdog_reset(void)
Definition: clock.c:652
void rkclk_configure_tsadc(unsigned int hz)
Definition: clock.c:482
unsigned int rkclk_i2c_clock_for_bus(unsigned int bus)
Definition: clock.c:658
void rkclk_configure_vop_aclk(u32 vop_id, u32 aclk_hz)
Definition: clock.c:587
void rkclk_init(void)
Definition: clock.c:232
void rkclk_configure_ddr(unsigned int hz)
Definition: clock.c:349
void rkclk_configure_edp(void)
Definition: clock.c:565
void rkclk_configure_i2s(unsigned int hz)
Definition: clock.c:451
void rkclk_configure_spi(unsigned int bus, unsigned int hz)
Definition: clock.c:414
apll_frequencies
Definition: clock.h:15
@ APLL_600_MHZ
Definition: clock.h:18
int rkclk_configure_vop_dclk(u32 vop_id, u32 dclk_hz)
Definition: clock.c:610
#define PMUCRU_BASE
Definition: addressmap.h:9
static struct rk3399_cru_reg *const cru_ptr
Definition: clock.h:60
void rkclk_configure_mipi(void)
Definition: clock.c:945
void rkclk_configure_saradc(unsigned int hz)
Definition: clock.c:823
void rkclk_configure_emmc(void)
Definition: clock.c:892
static struct rk3399_pmucru_reg *const pmucru_ptr
Definition: clock.h:59
@ APLL_1512_MHZ
Definition: clock.h:87
cpu_cluster
Definition: clock.h:91
@ CPU_CLUSTER_LITTLE
Definition: clock.h:92
@ CPU_CLUSTER_BIG
Definition: clock.h:93
unsigned int uint32_t
Definition: stdint.h:14
uint32_t u32
Definition: stdint.h:51
Definition: device.h:76
Definition: dw_i2c.c:39
u32 reserved3[2]
Definition: clock.h:33
u32 reserved9[0x2b]
Definition: clock.h:45
u32 cpll_con[6]
Definition: clock.h:32
u32 reserved8[0x1d]
Definition: clock.h:43
u32 sdmmc_con[2]
Definition: clock.h:53
u32 glb_rst_st
Definition: clock.h:51
u32 reserved2[2]
Definition: clock.h:31
u32 reserved5[2]
Definition: clock.h:37
u32 apll_l_con[6]
Definition: clock.h:26
u32 reserved[2]
Definition: clock.h:27
u32 dpll_con[6]
Definition: clock.h:30
u32 reserved6[0x0a]
Definition: clock.h:39
u32 reserved7[0x14]
Definition: clock.h:41
u32 clksel_con[108]
Definition: clock.h:40
u32 npll_con[6]
Definition: clock.h:36
u32 glb_srst_fst_value
Definition: clock.h:46
u32 apll_b_con[6]
Definition: clock.h:28
u32 clkgate_con[35]
Definition: clock.h:42
u32 softrst_con[21]
Definition: clock.h:44
u32 reserved10[0x1a]
Definition: clock.h:52
u32 sdio1_con[2]
Definition: clock.h:55
u32 glb_cnt_th
Definition: clock.h:48
u32 glb_rst_con
Definition: clock.h:50
u32 glb_srst_snd_value
Definition: clock.h:47
u32 gpll_con[6]
Definition: clock.h:34
u32 reserved4[2]
Definition: clock.h:35
u32 misc_con
Definition: clock.h:49
u32 sdio0_con[2]
Definition: clock.h:54
u32 vpll_con[6]
Definition: clock.h:38
u32 reserved1[2]
Definition: clock.h:29
u32 ppll_con[6]
Definition: clock.h:10
u32 reserved5[2]
Definition: clock.h:20
u32 reserved[0x1a]
Definition: clock.h:11
u32 pmucru_clksel[6]
Definition: clock.h:12
u32 pmucru_clkgate_con[3]
Definition: clock.h:15
u32 pmucru_rstnhold_con[2]
Definition: clock.h:19
u32 reserved4[2]
Definition: clock.h:18
u32 reserved2[0x18]
Definition: clock.h:14
u32 pmucru_clkfrac_con[2]
Definition: clock.h:13
u32 pmucru_softrst_con[2]
Definition: clock.h:17
u32 pmucru_gatedis_con[2]
Definition: clock.h:21