coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
srclken_rc.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <console/console.h>
4 #include <delay.h>
5 #include <soc/addressmap.h>
6 #include <soc/pmif.h>
7 #include <soc/srclken_rc.h>
8 
9 #define RCTAG "[SRCLKEN_RC]"
10 #define rc_info(fmt, arg ...) printk(BIOS_INFO, RCTAG "%s,%d: " fmt, \
11  __func__, __LINE__, ## arg)
12 
13 #define SRCLKEN_DBG 1
14 
15 /* RC settle time setting */
16 enum {
17  FULL_SET_HW_MODE = 0, /* dcxo mode use pmrc_en */
18  VCORE_SETTLE_TIME = 1, /* ~= 30us */
19  ULPOSC_SETTLE_TIME = 4, /* ~= 150us */
20  XO_SETTLE_TIME = 0x1, /* 2 ^ (step_sz + 5) * 0x33 * 30.77ns ~= 400us */
21  DCXO_SETTLE_TIME = 0x1, /* 2 ^ (step_sz + 5) * 0x87 * 30.77ns ~= 1063us */
22  CENTROL_CNT_STEP = 0x3, /* fix in 3, central align with Mxx channel */
27 };
28 
29 enum {
31  | 1 << CHN_GPS | 1 << CHN_BT | 1 << CHN_WIFI
32  | 1 << CHN_MCU | 1 << CHN_COANT | 1 << CHN_NFC
33  | 1 << CHN_UFS | 1 << CHN_SCP | 1 << CHN_RESERVE,
36 };
37 
38 /* RC central setting */
39 enum {
42  SPI_TRIG_MODE = SRCLKENAO_MODE, /* use srlckenao to set vcore */
43  IS_SPI_DONE_RELEASE = 0, /* release vcore when spi request done */
44  IS_SPI2PMIC_SET_CLR = 0, /* register direct write */
45  SRCLKENO_0_CTRL_M = MERGE_OR_MODE, /* merge with spm */
46  VREQ_CTRL_M = BYPASS_MODE, /* merge with vreq */
47  ULPOSC_CTRL_M_VAL = BYPASS_MODE, /* merge with ulposc */
48  PWRAP_CTRL_M = MERGE_OR_MODE, /* merge with pwrap_scp */
49  SPI_CLK_SRC = RC_32K, /* pmic spec under 200us */
50 };
51 
52 /* Other setting */
53 enum {
54  DCXO_FPM_CTRL_MODE = MERGE_OR_MODE | ASYNC_MODE, /* merge with spm */
55  PWRAP_TMOUT_VAL = 0xA, /* 31us * 0xa ~= 310us */
57  MD0_SRCLKENO_0_MASK_B = 0, /* md0 control by pmrc */
58 };
59 
60 enum {
62  SUB_FPM_SET = 1 << CHN_SUSPEND | 1 << CHN_RF | 1 << CHN_MD
63  | 1 << CHN_GPS | 1 << CHN_BT | 1 << CHN_WIFI
64  | 1 << CHN_MCU | 1 << CHN_NFC | 1 << CHN_UFS
65  | 1 << CHN_SCP | 1 << CHN_RESERVE,
66 };
67 
68 enum {
71 };
72 
73 enum {
76 };
77 
78 enum {
81 };
82 
83 #define SUB_CTRL_CON(_dcxo_prd, _xo_prd, _bypass_cmd, _dcxo_settle_blk_en) { \
84  .dcxo_prd = _dcxo_prd, \
85  .xo_prd = _xo_prd, \
86  .cnt_step = CENTROL_CNT_STEP, \
87  .track_en = 0x0, \
88  .req_ack_imd_en = 0x1, \
89  .xo_soc_link_en = 0x0, \
90  .sw_bblpm = SW_BBLPM_LOW, \
91  .sw_fpm = SW_FPM_HIGH, \
92  .sw_rc = SW_MODE, \
93  .bypass_cmd = _bypass_cmd, \
94  .dcxo_settle_blk_en = _dcxo_settle_blk_en, \
95  }
96 
97 static struct mtk_rc_regs *rc_regs = (struct mtk_rc_regs *)RC_BASE;
99 
100 static struct subsys_rc_con rc_ctrl[MAX_CHN_NUM] = {
104  0x0, DXCO_SETTLE_BLK_EN),
110  [CHN_COANT] = SUB_CTRL_CON(0x0, 0x0, 0x1, DXCO_SETTLE_BLK_DIS),
113  [CHN_SCP] = SUB_CTRL_CON(0x0, 0x0, 0x1, DXCO_SETTLE_BLK_DIS),
114  [CHN_RESERVE] = SUB_CTRL_CON(0x0, 0x0, 0x1, DXCO_SETTLE_BLK_DIS),
115 };
116 
117 static void pmic_read(u32 addr, u32 *rdata)
118 {
119  static struct pmif *pmif_arb;
120 
121  if (pmif_arb == NULL)
123 
124  pmif_arb->read(pmif_arb, 0, addr, rdata);
125 }
126 
127 static void rc_dump_reg_info(void)
128 {
129  unsigned int chn_n;
130 
131  if (SRCLKEN_DBG) {
132  rc_info("SRCLKEN_RC_CFG:%#x\n", read32(&rc_regs->srclken_rc_cfg));
133  rc_info("RC_CENTRAL_CFG1:%#x\n", read32(&rc_regs->rc_central_cfg1));
134  rc_info("RC_CENTRAL_CFG2:%#x\n", read32(&rc_regs->rc_central_cfg2));
135  rc_info("RC_CENTRAL_CFG3:%#x\n", read32(&rc_regs->rc_central_cfg3));
136  rc_info("RC_CENTRAL_CFG4:%#x\n", read32(&rc_regs->rc_central_cfg4));
137  rc_info("RC_DCXO_FPM_CFG:%#x\n", read32(&rc_regs->rc_dcxo_fpm_cfg));
138  rc_info("SUBSYS_INTF_CFG:%#x\n", read32(&rc_regs->rc_subsys_intf_cfg));
139  rc_info("RC_SPI_STA_0:%#x\n", read32(&rc_sta_regs->rc_spi_sta_0));
140  rc_info("RC_PI_PO_STA:%#x\n", read32(&rc_sta_regs->rc_pi_po_sta_0));
141 
142  for (chn_n = 0; chn_n < MAX_CHN_NUM; chn_n++) {
143  rc_info("M%02d: %#x\n", chn_n,
144  read32(&rc_regs->rc_mxx_srclken_cfg[chn_n]));
145  }
146  }
147 }
148 
149 /* RC initial flow and relative setting */
150 static void __rc_ctrl_mode_switch(enum chn_id id, enum rc_ctrl_m mode)
151 {
152  switch (mode) {
153  case INIT_MODE:
155  DCXO_SETTLE_BLK_EN, rc_ctrl[id].dcxo_settle_blk_en,
156  BYPASS_CMD_EN, rc_ctrl[id].bypass_cmd,
157  SW_SRCLKEN_RC, rc_ctrl[id].sw_rc,
158  SW_SRCLKEN_FPM, rc_ctrl[id].sw_fpm,
159  SW_SRCLKEN_BBLPM, rc_ctrl[id].sw_bblpm,
160  XO_SOC_LINK_EN, rc_ctrl[id].xo_soc_link_en,
161  REQ_ACK_LOW_IMD_EN, rc_ctrl[id].req_ack_imd_en,
162  SRCLKEN_TRACK_M_EN, rc_ctrl[id].track_en,
163  CNT_PRD_STEP, rc_ctrl[id].cnt_step,
164  XO_STABLE_PRD, rc_ctrl[id].xo_prd,
165  DCXO_STABLE_PRD, rc_ctrl[id].dcxo_prd);
166  break;
167  case SW_MODE:
168  SET32_BITFIELDS(&rc_regs->rc_mxx_srclken_cfg[id], SW_SRCLKEN_RC, 1);
169  break;
170  case HW_MODE:
171  SET32_BITFIELDS(&rc_regs->rc_mxx_srclken_cfg[id], SW_SRCLKEN_RC, 0);
172  break;
173  default:
174  die("Can't support rc_mode %d\n", mode);
175  }
176 
177  rc_info("M%02d: %#x\n", id, read32(&rc_regs->rc_mxx_srclken_cfg[id]));
178 }
179 
180 
181 /* RC subsys FPM control */
182 static void __rc_ctrl_fpm_switch(enum chn_id id, unsigned int mode)
183 {
184  SET32_BITFIELDS(&rc_regs->rc_mxx_srclken_cfg[id], SW_SRCLKEN_FPM, !!mode);
185  rc_ctrl[id].sw_fpm = mode;
186  rc_info("M%02d FPM SWITCH: %#x\n", id, read32(&rc_regs->rc_mxx_srclken_cfg[id]));
187 }
188 
189 static void __rc_ctrl_bblpm_switch(enum chn_id id, unsigned int mode)
190 {
191  SET32_BITFIELDS(&rc_regs->rc_mxx_srclken_cfg[id], SW_SRCLKEN_BBLPM, !!mode);
192  rc_ctrl[id].sw_bblpm = mode;
193  rc_info("M%02d BBLPM SWITCH: %#x\n", id, read32(&rc_regs->rc_mxx_srclken_cfg[id]));
194 }
195 
196 static void rc_init_subsys_hw_mode(void)
197 {
198  unsigned int chn_n;
199 
200  for (chn_n = 0; chn_n < MAX_CHN_NUM; chn_n++) {
201  if (INIT_SUBSYS_TO_HW & (1 << chn_n))
203  }
204 }
205 
206 static void rc_init_subsys_lpm(void)
207 {
208  unsigned int chn_n;
209 
210  for (chn_n = 0; chn_n < MAX_CHN_NUM; chn_n++) {
211  if (INIT_SUBSYS_FPM_TO_LPM & (1 << chn_n))
213  }
214  for (chn_n = 0; chn_n < MAX_CHN_NUM; chn_n++) {
215  if (INIT_SUBSYS_FPM_TO_BBLPM & (1 << chn_n))
217  }
218 }
219 
220 static void rc_ctrl_mode_switch_init(enum chn_id id)
221 {
223 }
224 
225 static enum rc_support srclken_rc_chk_init_cfg(void)
226 {
228  if (!CONFIG(SRCLKEN_RC_SUPPORT)) {
229  rc_info("Bring-UP : skip srclken_rc init\n");
230  return SRCLKEN_RC_DISABLE;
231  }
232  if (SRCLKEN_DBG) {
233  /* Enable debug trace */
235  SET32_BITFIELDS(&rc_regs->rc_debug_cfg, TRACE_MODE_EN, 1);
236  }
237  return SRCLKEN_RC_ENABLE;
238 }
239 
241 {
242  /* New co-clock architecture srclkenrc implement here */
243  unsigned int chn_n;
244  int ret = 0;
245 
246  /* Check platform config to proceed init flow */
248  return ret;
249 
250  /* Set SW RESET 1 */
251  SET32_BITFIELDS(&rc_regs->srclken_rc_cfg, SW_RESET, 1);
252 
253  /* Wait 100us */
254  udelay(100);
255 
256  /* Set SW CG 1 */
258  _BF_VALUE(SW_RESET, 1) | _BF_VALUE(CG_32K_EN, 1) |
259  _BF_VALUE(CG_FCLK_EN, 1) | _BF_VALUE(CG_FCLK_FR_EN, 1));
260 
261  /* Wait 100us */
262  udelay(100);
263 
264  /* Set Clock Mux */
266  _BF_VALUE(SW_RESET, 1) | _BF_VALUE(CG_32K_EN, 1) |
267  _BF_VALUE(CG_FCLK_EN, 1) | _BF_VALUE(CG_FCLK_FR_EN, 1) |
268  _BF_VALUE(MUX_FCLK_FR, 1));
269 
270  /* Set req_filter m00~m12 as default SW_FPM */
271  for (chn_n = 0; chn_n < MAX_CHN_NUM; chn_n++)
273 
274  /* Set PMIC addr for SPI CMD */
276 
279 
281 
282  /* CFG1 setting for spi cmd config */
284  _BF_VALUE(DCXO_SETTLE_T, DCXO_SETTLE_TIME) |
285  _BF_VALUE(NON_DCXO_SETTLE_T, XO_SETTLE_TIME) |
286  _BF_VALUE(ULPOSC_SETTLE_T, ULPOSC_SETTLE_TIME) |
287  _BF_VALUE(VCORE_SETTLE_T, VCORE_SETTLE_TIME) |
288  _BF_VALUE(SRCLKEN_RC_EN_SEL, SRCLKEN_RC_EN_SEL_VAL) |
289  _BF_VALUE(RC_SPI_ACTIVE, KEEP_RC_SPI_ACTIVE_VAL) |
290  _BF_VALUE(RCEN_ISSUE_M, IS_SPI2PMIC_SET_CLR) |
291  _BF_VALUE(SRCLKEN_RC_EN, RC_CENTRAL_DISABLE));
292 
293  /* CFG2 setting for signal mode of each control mux */
295  _BF_VALUE(PWRAP_SLP_MUX_SEL, SPI_CLK_SRC) |
296  _BF_VALUE(PWRAP_SLP_CTRL_M, PWRAP_CTRL_M) |
297  _BF_VALUE(ULPOSC_CTRL_M, ULPOSC_CTRL_M_VAL) |
298  _BF_VALUE(SRCVOLTEN_VREQ_M, IS_SPI_DONE_RELEASE) |
299  _BF_VALUE(SRCVOLTEN_VREQ_SEL, SPI_TRIG_MODE) |
300  _BF_VALUE(VREQ_CTRL, VREQ_CTRL_M) |
301  _BF_VALUE(SRCVOLTEN_CTRL, SRCLKENO_0_CTRL_M));
302 
304  _BF_VALUE(TO_LPM_SETTLE_T, 0x4) |
305  _BF_VALUE(TO_BBLPM_SETTLE_EN, 1) |
306  _BF_VALUE(BLK_COANT_DXCO_MD_TARGET, 1) |
307  _BF_VALUE(BLK_SCP_DXCO_MD_TARGET, 1) |
308  _BF_VALUE(TO_LPM_SETTLE_EN, 1));
309 
310  /* Set srclkeno_0/conn_bt as factor to allow dcxo change to FPM */
312  _BF_VALUE(SUB_SRCLKEN_FPM_MSK_B, FPM_MSK_B) |
313  _BF_VALUE(SRCVOLTEN_FPM_MSK_B, MD0_SRCLKENO_0_MASK_B) |
314  _BF_VALUE(DCXO_FPM_CTRL_M, DCXO_FPM_CTRL_MODE));
315 
316  /* Set bblpm/fpm channel */
318  _BF_VALUE(SRCLKEN_BBLPM_MASK_B, SUB_BBLPM_SET) |
319  _BF_VALUE(SRCLKEN_FPM_MASK_B, SUB_FPM_SET));
320 
321  /* Trigger srclken_rc enable */
323  SRCLKEN_RC_EN, RC_CENTRAL_ENABLE);
324 
326  _BF_VALUE(SLEEP_VLD_MODE, 0x1) |
327  _BF_VALUE(PWRAP_VLD_FORCE, 0x1) |
328  _BF_VALUE(KEEP_RC_SPI_ACTIVE, 0x800));
329 
330 
331  /* Wait 100us */
332  udelay(100);
333 
334  /* Set SW RESET 0 */
336  _BF_VALUE(CG_32K_EN, 1) | _BF_VALUE(CG_FCLK_EN, 1) |
337  _BF_VALUE(CG_FCLK_FR_EN, 1) | _BF_VALUE(MUX_FCLK_FR, 1));
338 
339  /* Wait 100us */
340  udelay(100);
341 
342  /* Set SW CG 0 */
343  write32(&rc_regs->srclken_rc_cfg, _BF_VALUE(MUX_FCLK_FR, 1));
344 
345  /* Wait 500us */
346  udelay(500);
347 
348  /* Set req_filter m00~m12 FPM to LPM */
350 
351  /* Polling ACK of Initial Subsys Input */
352  for (chn_n = 0; chn_n < MAX_CHN_NUM; chn_n++) {
353  unsigned int chk_sta, shift_chn_n = 0;
354  int retry;
355  u32 temp;
356 
357  /* Fix RC_MXX_REQ_STA_0 register shift */
358  if (chn_n > 0)
359  shift_chn_n = 1;
360 
361  chk_sta = (rc_ctrl[chn_n].sw_fpm & SW_SRCLKEN_FPM_MSK) << 1 |
362  (rc_ctrl[chn_n].sw_bblpm & SW_SRCLKEN_BBLPM_MSK) << 3;
363  retry = 200;
364  while ((read32(&rc_sta_regs->rc_mxx_req_sta_0[chn_n + shift_chn_n]) & 0xa)
365  != chk_sta && retry-- > 0)
366  udelay(10);
367  if (retry < 0) {
368  pmic_read(PMIC_PMRC_CON0, &temp);
369  rc_info("polling M%02d failed.(R:%#x)(C:%#x)(PMRC:%#x)\n",
370  chn_n,
371  read32(&rc_sta_regs->rc_mxx_req_sta_0[chn_n + shift_chn_n]),
372  read32(&rc_regs->rc_mxx_srclken_cfg[chn_n]), temp);
373  ret = -1;
374  }
375  }
376 
377  /* Set req_filter m00~m12 */
379 
380  /* Release force pmic req signal */
382  _BF_VALUE(SLEEP_VLD_MODE, 0x1) |
383  _BF_VALUE(KEEP_RC_SPI_ACTIVE, 0x800));
384 
386 
387  return ret;
388 }
static void write32(void *addr, uint32_t val)
Definition: mmio.h:40
static uint32_t read32(const void *addr)
Definition: mmio.h:22
#define retry(attempts, condition,...)
Definition: helpers.h:126
static u32 addr
Definition: cirrus.c:14
static struct pmif * pmif_arb
Definition: clkbuf.c:27
void __noreturn die(const char *fmt,...)
Definition: die.c:17
@ CONFIG
Definition: dsi_common.h:201
@ ASYNC_MODE
Definition: i2c_common.h:78
#define SET32_BITFIELDS(addr,...)
Definition: mmio.h:201
#define _BF_VALUE(name, value)
Definition: mmio.h:137
@ PMIF_SPI
Definition: pmif_common.h:39
void pmwrap_interface_init(void)
Definition: pmif.c:282
struct pmif * get_pmif_controller(int inf, int mstid)
Definition: pmif.c:168
@ RC_STATUS_BASE
Definition: addressmap.h:25
@ RC_BASE
Definition: addressmap.h:24
@ INIT_SUBSYS_FPM_TO_LPM
Definition: srclken_rc.c:30
@ INIT_SUBSYS_FPM_TO_BBLPM
Definition: srclken_rc.c:34
@ INIT_SUBSYS_TO_HW
Definition: srclken_rc.c:35
@ DCXO_FPM_CTRL_MODE
Definition: srclken_rc.c:54
@ MD0_SRCLKENO_0_MASK_B
Definition: srclken_rc.c:57
@ FPM_MSK_B
Definition: srclken_rc.c:56
@ PWRAP_TMOUT_VAL
Definition: srclken_rc.c:55
@ SUB_BBLPM_SET
Definition: srclken_rc.c:61
@ SUB_FPM_SET
Definition: srclken_rc.c:62
static void __rc_ctrl_fpm_switch(enum chn_id id, unsigned int mode)
Definition: srclken_rc.c:182
@ DXCO_SETTLE_BLK_EN
Definition: srclken_rc.c:80
@ DXCO_SETTLE_BLK_DIS
Definition: srclken_rc.c:79
static void __rc_ctrl_mode_switch(enum chn_id id, enum rc_ctrl_m mode)
Definition: srclken_rc.c:150
static struct mtk_rc_regs * rc_regs
Definition: srclken_rc.c:97
static void __rc_ctrl_bblpm_switch(enum chn_id id, unsigned int mode)
Definition: srclken_rc.c:189
@ SW_FPM_HIGH
Definition: srclken_rc.c:70
@ SW_FPM_LOW
Definition: srclken_rc.c:69
#define SUB_CTRL_CON(_dcxo_prd, _xo_prd, _bypass_cmd, _dcxo_settle_blk_en)
Definition: srclken_rc.c:83
@ XO_STABLE_TIME
Definition: srclken_rc.c:24
@ DCXO_STABLE_TIME
Definition: srclken_rc.c:23
@ XO_SETTLE_TIME
Definition: srclken_rc.c:20
@ FULL_SET_HW_MODE
Definition: srclken_rc.c:17
@ ULPOSC_SETTLE_TIME
Definition: srclken_rc.c:19
@ KEEP_RC_SPI_ACTIVE_VAL
Definition: srclken_rc.c:25
@ CENTROL_CNT_STEP
Definition: srclken_rc.c:22
@ VCORE_SETTLE_TIME
Definition: srclken_rc.c:18
@ DCXO_SETTLE_TIME
Definition: srclken_rc.c:21
@ SRCLKEN_RC_EN_SEL_VAL
Definition: srclken_rc.c:26
static struct mtk_rc_status_regs * rc_sta_regs
Definition: srclken_rc.c:98
@ RC_CENTRAL_DISABLE
Definition: srclken_rc.c:41
@ IS_SPI_DONE_RELEASE
Definition: srclken_rc.c:43
@ RC_CENTRAL_ENABLE
Definition: srclken_rc.c:40
@ VREQ_CTRL_M
Definition: srclken_rc.c:46
@ SRCLKENO_0_CTRL_M
Definition: srclken_rc.c:45
@ SPI_CLK_SRC
Definition: srclken_rc.c:49
@ SPI_TRIG_MODE
Definition: srclken_rc.c:42
@ IS_SPI2PMIC_SET_CLR
Definition: srclken_rc.c:44
@ ULPOSC_CTRL_M_VAL
Definition: srclken_rc.c:47
@ PWRAP_CTRL_M
Definition: srclken_rc.c:48
@ SW_BBLPM_HIGH
Definition: srclken_rc.c:75
@ SW_BBLPM_LOW
Definition: srclken_rc.c:74
static void rc_init_subsys_lpm(void)
Definition: srclken_rc.c:206
#define SRCLKEN_DBG
Definition: srclken_rc.c:13
static void pmic_read(u32 addr, u32 *rdata)
Definition: srclken_rc.c:117
static struct subsys_rc_con rc_ctrl[MAX_CHN_NUM]
Definition: srclken_rc.c:100
static void rc_ctrl_mode_switch_init(enum chn_id id)
Definition: srclken_rc.c:220
static enum rc_support srclken_rc_chk_init_cfg(void)
Definition: srclken_rc.c:225
int srclken_rc_init(void)
Definition: srclken_rc.c:240
static void rc_dump_reg_info(void)
Definition: srclken_rc.c:127
#define rc_info(fmt, arg ...)
Definition: srclken_rc.c:10
static void rc_init_subsys_hw_mode(void)
Definition: srclken_rc.c:196
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
@ 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
@ RC_32K
Definition: srclken_rc.h:160
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
rc_support
Definition: srclken_rc.h:170
@ SRCLKEN_RC_DISABLE
Definition: srclken_rc.h:172
@ SRCLKEN_RC_ENABLE
Definition: srclken_rc.h:171
#define NULL
Definition: stddef.h:19
uint32_t u32
Definition: stdint.h:51
u32 rc_mxx_srclken_cfg[13]
Definition: srclken_rc.h:17
u32 rc_subsys_intf_cfg
Definition: srclken_rc.h:26
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_cmd_arb_cfg
Definition: srclken_rc.h:12
u32 rc_central_cfg1
Definition: srclken_rc.h:10
u32 rc_central_cfg4
Definition: srclken_rc.h:19
u32 rc_mxx_req_sta_0[14]
Definition: srclken_rc.h:43
void(* read)(struct pmif *arb, u32 slvid, u32 reg, u32 *data)
Definition: pmif_common.h:31
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
void udelay(uint32_t us)
Definition: udelay.c:15