coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
srclken_rc.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef SOC_MEDIATEK_MT8192_SRCLKEN_RC_H
4 #define SOC_MEDIATEK_MT8192_SRCLKEN_RC_H
5 
6 #include <device/mmio.h>
7 
8 struct mtk_rc_regs {
27 };
28 
29 check_member(mtk_rc_regs, rc_central_cfg1, 0x4);
30 check_member(mtk_rc_regs, rc_mxx_srclken_cfg[0], 0x20);
31 check_member(mtk_rc_regs, rc_mxx_srclken_cfg[12], 0x50);
32 check_member(mtk_rc_regs, rc_central_cfg4, 0x58);
33 check_member(mtk_rc_regs, rc_protocol_chk_cfg, 0x60);
34 check_member(mtk_rc_regs, rc_misc_0, 0xb4);
35 check_member(mtk_rc_regs, rc_subsys_intf_cfg, 0xbc);
36 
46 };
47 
48 check_member(mtk_rc_status_regs, rc_cmd_sta_1, 0x8);
49 check_member(mtk_rc_status_regs, rc_mxx_req_sta_0[0], 0x14);
50 check_member(mtk_rc_status_regs, rc_mxx_req_sta_0[13], 0x48);
51 check_member(mtk_rc_status_regs, rc_debug_trace, 0x54);
52 
53 /* SPM Register */
54 /* SRCLKEN_RC_CFG */
55 DEFINE_BIT(SW_RESET, 0)
56 DEFINE_BIT(CG_32K_EN, 1)
57 DEFINE_BIT(CG_FCLK_EN, 2)
58 DEFINE_BIT(CG_FCLK_FR_EN, 3)
59 DEFINE_BIT(MUX_FCLK_FR, 4)
60 
61 /* RC_CENTRAL_CFG1 */
62 DEFINE_BIT(SRCLKEN_RC_EN, 0)
63 DEFINE_BIT(RCEN_ISSUE_M, 1)
64 DEFINE_BIT(RC_SPI_ACTIVE, 2)
65 DEFINE_BIT(SRCLKEN_RC_EN_SEL, 3)
66 DEFINE_BITFIELD(VCORE_SETTLE_T, 7, 5)
67 DEFINE_BITFIELD(ULPOSC_SETTLE_T, 11, 8)
68 DEFINE_BITFIELD(NON_DCXO_SETTLE_T, 21, 12)
69 DEFINE_BITFIELD(DCXO_SETTLE_T, 31, 22)
70 
71 /* RC_CENTRAL_CFG2 */
72 DEFINE_BITFIELD(SRCVOLTEN_CTRL, 3, 0)
73 DEFINE_BITFIELD(VREQ_CTRL, 7, 4)
74 DEFINE_BIT(SRCVOLTEN_VREQ_SEL, 8)
75 DEFINE_BIT(SRCVOLTEN_VREQ_M, 9)
76 DEFINE_BITFIELD(ULPOSC_CTRL_M, 15, 12)
77 DEFINE_BITFIELD(PWRAP_SLP_CTRL_M, 24, 21)
78 DEFINE_BIT(PWRAP_SLP_MUX_SEL, 25)
79 
80 /* RC_DCXO_FPM_CFG */
81 DEFINE_BITFIELD(DCXO_FPM_CTRL_M, 3, 0)
82 DEFINE_BIT(SRCVOLTEN_FPM_MSK_B, 4)
83 DEFINE_BITFIELD(SUB_SRCLKEN_FPM_MSK_B, 28, 16)
84 
85 /* RC_CENTRAL_CFG3 */
86 DEFINE_BIT(TO_LPM_SETTLE_EN, 0)
87 DEFINE_BIT(BLK_SCP_DXCO_MD_TARGET, 1)
88 DEFINE_BIT(BLK_COANT_DXCO_MD_TARGET, 2)
89 DEFINE_BIT(TO_BBLPM_SETTLE_EN, 3)
90 DEFINE_BITFIELD(TO_LPM_SETTLE_T, 21, 12)
91 
92 /* RC_CENTRAL_CFG4 */
93 DEFINE_BITFIELD(KEEP_RC_SPI_ACTIVE, 8, 0)
94 DEFINE_BIT(PWRAP_VLD_FORCE, 16)
95 DEFINE_BIT(SLEEP_VLD_MODE, 17)
96 
97 /* RC_MXX_SRCLKEN_CFG */
98 DEFINE_BIT(DCXO_SETTLE_BLK_EN, 1)
99 DEFINE_BIT(BYPASS_CMD_EN, 2)
100 DEFINE_BIT(SW_SRCLKEN_RC, 3)
101 DEFINE_BIT(SW_SRCLKEN_FPM, 4)
102 DEFINE_BIT(SW_SRCLKEN_BBLPM, 5)
103 DEFINE_BIT(XO_SOC_LINK_EN, 6)
104 DEFINE_BIT(REQ_ACK_LOW_IMD_EN, 7)
105 DEFINE_BIT(SRCLKEN_TRACK_M_EN, 8)
106 DEFINE_BITFIELD(CNT_PRD_STEP, 11, 10)
107 DEFINE_BITFIELD(XO_STABLE_PRD, 21, 12)
108 DEFINE_BITFIELD(DCXO_STABLE_PRD, 31, 22)
109 
110 enum {
113 };
114 
115 /* RC_DEBUG_CFG */
116 DEFINE_BIT(TRACE_MODE_EN, 24)
117 
118 /* SUBSYS_INTF_CFG */
119 DEFINE_BITFIELD(SRCLKEN_FPM_MASK_B, 12, 0)
120 DEFINE_BITFIELD(SRCLKEN_BBLPM_MASK_B, 28, 16)
121 
122 enum {
123  PMIC_PMRC_CON0 = 0x1A6,
126 };
127 
128 enum chn_id {
130  CHN_RF = 1,
132  CHN_MD = 3,
133  CHN_GPS = 4,
134  CHN_BT = 5,
135  CHN_WIFI = 6,
136  CHN_MCU = 7,
138  CHN_NFC = 9,
139  CHN_UFS = 10,
140  CHN_SCP = 11,
143 };
144 
145 enum {
148 };
149 
150 enum {
152  BYPASS_MODE = 0x1,
153  MERGE_AND_MODE = 0x1 << 1,
154  BYPASS_RC_MODE = 0x2 << 1,
155  BYPASS_OTHER_MODE = 0x3 << 1,
156  ASYNC_MODE = 0x1 << 3,
157 };
158 
159 enum {
160  RC_32K = 0,
162 };
163 
164 enum rc_ctrl_m {
165  HW_MODE = 0,
166  SW_MODE = 1,
167  INIT_MODE = 0xff,
168 };
169 
173 };
174 
176  unsigned int dcxo_prd;
177  unsigned int xo_prd;
178  unsigned int cnt_step;
179  unsigned int track_en;
180  unsigned int req_ack_imd_en;
181  unsigned int xo_soc_link_en;
182  unsigned int sw_bblpm;
183  unsigned int sw_fpm;
184  unsigned int sw_rc;
185  unsigned int bypass_cmd;
186  unsigned int dcxo_settle_blk_en;
187 };
188 
189 extern int srclken_rc_init(void);
190 
191 #endif /* SOC_MEDIATEK_MT8192_SRCLKEN_RC_H */
#define DEFINE_BITFIELD(name, high_bit, low_bit)
Definition: mmio.h:124
#define DEFINE_BIT(name, bit)
Definition: mmio.h:131
rc_ctrl_m
Definition: srclken_rc.h:164
@ HW_MODE
Definition: srclken_rc.h:165
@ SW_MODE
Definition: srclken_rc.h:166
@ INIT_MODE
Definition: srclken_rc.h:167
@ SRCLKENAO_MODE
Definition: srclken_rc.h:146
@ VREQ_MODE
Definition: srclken_rc.h:147
@ SW_SRCLKEN_BBLPM_MSK
Definition: srclken_rc.h:112
@ SW_SRCLKEN_FPM_MSK
Definition: srclken_rc.h:111
@ PMIC_PMRC_CON0_CLR
Definition: srclken_rc.h:125
@ PMIC_PMRC_CON0_SET
Definition: srclken_rc.h:124
@ PMIC_PMRC_CON0
Definition: srclken_rc.h:123
@ MERGE_OR_MODE
Definition: srclken_rc.h:151
@ BYPASS_MODE
Definition: srclken_rc.h:152
@ MERGE_AND_MODE
Definition: srclken_rc.h:153
@ BYPASS_OTHER_MODE
Definition: srclken_rc.h:155
@ BYPASS_RC_MODE
Definition: srclken_rc.h:154
@ ASYNC_MODE
Definition: srclken_rc.h:156
@ RC_ULPOSC1
Definition: srclken_rc.h:161
@ RC_32K
Definition: srclken_rc.h:160
check_member(mtk_rc_regs, rc_central_cfg1, 0x4)
chn_id
Definition: srclken_rc.h:128
@ CHN_UFS
Definition: srclken_rc.h:139
@ CHN_MCU
Definition: srclken_rc.h:136
@ CHN_WIFI
Definition: srclken_rc.h:135
@ MAX_CHN_NUM
Definition: srclken_rc.h:142
@ CHN_RESERVE
Definition: srclken_rc.h:141
@ CHN_NFC
Definition: srclken_rc.h:138
@ CHN_RF
Definition: srclken_rc.h:130
@ CHN_MD
Definition: srclken_rc.h:132
@ CHN_GPS
Definition: srclken_rc.h:133
@ CHN_BT
Definition: srclken_rc.h:134
@ CHN_SUSPEND
Definition: srclken_rc.h:129
@ CHN_COANT
Definition: srclken_rc.h:137
@ CHN_SCP
Definition: srclken_rc.h:140
@ CHN_DEEPIDLE
Definition: srclken_rc.h:131
int srclken_rc_init(void)
Definition: srclken_rc.c:240
rc_support
Definition: srclken_rc.h:170
@ SRCLKEN_RC_DISABLE
Definition: srclken_rc.h:172
@ SRCLKEN_RC_ENABLE
Definition: srclken_rc.h:171
uint32_t u32
Definition: stdint.h:51
u32 reserved1
Definition: srclken_rc.h:20
u32 reserved2[19]
Definition: srclken_rc.h:23
u32 rc_mxx_srclken_cfg[13]
Definition: srclken_rc.h:17
u32 rc_subsys_intf_cfg
Definition: srclken_rc.h:26
u32 srclken_sw_con_cfg
Definition: srclken_rc.h:18
u32 rc_pmic_rcen_set_clr_addr
Definition: srclken_rc.h:14
u32 rc_central_cfg2
Definition: srclken_rc.h:11
u32 srclken_rc_cfg
Definition: srclken_rc.h:9
u32 rc_dcxo_fpm_cfg
Definition: srclken_rc.h:15
u32 rc_central_cfg3
Definition: srclken_rc.h:16
u32 rc_pmic_rcen_addr
Definition: srclken_rc.h:13
u32 rc_debug_cfg
Definition: srclken_rc.h:22
u32 rc_misc_0
Definition: srclken_rc.h:24
u32 rc_cmd_arb_cfg
Definition: srclken_rc.h:12
u32 rc_protocol_chk_cfg
Definition: srclken_rc.h:21
u32 rc_central_cfg1
Definition: srclken_rc.h:10
u32 rc_central_cfg4
Definition: srclken_rc.h:19
u32 rc_spm_ctrl
Definition: srclken_rc.h:25
u32 rc_mxx_req_sta_0[14]
Definition: srclken_rc.h:43
unsigned int xo_soc_link_en
Definition: srclken_rc.h:181
unsigned int xo_prd
Definition: srclken_rc.h:177
unsigned int dcxo_prd
Definition: srclken_rc.h:176
unsigned int sw_fpm
Definition: srclken_rc.h:183
unsigned int sw_bblpm
Definition: srclken_rc.h:182
unsigned int req_ack_imd_en
Definition: srclken_rc.h:180
unsigned int cnt_step
Definition: srclken_rc.h:178
unsigned int dcxo_settle_blk_en
Definition: srclken_rc.h:186
unsigned int sw_rc
Definition: srclken_rc.h:184
unsigned int bypass_cmd
Definition: srclken_rc.h:185
unsigned int track_en
Definition: srclken_rc.h:179