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 #include <soc/addressmap.h>
3 #include <types.h>
4 
5 #ifndef __SOC_QUALCOMM_QCS405_CLOCK_H__
6 #define __SOC_QUALCOMM_QCS405_CLOCK_H__
7 
8 #define BLSP1_AHB_CLK_ENA 10
9 #define BLSP2_AHB_CLK_ENA 20
10 #define SRC_XO_19_2MHZ 0
11 #define SRC_GPLL0_MAIN_800MHZ 1
12 
13 /**
14  * USB BCR registers
15  */
16 #define GCC_USB_HS_PHY_CFG_AHB_BCR 0x180000C
17 #define GCC_USB_HS_BCR 0x1841000
18 #define GCC_USB_30_BCR 0x1839000
19 #define GCC_USB2A_PHY_BCR 0x180000C
20 #define GCC_USB2_HS_PHY_ONLY_BCR 0x1841034
21 #define GCC_QUSB2_PHY_BCR 0x184103C
22 
23 struct qcs405_rcg {
26 };
27 
28 struct qcs405_clock {
29  struct qcs405_rcg rcg;
33 };
34 
35 struct qcs405_bcr {
37 };
38 
39 struct qcs405_gpll {
49 };
50 
51 struct qcs405_gcc {
52  u8 _res0[0x1000 - 0x0];
57  u8 _res1[0x2000 - 0x1014];
62  u8 _res2[0x2024 - 0x2020];
64  u8 _res3[0x3008-0x2038];
67  u8 _res4[0x3014 - 0x3010];
73  u8 _res5[0x4018 - 0x3048];
76  u8 _res6[0x4024 - 0x4020];
78  u8 _res7[0x5018 - 0x4038];
81  u8 _res8[0x5024 - 0x5020];
83  u8 _res9[0x6020 - 0x5038];
86  u8 _res10[0x6034 - 0x6028];
88  u8 _res11[0xB000 - 0x6048];
92  u8 _res12[0xC000 - 0xB00C];
95  u8 _res13[0xC024 - 0xC008];
97  u8 _res14[0x21000 - 0xC038];
98  struct qcs405_gpll gpll0;
99  u8 _res15[0x45004 - 0x21024];
101 };
102 
104  const char *clk_name;
107 };
108 
118 };
119 
127 };
128 
136 };
137 
143 };
144 
148 };
149 
153 };
154 
155 struct clock_config {
163 };
164 
165 static struct qcs405_gcc *const gcc = (void *)GCC_BASE;
166 
167 void clock_init(void);
168 void clock_reset_aop(void);
170 int clock_reset_bcr(void *bcr_addr, bool reset);
173 void clock_configure_spi(int blsp, int qup, uint32_t hz);
174 void clock_enable_uart(void);
175 void clock_disable_uart(void);
176 void clock_enable_spi(int blsp, int qup);
177 void clock_disable_spi(int blsp, int qup);
178 void clock_enable_i2c(void);
179 void clock_disable_i2c(void);
180 
181 #endif // __SOC_QUALCOMM_QCS405_CLOCK_H__
clk_ctl_gpll_user_ctl
Definition: clock_common.h:79
clk_ctl_bcr
Definition: clock_common.h:126
clk_ctl_cbcr
Definition: clock_common.h:113
clk_ctl_rcg_mnd
Definition: clock_common.h:120
clk_ctl_cfg_rcgr
Definition: clock_common.h:103
clk_ctl_cmd_rcgr
Definition: clock_common.h:109
void clock_init(void)
Definition: clock.c:539
#define GCC_BASE
Definition: addressmap.h:10
int clock_reset_bcr(void *bcr_addr, bool reset)
Definition: clock.c:54
void clock_enable_i2c(void)
Definition: clock.c:309
void clock_disable_spi(int blsp, int qup)
Definition: clock.c:282
@ CLK_CTL_GPLL_PLLOUT_MAIN_SHFT
Definition: clock.h:117
@ CLK_CTL_GPLL_PLLOUT_LV_EARLY_SHFT
Definition: clock.h:114
@ CLK_CTL_GPLL_PLLOUT_AUX_SHFT
Definition: clock.h:116
@ CLK_CTL_GPLL_PLLOUT_AUX_BMSK
Definition: clock.h:112
@ CLK_CTL_GPLL_PLLOUT_MAIN_BMSK
Definition: clock.h:113
@ CLK_CTL_GPLL_PLLOUT_AUX2_BMSK
Definition: clock.h:111
@ CLK_CTL_GPLL_PLLOUT_LV_EARLY_BMSK
Definition: clock.h:110
@ CLK_CTL_GPLL_PLLOUT_AUX2_SHFT
Definition: clock.h:115
int clock_configure_qspi(uint32_t hz)
Definition: clock.c:117
void clock_configure_spi(int blsp, int qup, uint32_t hz)
Definition: clock.c:198
void clock_enable_spi(int blsp, int qup)
Definition: clock.c:256
@ CLK_CTL_BCR_BLK_ARES_SHFT
Definition: clock.h:152
@ CLK_CTL_BCR_BLK_ARES_BMSK
Definition: clock.h:151
void clock_disable_uart(void)
Definition: clock.c:251
@ CLK_CTL_CBC_CLK_EN_SHFT
Definition: clock.h:142
@ CLK_CTL_CBC_CLK_EN_BMSK
Definition: clock.h:141
@ CLK_CTL_CBC_CLK_OFF_SHFT
Definition: clock.h:140
@ CLK_CTL_CBC_CLK_OFF_BMSK
Definition: clock.h:139
void clock_disable_i2c(void)
Definition: clock.c:314
void clock_configure_i2c(uint32_t hz)
Definition: clock.c:238
void clock_enable_uart(void)
Definition: clock.c:246
@ CLK_CTL_RCG_MND_SHFT
Definition: clock.h:147
@ CLK_CTL_RCG_MND_BMSK
Definition: clock.h:146
void clock_reset_aop(void)
@ CLK_CTL_CFG_SRC_DIV_BMSK
Definition: clock.h:125
@ CLK_CTL_CFG_SRC_DIV_SHFT
Definition: clock.h:126
@ CLK_CTL_CFG_MODE_SHFT
Definition: clock.h:122
@ CLK_CTL_CFG_MODE_BMSK
Definition: clock.h:121
@ CLK_CTL_CFG_SRC_SEL_SHFT
Definition: clock.h:124
@ CLK_CTL_CFG_SRC_SEL_BMSK
Definition: clock.h:123
@ CLK_CTL_CMD_UPDATE_BMSK
Definition: clock.h:134
@ CLK_CTL_CMD_ROOT_OFF_SHFT
Definition: clock.h:131
@ CLK_CTL_CMD_ROOT_EN_BMSK
Definition: clock.h:132
@ CLK_CTL_CMD_ROOT_EN_SHFT
Definition: clock.h:133
@ CLK_CTL_CMD_UPDATE_SHFT
Definition: clock.h:135
@ CLK_CTL_CMD_ROOT_OFF_BMSK
Definition: clock.h:130
static struct qcs405_gcc *const gcc
Definition: clock.h:165
void clock_configure_uart(uint32_t hz)
Definition: clock.c:190
unsigned int uint32_t
Definition: stdint.h:14
uint32_t u32
Definition: stdint.h:51
uint8_t u8
Definition: stdint.h:45
uint32_t hw_ctl
Definition: clock.h:157
uint32_t m
Definition: clock.h:160
uint32_t hz
Definition: clock.h:156
uint32_t div
Definition: clock.h:159
uint32_t src
Definition: clock.h:158
uint32_t n
Definition: clock.h:161
uint32_t d_2
Definition: clock.h:162
const char * clk_name
Definition: clock.h:104
struct qcs405_clock * rcgr
Definition: clock.h:105
uint32_t * cbcr
Definition: clock.h:106
uint32_t bcr
Definition: clock.h:36
uint32_t m
Definition: clock.h:30
struct qcs405_rcg rcg
Definition: clock.h:29
uint32_t n
Definition: clock.h:31
uint32_t d_2
Definition: clock.h:32
u8 _res8[0x5024 - 0x5020]
Definition: clock.h:81
u32 blsp1_ahb_cbcr
Definition: clock.h:55
u8 _res13[0xC024 - 0xC008]
Definition: clock.h:95
u32 blsp1_qup1_spi_apps_cbcr
Definition: clock.h:59
struct qcs405_clock blsp1_uart2_apps_clk
Definition: clock.h:72
u8 _res1[0x2000 - 0x1014]
Definition: clock.h:57
u32 gcc_apcs_clock_branch_en_vote
Definition: clock.h:100
u32 blsp1_qup4_spi_apps_cbcr
Definition: clock.h:80
struct qcs405_clock blsp1_qup3_spi_clk
Definition: clock.h:77
u32 blsp2_qup0_spi_apps_cbcr
Definition: clock.h:94
struct qcs405_clock blsp2_qup0_spi_clk
Definition: clock.h:96
struct qcs405_clock blsp1_qup2_spi_clk
Definition: clock.h:68
u32 blsp1_qup1_i2c_apps_cbcr
Definition: clock.h:60
u32 blsp1_qup0_bcr
Definition: clock.h:84
struct qcs405_clock blsp1_qup1_spi_clk
Definition: clock.h:63
u32 blsp2_bcr
Definition: clock.h:89
u32 blsp2_sleep_cbcr
Definition: clock.h:90
u8 _res4[0x3014 - 0x3010]
Definition: clock.h:67
u8 _res10[0x6034 - 0x6028]
Definition: clock.h:86
struct qcs405_clock blsp1_qup4_spi_clk
Definition: clock.h:82
u8 _res7[0x5018 - 0x4038]
Definition: clock.h:78
u32 blsp1_qup2_bcr
Definition: clock.h:65
u32 blsp1_qup1_bcr
Definition: clock.h:58
struct qcs405_rcg gcc_blsp_uart_sim_rcg
Definition: clock.h:56
struct qcs405_gpll gpll0
Definition: clock.h:98
u32 blsp1_uart2_sim_cbcr
Definition: clock.h:71
u32 blsp1_sleep_cbcr
Definition: clock.h:54
u32 blsp1_qup0_spi_apps_cbcr
Definition: clock.h:85
u32 blsp1_bcr
Definition: clock.h:53
struct qcs405_clock blsp1_qup0_spi_clk
Definition: clock.h:87
u8 _res14[0x21000 - 0xC038]
Definition: clock.h:97
struct qcs405_clock blsp1_qup1_i2c_clk
Definition: clock.h:61
u8 _res2[0x2024 - 0x2020]
Definition: clock.h:62
u8 _res6[0x4024 - 0x4020]
Definition: clock.h:76
u8 _res15[0x45004 - 0x21024]
Definition: clock.h:99
u8 _res11[0xB000 - 0x6048]
Definition: clock.h:88
u32 blsp1_qup3_spi_apps_cbcr
Definition: clock.h:75
u8 _res5[0x4018 - 0x3048]
Definition: clock.h:73
u8 _res3[0x3008-0x2038]
Definition: clock.h:64
u8 _res9[0x6020 - 0x5038]
Definition: clock.h:83
u32 blsp2_ahb_cbcr
Definition: clock.h:91
u8 _res12[0xC000 - 0xB00C]
Definition: clock.h:92
u32 blsp1_uart2_bcr
Definition: clock.h:69
u8 _res0[0x1000 - 0x0]
Definition: clock.h:52
u32 blsp1_qup2_spi_apps_cbcr
Definition: clock.h:66
u32 blsp1_qup3_bcr
Definition: clock.h:74
u32 blsp2_qup0_bcr
Definition: clock.h:93
u32 blsp1_qup4_bcr
Definition: clock.h:79
u32 blsp1_uart2_apps_cbcr
Definition: clock.h:70
u32 mode
Definition: clock.h:40
u32 test_ctl
Definition: clock.h:47
u32 user_ctl_u
Definition: clock.h:45
u32 l_val
Definition: clock.h:41
u32 test_ctl_u
Definition: clock.h:48
u32 gpll_alpha_val
Definition: clock.h:42
u32 gpll_alpha_val_u
Definition: clock.h:43
u32 config_ctl
Definition: clock.h:46
u32 user_ctl
Definition: clock.h:44
u32 cfg
Definition: clock.h:25
u32 cmd
Definition: clock.h:24
static void __noreturn reset(void)