Commit | Line | Data |
---|---|---|
1b4a7c03 LJ |
1 | /* |
2 | * SiliconBackplane Chipcommon core hardware definitions. | |
3 | * | |
4 | * The chipcommon core provides chip identification, SB control, | |
5 | * JTAG, 0/1/2 UARTs, clock frequency control, a watchdog interrupt timer, | |
6 | * GPIO interface, extbus, and support for serial and parallel flashes. | |
7 | * | |
8 | * Copyright (C) 2020, Broadcom. | |
9 | * | |
10 | * Unless you and Broadcom execute a separate written software license | |
11 | * agreement governing use of this software, this software is licensed to you | |
12 | * under the terms of the GNU General Public License version 2 (the "GPL"), | |
13 | * available at http://www.broadcom.com/licenses/GPLv2.php, with the | |
14 | * following added to such license: | |
15 | * | |
16 | * As a special exception, the copyright holders of this software give you | |
17 | * permission to link this software with independent modules, and to copy and | |
18 | * distribute the resulting executable under terms of your choice, provided that | |
19 | * you also meet, for each linked independent module, the terms and conditions of | |
20 | * the license of that module. An independent module is a module which is not | |
21 | * derived from this software. The special exception does not apply to any | |
22 | * modifications of the software. | |
23 | * | |
24 | * | |
25 | * <<Broadcom-WL-IPTag/Dual:>> | |
26 | */ | |
27 | ||
28 | #ifndef _SBCHIPC_H | |
29 | #define _SBCHIPC_H | |
30 | ||
31 | #if !defined(_LANGUAGE_ASSEMBLY) && !defined(__ASSEMBLY__) | |
32 | ||
33 | /* cpp contortions to concatenate w/arg prescan */ | |
34 | #ifndef PAD | |
35 | #define _PADLINE(line) pad ## line | |
36 | #define _XSTR(line) _PADLINE(line) | |
37 | #define PAD _XSTR(__LINE__) | |
38 | #endif /* PAD */ | |
39 | ||
40 | #define BCM_MASK32(msb, lsb) ((~0u >> (32u - (msb) - 1u)) & (~0u << (lsb))) | |
41 | #include <bcmutils.h> | |
42 | ||
43 | /** | |
44 | * In chipcommon rev 49 the pmu registers have been moved from chipc to the pmu core if the | |
45 | * 'AOBPresent' bit of 'CoreCapabilitiesExt' is set. If this field is set, the traditional chipc to | |
46 | * [pmu|gci|sreng] register interface is deprecated and removed. These register blocks would instead | |
47 | * be assigned their respective chipc-specific address space and connected to the Always On | |
48 | * Backplane via the APB interface. | |
49 | */ | |
50 | typedef volatile struct { | |
51 | uint32 PAD[384]; | |
52 | uint32 pmucontrol; /* 0x600 */ | |
53 | uint32 pmucapabilities; /* 0x604 */ | |
54 | uint32 pmustatus; /* 0x608 */ | |
55 | uint32 res_state; /* 0x60C */ | |
56 | uint32 res_pending; /* 0x610 */ | |
57 | uint32 pmutimer; /* 0x614 */ | |
58 | uint32 min_res_mask; /* 0x618 */ | |
59 | uint32 max_res_mask; /* 0x61C */ | |
60 | uint32 res_table_sel; /* 0x620 */ | |
61 | uint32 res_dep_mask; | |
62 | uint32 res_updn_timer; | |
63 | uint32 res_timer; | |
64 | uint32 clkstretch; | |
65 | uint32 pmuwatchdog; | |
66 | uint32 gpiosel; /* 0x638, rev >= 1 */ | |
67 | uint32 gpioenable; /* 0x63c, rev >= 1 */ | |
68 | uint32 res_req_timer_sel; /* 0x640 */ | |
69 | uint32 res_req_timer; /* 0x644 */ | |
70 | uint32 res_req_mask; /* 0x648 */ | |
71 | uint32 core_cap_ext; /* 0x64C */ | |
72 | uint32 chipcontrol_addr; /* 0x650 */ | |
73 | uint32 chipcontrol_data; /* 0x654 */ | |
74 | uint32 regcontrol_addr; | |
75 | uint32 regcontrol_data; | |
76 | uint32 pllcontrol_addr; | |
77 | uint32 pllcontrol_data; | |
78 | uint32 pmustrapopt; /* 0x668, corerev >= 28 */ | |
79 | uint32 pmu_xtalfreq; /* 0x66C, pmurev >= 10 */ | |
80 | uint32 retention_ctl; /* 0x670 */ | |
81 | uint32 ILPPeriod; /* 0x674 */ | |
82 | uint32 PAD[2]; | |
83 | uint32 retention_grpidx; /* 0x680 */ | |
84 | uint32 retention_grpctl; /* 0x684 */ | |
85 | uint32 mac_res_req_timer; /* 0x688 */ | |
86 | uint32 mac_res_req_mask; /* 0x68c */ | |
87 | uint32 spm_ctrl; /* 0x690 */ | |
88 | uint32 spm_cap; /* 0x694 */ | |
89 | uint32 spm_clk_ctrl; /* 0x698 */ | |
90 | uint32 int_hi_status; /* 0x69c */ | |
91 | uint32 int_lo_status; /* 0x6a0 */ | |
92 | uint32 mon_table_addr; /* 0x6a4 */ | |
93 | uint32 mon_ctrl_n; /* 0x6a8 */ | |
94 | uint32 mon_status_n; /* 0x6ac */ | |
95 | uint32 int_treshold_n; /* 0x6b0 */ | |
96 | uint32 watermarks_n; /* 0x6b4 */ | |
97 | uint32 spm_debug; /* 0x6b8 */ | |
98 | uint32 PAD[1]; | |
99 | uint32 vtrim_ctrl; /* 0x6c0 */ | |
100 | uint32 vtrim_status; /* 0x6c4 */ | |
101 | uint32 usec_timer; /* 0x6c8 */ | |
102 | uint32 usec_timer_frac; /* 0x6cc */ | |
103 | uint32 pcie_tpower_on; /* 0x6d0 */ | |
104 | uint32 pcie_tport_cnt; /* 0x6d4 */ | |
105 | uint32 pmucontrol_ext; /* 0x6d8 */ | |
106 | uint32 slowclkperiod; /* 0x6dc */ | |
107 | uint32 pmu_statstimer_addr; /* 0x6e0 */ | |
108 | uint32 pmu_statstimer_ctrl; /* 0x6e4 */ | |
109 | uint32 pmu_statstimer_N; /* 0x6e8 */ | |
110 | uint32 PAD[1]; | |
111 | uint32 mac_res_req_timer1; /* 0x6f0 */ | |
112 | uint32 mac_res_req_mask1; /* 0x6f4 */ | |
113 | uint32 PAD[2]; | |
114 | uint32 pmuintmask0; /* 0x700 */ | |
115 | uint32 pmuintmask1; /* 0x704 */ | |
116 | uint32 PAD[2]; | |
117 | uint32 fis_start_min_res_mask; /* 0x710 */ | |
118 | uint32 PAD[3]; | |
119 | uint32 rsrc_event0; /* 0x720 */ | |
120 | uint32 PAD[3]; | |
121 | uint32 slowtimer2; /* 0x730 */ | |
122 | uint32 slowtimerfrac2; /* 0x734 */ | |
123 | uint32 mac_res_req_timer2; /* 0x738 */ | |
124 | uint32 mac_res_req_mask2; /* 0x73c */ | |
125 | uint32 pmuintstatus; /* 0x740 */ | |
126 | uint32 extwakeupstatus; /* 0x744 */ | |
127 | uint32 watchdog_res_mask; /* 0x748 */ | |
128 | uint32 PAD[1]; /* 0x74C */ | |
129 | uint32 swscratch; /* 0x750 */ | |
130 | uint32 PAD[3]; /* 0x754-0x75C */ | |
131 | uint32 extwakemask0; /* 0x760 */ | |
132 | uint32 extwakemask1; /* 0x764 */ | |
133 | uint32 PAD[2]; /* 0x768-0x76C */ | |
134 | uint32 extwakereqmask[2]; /* 0x770-0x774 */ | |
135 | uint32 PAD[2]; /* 0x778-0x77C */ | |
136 | uint32 pmuintctrl0; /* 0x780 */ | |
137 | uint32 pmuintctrl1; /* 0x784 */ | |
138 | uint32 PAD[2]; | |
139 | uint32 extwakectrl[2]; /* 0x790 */ | |
140 | uint32 PAD[7]; | |
141 | uint32 fis_ctrl_status; /* 0x7b4 */ | |
142 | uint32 fis_min_res_mask; /* 0x7b8 */ | |
143 | uint32 PAD[1]; | |
144 | uint32 precision_tmr_ctrl_status; /* 0x7c0 */ | |
145 | uint32 precision_tmr_capture_low; /* 0x7c4 */ | |
146 | uint32 precision_tmr_capture_high; /* 0x7c8 */ | |
147 | uint32 precision_tmr_capture_frac; /* 0x7cc */ | |
148 | uint32 precision_tmr_running_low; /* 0x7d0 */ | |
149 | uint32 precision_tmr_running_high; /* 0x7d4 */ | |
150 | uint32 precision_tmr_running_frac; /* 0x7d8 */ | |
151 | uint32 PAD[3]; | |
152 | uint32 core_cap_ext1; /* 0x7e8 */ | |
153 | uint32 PAD[5]; | |
154 | uint32 rsrc_substate_ctl_sts; /* 0x800 */ | |
155 | uint32 rsrc_substate_trans_tmr; /* 0x804 */ | |
156 | uint32 PAD[2]; | |
157 | uint32 dvfs_ctrl1; /* 0x810 */ | |
158 | uint32 dvfs_ctrl2; /* 0x814 */ | |
159 | uint32 dvfs_voltage; /* 0x818 */ | |
160 | uint32 dvfs_status; /* 0x81c */ | |
161 | uint32 dvfs_core_table_address; /* 0x820 */ | |
162 | uint32 dvfs_core_ctrl; /* 0x824 */ | |
163 | } pmuregs_t; | |
164 | ||
165 | typedef struct eci_prerev35 { | |
166 | uint32 eci_output; | |
167 | uint32 eci_control; | |
168 | uint32 eci_inputlo; | |
169 | uint32 eci_inputmi; | |
170 | uint32 eci_inputhi; | |
171 | uint32 eci_inputintpolaritylo; | |
172 | uint32 eci_inputintpolaritymi; | |
173 | uint32 eci_inputintpolarityhi; | |
174 | uint32 eci_intmasklo; | |
175 | uint32 eci_intmaskmi; | |
176 | uint32 eci_intmaskhi; | |
177 | uint32 eci_eventlo; | |
178 | uint32 eci_eventmi; | |
179 | uint32 eci_eventhi; | |
180 | uint32 eci_eventmasklo; | |
181 | uint32 eci_eventmaskmi; | |
182 | uint32 eci_eventmaskhi; | |
183 | uint32 PAD[3]; | |
184 | } eci_prerev35_t; | |
185 | ||
186 | typedef struct eci_rev35 { | |
187 | uint32 eci_outputlo; | |
188 | uint32 eci_outputhi; | |
189 | uint32 eci_controllo; | |
190 | uint32 eci_controlhi; | |
191 | uint32 eci_inputlo; | |
192 | uint32 eci_inputhi; | |
193 | uint32 eci_inputintpolaritylo; | |
194 | uint32 eci_inputintpolarityhi; | |
195 | uint32 eci_intmasklo; | |
196 | uint32 eci_intmaskhi; | |
197 | uint32 eci_eventlo; | |
198 | uint32 eci_eventhi; | |
199 | uint32 eci_eventmasklo; | |
200 | uint32 eci_eventmaskhi; | |
201 | uint32 eci_auxtx; | |
202 | uint32 eci_auxrx; | |
203 | uint32 eci_datatag; | |
204 | uint32 eci_uartescvalue; | |
205 | uint32 eci_autobaudctr; | |
206 | uint32 eci_uartfifolevel; | |
207 | } eci_rev35_t; | |
208 | ||
209 | typedef struct flash_config { | |
210 | uint32 PAD[19]; | |
211 | /* Flash struct configuration registers (0x18c) for BCM4706 (corerev = 31) */ | |
212 | uint32 flashstrconfig; | |
213 | } flash_config_t; | |
214 | ||
215 | typedef volatile struct { | |
216 | uint32 chipid; /* 0x0 */ | |
217 | uint32 capabilities; | |
218 | uint32 corecontrol; /* corerev >= 1 */ | |
219 | uint32 bist; | |
220 | ||
221 | /* OTP */ | |
222 | uint32 otpstatus; /* 0x10, corerev >= 10 */ | |
223 | uint32 otpcontrol; | |
224 | uint32 otpprog; | |
225 | uint32 otplayout; /* corerev >= 23 */ | |
226 | ||
227 | /* Interrupt control */ | |
228 | uint32 intstatus; /* 0x20 */ | |
229 | uint32 intmask; | |
230 | ||
231 | /* Chip specific regs */ | |
232 | uint32 chipcontrol; /* 0x28, rev >= 11 */ | |
233 | uint32 chipstatus; /* 0x2c, rev >= 11 */ | |
234 | ||
235 | /* Jtag Master */ | |
236 | uint32 jtagcmd; /* 0x30, rev >= 10 */ | |
237 | uint32 jtagir; | |
238 | uint32 jtagdr; | |
239 | uint32 jtagctrl; | |
240 | ||
241 | /* serial flash interface registers */ | |
242 | uint32 flashcontrol; /* 0x40 */ | |
243 | uint32 flashaddress; | |
244 | uint32 flashdata; | |
245 | uint32 otplayoutextension; /* rev >= 35 */ | |
246 | ||
247 | /* Silicon backplane configuration broadcast control */ | |
248 | uint32 broadcastaddress; /* 0x50 */ | |
249 | uint32 broadcastdata; | |
250 | ||
251 | /* gpio - cleared only by power-on-reset */ | |
252 | uint32 gpiopullup; /* 0x58, corerev >= 20 */ | |
253 | uint32 gpiopulldown; /* 0x5c, corerev >= 20 */ | |
254 | uint32 gpioin; /* 0x60 */ | |
255 | uint32 gpioout; /* 0x64 */ | |
256 | uint32 gpioouten; /* 0x68 */ | |
257 | uint32 gpiocontrol; /* 0x6C */ | |
258 | uint32 gpiointpolarity; /* 0x70 */ | |
259 | uint32 gpiointmask; /* 0x74 */ | |
260 | ||
261 | /* GPIO events corerev >= 11 */ | |
262 | uint32 gpioevent; | |
263 | uint32 gpioeventintmask; | |
264 | ||
265 | /* Watchdog timer */ | |
266 | uint32 watchdog; /* 0x80 */ | |
267 | ||
268 | /* GPIO events corerev >= 11 */ | |
269 | uint32 gpioeventintpolarity; | |
270 | ||
271 | /* GPIO based LED powersave regs corerev >= 16 */ | |
272 | uint32 gpiotimerval; /* 0x88 */ /* Obsolete and unused now */ | |
273 | uint32 gpiotimeroutmask; /* Obsolete and unused now */ | |
274 | ||
275 | /* clock control */ | |
276 | uint32 clockcontrol_n; /* 0x90 */ | |
277 | uint32 clockcontrol_sb; /* aka m0 */ | |
278 | uint32 clockcontrol_pci; /* aka m1 */ | |
279 | uint32 clockcontrol_m2; /* mii/uart/mipsref */ | |
280 | uint32 clockcontrol_m3; /* cpu */ | |
281 | uint32 clkdiv; /* corerev >= 3 */ | |
282 | uint32 gpiodebugsel; /* corerev >= 28 */ | |
283 | uint32 capabilities_ext; /* 0xac */ | |
284 | ||
285 | /* pll delay registers (corerev >= 4) */ | |
286 | uint32 pll_on_delay; /* 0xb0 */ | |
287 | uint32 fref_sel_delay; | |
288 | uint32 slow_clk_ctl; /* 5 < corerev < 10 */ | |
289 | uint32 PAD; | |
290 | ||
291 | /* Instaclock registers (corerev >= 10) */ | |
292 | uint32 system_clk_ctl; /* 0xc0 */ | |
293 | uint32 clkstatestretch; | |
294 | uint32 PAD[2]; | |
295 | ||
296 | /* Indirect backplane access (corerev >= 22) */ | |
297 | uint32 bp_addrlow; /* 0xd0 */ | |
298 | uint32 bp_addrhigh; | |
299 | uint32 bp_data; | |
300 | uint32 PAD; | |
301 | uint32 bp_indaccess; | |
302 | /* SPI registers, corerev >= 37 */ | |
303 | uint32 gsioctrl; | |
304 | uint32 gsioaddress; | |
305 | uint32 gsiodata; | |
306 | ||
307 | /* More clock dividers (corerev >= 32) */ | |
308 | uint32 clkdiv2; | |
309 | /* FAB ID (corerev >= 40) */ | |
310 | uint32 otpcontrol1; | |
311 | uint32 fabid; /* 0xf8 */ | |
312 | ||
313 | /* In AI chips, pointer to erom */ | |
314 | uint32 eromptr; /* 0xfc */ | |
315 | ||
316 | /* ExtBus control registers (corerev >= 3) */ | |
317 | uint32 pcmcia_config; /* 0x100 */ | |
318 | uint32 pcmcia_memwait; | |
319 | uint32 pcmcia_attrwait; | |
320 | uint32 pcmcia_iowait; | |
321 | uint32 ide_config; | |
322 | uint32 ide_memwait; | |
323 | uint32 ide_attrwait; | |
324 | uint32 ide_iowait; | |
325 | uint32 prog_config; | |
326 | uint32 prog_waitcount; | |
327 | uint32 flash_config; | |
328 | uint32 flash_waitcount; | |
329 | uint32 SECI_config; /* 0x130 SECI configuration */ | |
330 | uint32 SECI_status; | |
331 | uint32 SECI_statusmask; | |
332 | uint32 SECI_rxnibchanged; | |
333 | ||
334 | uint32 PAD[20]; | |
335 | ||
336 | /* SROM interface (corerev >= 32) */ | |
337 | uint32 sromcontrol; /* 0x190 */ | |
338 | uint32 sromaddress; | |
339 | uint32 sromdata; | |
340 | uint32 PAD[1]; /* 0x19C */ | |
341 | /* NAND flash registers for BCM4706 (corerev = 31) */ | |
342 | uint32 nflashctrl; /* 0x1a0 */ | |
343 | uint32 nflashconf; | |
344 | uint32 nflashcoladdr; | |
345 | uint32 nflashrowaddr; | |
346 | uint32 nflashdata; | |
347 | uint32 nflashwaitcnt0; /* 0x1b4 */ | |
348 | uint32 PAD[2]; | |
349 | ||
350 | uint32 seci_uart_data; /* 0x1C0 */ | |
351 | uint32 seci_uart_bauddiv; | |
352 | uint32 seci_uart_fcr; | |
353 | uint32 seci_uart_lcr; | |
354 | uint32 seci_uart_mcr; | |
355 | uint32 seci_uart_lsr; | |
356 | uint32 seci_uart_msr; | |
357 | uint32 seci_uart_baudadj; | |
358 | /* Clock control and hardware workarounds (corerev >= 20) */ | |
359 | uint32 clk_ctl_st; /* 0x1e0 */ | |
360 | uint32 hw_war; | |
361 | uint32 powerctl; /* 0x1e8 */ | |
362 | uint32 powerctl2; /* 0x1ec */ | |
363 | uint32 PAD[68]; | |
364 | ||
365 | /* UARTs */ | |
366 | uint8 uart0data; /* 0x300 */ | |
367 | uint8 uart0imr; | |
368 | uint8 uart0fcr; | |
369 | uint8 uart0lcr; | |
370 | uint8 uart0mcr; | |
371 | uint8 uart0lsr; | |
372 | uint8 uart0msr; | |
373 | uint8 uart0scratch; | |
374 | uint8 PAD[184]; /* corerev >= 65 */ | |
375 | uint32 rng_ctrl_0; /* 0x3c0 */ | |
376 | uint32 rng_rng_soft_reset; /* 0x3c4 */ | |
377 | uint32 rng_rbg_soft_reset; /* 0x3c8 */ | |
378 | uint32 rng_total_bit_cnt; /* 0x3cc */ | |
379 | uint32 rng_total_bit_thrshld; /* 0x3d0 */ | |
380 | uint32 rng_rev_id; /* 0x3d4 */ | |
381 | uint32 rng_int_status_0; /* 0x3d8 */ | |
382 | uint32 rng_int_enable_0; /* 0x3dc */ | |
383 | uint32 rng_fifo_data; /* 0x3e0 */ | |
384 | uint32 rng_fifo_cnt; /* 0x3e4 */ | |
385 | uint8 PAD[24]; /* corerev >= 65 */ | |
386 | ||
387 | uint8 uart1data; /* 0x400 */ | |
388 | uint8 uart1imr; | |
389 | uint8 uart1fcr; | |
390 | uint8 uart1lcr; | |
391 | uint8 uart1mcr; | |
392 | uint8 uart1lsr; | |
393 | uint8 uart1msr; | |
394 | uint8 uart1scratch; /* 0x407 */ | |
395 | uint32 PAD[50]; | |
396 | uint32 sr_memrw_addr; /* 0x4d0 */ | |
397 | uint32 sr_memrw_data; /* 0x4d4 */ | |
398 | uint32 PAD[10]; | |
399 | ||
400 | /* save/restore, corerev >= 48 */ | |
401 | uint32 sr_capability; /* 0x500 */ | |
402 | uint32 sr_control0; /* 0x504 */ | |
403 | uint32 sr_control1; /* 0x508 */ | |
404 | uint32 gpio_control; /* 0x50C */ | |
405 | uint32 PAD[29]; | |
406 | /* 2 SR engines case */ | |
407 | uint32 sr1_control0; /* 0x584 */ | |
408 | uint32 sr1_control1; /* 0x588 */ | |
409 | uint32 PAD[29]; | |
410 | /* PMU registers (corerev >= 20) */ | |
411 | /* Note: all timers driven by ILP clock are updated asynchronously to HT/ALP. | |
412 | * The CPU must read them twice, compare, and retry if different. | |
413 | */ | |
414 | uint32 pmucontrol; /* 0x600 */ | |
415 | uint32 pmucapabilities; | |
416 | uint32 pmustatus; | |
417 | uint32 res_state; | |
418 | uint32 res_pending; | |
419 | uint32 pmutimer; | |
420 | uint32 min_res_mask; | |
421 | uint32 max_res_mask; | |
422 | uint32 res_table_sel; | |
423 | uint32 res_dep_mask; | |
424 | uint32 res_updn_timer; | |
425 | uint32 res_timer; | |
426 | uint32 clkstretch; | |
427 | uint32 pmuwatchdog; | |
428 | uint32 gpiosel; /* 0x638, rev >= 1 */ | |
429 | uint32 gpioenable; /* 0x63c, rev >= 1 */ | |
430 | uint32 res_req_timer_sel; | |
431 | uint32 res_req_timer; | |
432 | uint32 res_req_mask; | |
433 | uint32 core_cap_ext; /* 0x64c */ | |
434 | uint32 chipcontrol_addr; /* 0x650 */ | |
435 | uint32 chipcontrol_data; /* 0x654 */ | |
436 | uint32 regcontrol_addr; | |
437 | uint32 regcontrol_data; | |
438 | uint32 pllcontrol_addr; | |
439 | uint32 pllcontrol_data; | |
440 | uint32 pmustrapopt; /* 0x668, corerev >= 28 */ | |
441 | uint32 pmu_xtalfreq; /* 0x66C, pmurev >= 10 */ | |
442 | uint32 retention_ctl; /* 0x670 */ | |
443 | uint32 ILPPeriod; /* 0x674 */ | |
444 | uint32 PAD[2]; | |
445 | uint32 retention_grpidx; /* 0x680 */ | |
446 | uint32 retention_grpctl; /* 0x684 */ | |
447 | uint32 mac_res_req_timer; /* 0x688 */ | |
448 | uint32 mac_res_req_mask; /* 0x68c */ | |
449 | uint32 PAD[18]; | |
450 | uint32 pmucontrol_ext; /* 0x6d8 */ | |
451 | uint32 slowclkperiod; /* 0x6dc */ | |
452 | uint32 pmu_statstimer_addr; /* 0x6e0 */ | |
453 | uint32 pmu_statstimer_ctrl; /* 0x6e4 */ | |
454 | uint32 pmu_statstimer_N; /* 0x6e8 */ | |
455 | uint32 PAD[1]; | |
456 | uint32 mac_res_req_timer1; /* 0x6f0 */ | |
457 | uint32 mac_res_req_mask1; /* 0x6f4 */ | |
458 | uint32 PAD[2]; | |
459 | uint32 pmuintmask0; /* 0x700 */ | |
460 | uint32 pmuintmask1; /* 0x704 */ | |
461 | uint32 PAD[14]; | |
462 | uint32 pmuintstatus; /* 0x740 */ | |
463 | uint32 extwakeupstatus; /* 0x744 */ | |
464 | uint32 PAD[6]; | |
465 | uint32 extwakemask0; /* 0x760 */ | |
466 | uint32 extwakemask1; /* 0x764 */ | |
467 | uint32 PAD[2]; /* 0x768-0x76C */ | |
468 | uint32 extwakereqmask[2]; /* 0x770-0x774 */ | |
469 | uint32 PAD[2]; /* 0x778-0x77C */ | |
470 | uint32 pmuintctrl0; /* 0x780 */ | |
471 | uint32 PAD[3]; /* 0x784 - 0x78c */ | |
472 | uint32 extwakectrl[1]; /* 0x790 */ | |
473 | uint32 PAD[PADSZ(0x794u, 0x7b0u)]; /* 0x794 - 0x7b0 */ | |
474 | uint32 fis_ctrl_status; /* 0x7b4 */ | |
475 | uint32 fis_min_res_mask; /* 0x7b8 */ | |
476 | uint32 PAD[PADSZ(0x7bcu, 0x7bcu)]; /* 0x7bc */ | |
477 | uint32 precision_tmr_ctrl_status; /* 0x7c0 */ | |
478 | uint32 precision_tmr_capture_low; /* 0x7c4 */ | |
479 | uint32 precision_tmr_capture_high; /* 0x7c8 */ | |
480 | uint32 precision_tmr_capture_frac; /* 0x7cc */ | |
481 | uint32 precision_tmr_running_low; /* 0x7d0 */ | |
482 | uint32 precision_tmr_running_high; /* 0x7d4 */ | |
483 | uint32 precision_tmr_running_frac; /* 0x7d8 */ | |
484 | uint32 PAD[PADSZ(0x7dcu, 0x7e4u)]; /* 0x7dc - 0x7e4 */ | |
485 | uint32 core_cap_ext1; /* 0x7e8 */ | |
486 | uint32 PAD[PADSZ(0x7ecu, 0x7fcu)]; /* 0x7ec - 0x7fc */ | |
487 | ||
488 | uint16 sromotp[512]; /* 0x800 */ | |
489 | #ifdef CCNFLASH_SUPPORT | |
490 | /* Nand flash MLC controller registers (corerev >= 38) */ | |
491 | uint32 nand_revision; /* 0xC00 */ | |
492 | uint32 nand_cmd_start; | |
493 | uint32 nand_cmd_addr_x; | |
494 | uint32 nand_cmd_addr; | |
495 | uint32 nand_cmd_end_addr; | |
496 | uint32 nand_cs_nand_select; | |
497 | uint32 nand_cs_nand_xor; | |
498 | uint32 PAD; | |
499 | uint32 nand_spare_rd0; | |
500 | uint32 nand_spare_rd4; | |
501 | uint32 nand_spare_rd8; | |
502 | uint32 nand_spare_rd12; | |
503 | uint32 nand_spare_wr0; | |
504 | uint32 nand_spare_wr4; | |
505 | uint32 nand_spare_wr8; | |
506 | uint32 nand_spare_wr12; | |
507 | uint32 nand_acc_control; | |
508 | uint32 PAD; | |
509 | uint32 nand_config; | |
510 | uint32 PAD; | |
511 | uint32 nand_timing_1; | |
512 | uint32 nand_timing_2; | |
513 | uint32 nand_semaphore; | |
514 | uint32 PAD; | |
515 | uint32 nand_devid; | |
516 | uint32 nand_devid_x; | |
517 | uint32 nand_block_lock_status; | |
518 | uint32 nand_intfc_status; | |
519 | uint32 nand_ecc_corr_addr_x; | |
520 | uint32 nand_ecc_corr_addr; | |
521 | uint32 nand_ecc_unc_addr_x; | |
522 | uint32 nand_ecc_unc_addr; | |
523 | uint32 nand_read_error_count; | |
524 | uint32 nand_corr_stat_threshold; | |
525 | uint32 PAD[2]; | |
526 | uint32 nand_read_addr_x; | |
527 | uint32 nand_read_addr; | |
528 | uint32 nand_page_program_addr_x; | |
529 | uint32 nand_page_program_addr; | |
530 | uint32 nand_copy_back_addr_x; | |
531 | uint32 nand_copy_back_addr; | |
532 | uint32 nand_block_erase_addr_x; | |
533 | uint32 nand_block_erase_addr; | |
534 | uint32 nand_inv_read_addr_x; | |
535 | uint32 nand_inv_read_addr; | |
536 | uint32 PAD[2]; | |
537 | uint32 nand_blk_wr_protect; | |
538 | uint32 PAD[3]; | |
539 | uint32 nand_acc_control_cs1; | |
540 | uint32 nand_config_cs1; | |
541 | uint32 nand_timing_1_cs1; | |
542 | uint32 nand_timing_2_cs1; | |
543 | uint32 PAD[20]; | |
544 | uint32 nand_spare_rd16; | |
545 | uint32 nand_spare_rd20; | |
546 | uint32 nand_spare_rd24; | |
547 | uint32 nand_spare_rd28; | |
548 | uint32 nand_cache_addr; | |
549 | uint32 nand_cache_data; | |
550 | uint32 nand_ctrl_config; | |
551 | uint32 nand_ctrl_status; | |
552 | #endif /* CCNFLASH_SUPPORT */ | |
553 | /* Note: there is a clash between GCI and NFLASH. So, | |
554 | * we decided to have it like below. the functions accessing following | |
555 | * have to be protected with NFLASH_SUPPORT. The functions will | |
556 | * assert in case the clash happens. | |
557 | */ | |
558 | uint32 gci_corecaps0; /* GCI starting at 0xC00 */ | |
559 | uint32 gci_corecaps1; | |
560 | uint32 gci_corecaps2; | |
561 | uint32 gci_corectrl; | |
562 | uint32 gci_corestat; /* 0xC10 */ | |
563 | uint32 gci_intstat; /* 0xC14 */ | |
564 | uint32 gci_intmask; /* 0xC18 */ | |
565 | uint32 gci_wakemask; /* 0xC1C */ | |
566 | uint32 gci_levelintstat; /* 0xC20 */ | |
567 | uint32 gci_eventintstat; /* 0xC24 */ | |
568 | uint32 PAD[6]; | |
569 | uint32 gci_indirect_addr; /* 0xC40 */ | |
570 | uint32 gci_gpioctl; /* 0xC44 */ | |
571 | uint32 gci_gpiostatus; | |
572 | uint32 gci_gpiomask; /* 0xC4C */ | |
573 | uint32 gci_eventsummary; /* 0xC50 */ | |
574 | uint32 gci_miscctl; /* 0xC54 */ | |
575 | uint32 gci_gpiointmask; | |
576 | uint32 gci_gpiowakemask; | |
577 | uint32 gci_input[32]; /* C60 */ | |
578 | uint32 gci_event[32]; /* CE0 */ | |
579 | uint32 gci_output[4]; /* D60 */ | |
580 | uint32 gci_control_0; /* 0xD70 */ | |
581 | uint32 gci_control_1; /* 0xD74 */ | |
582 | uint32 gci_intpolreg; /* 0xD78 */ | |
583 | uint32 gci_levelintmask; /* 0xD7C */ | |
584 | uint32 gci_eventintmask; /* 0xD80 */ | |
585 | uint32 PAD[3]; | |
586 | uint32 gci_inbandlevelintmask; /* 0xD90 */ | |
587 | uint32 gci_inbandeventintmask; /* 0xD94 */ | |
588 | uint32 PAD[2]; | |
589 | uint32 gci_seciauxtx; /* 0xDA0 */ | |
590 | uint32 gci_seciauxrx; /* 0xDA4 */ | |
591 | uint32 gci_secitx_datatag; /* 0xDA8 */ | |
592 | uint32 gci_secirx_datatag; /* 0xDAC */ | |
593 | uint32 gci_secitx_datamask; /* 0xDB0 */ | |
594 | uint32 gci_seciusef0tx_reg; /* 0xDB4 */ | |
595 | uint32 gci_secif0tx_offset; /* 0xDB8 */ | |
596 | uint32 gci_secif0rx_offset; /* 0xDBC */ | |
597 | uint32 gci_secif1tx_offset; /* 0xDC0 */ | |
598 | uint32 gci_rxfifo_common_ctrl; /* 0xDC4 */ | |
599 | uint32 gci_rxfifoctrl; /* 0xDC8 */ | |
600 | uint32 gci_uartreadid; /* DCC */ | |
601 | uint32 gci_seciuartescval; /* DD0 */ | |
602 | uint32 PAD; | |
603 | uint32 gci_secififolevel; /* DD8 */ | |
604 | uint32 gci_seciuartdata; /* DDC */ | |
605 | uint32 gci_secibauddiv; /* DE0 */ | |
606 | uint32 gci_secifcr; /* DE4 */ | |
607 | uint32 gci_secilcr; /* DE8 */ | |
608 | uint32 gci_secimcr; /* DEC */ | |
609 | uint32 gci_secilsr; /* DF0 */ | |
610 | uint32 gci_secimsr; /* DF4 */ | |
611 | uint32 gci_baudadj; /* DF8 */ | |
612 | uint32 PAD; | |
613 | uint32 gci_chipctrl; /* 0xE00 */ | |
614 | uint32 gci_chipsts; /* 0xE04 */ | |
615 | uint32 gci_gpioout; /* 0xE08 */ | |
616 | uint32 gci_gpioout_read; /* 0xE0C */ | |
617 | uint32 gci_mpwaketx; /* 0xE10 */ | |
618 | uint32 gci_mpwakedetect; /* 0xE14 */ | |
619 | uint32 gci_seciin_ctrl; /* 0xE18 */ | |
620 | uint32 gci_seciout_ctrl; /* 0xE1C */ | |
621 | uint32 gci_seciin_auxfifo_en; /* 0xE20 */ | |
622 | uint32 gci_seciout_txen_txbr; /* 0xE24 */ | |
623 | uint32 gci_seciin_rxbrstatus; /* 0xE28 */ | |
624 | uint32 gci_seciin_rxerrstatus; /* 0xE2C */ | |
625 | uint32 gci_seciin_fcstatus; /* 0xE30 */ | |
626 | uint32 gci_seciout_txstatus; /* 0xE34 */ | |
627 | uint32 gci_seciout_txbrstatus; /* 0xE38 */ | |
628 | } chipcregs_t; | |
629 | ||
630 | #endif /* !_LANGUAGE_ASSEMBLY && !__ASSEMBLY__ */ | |
631 | ||
632 | #define CC_CHIPID 0 | |
633 | #define CC_CAPABILITIES 4 | |
634 | #define CC_CHIPST 0x2c | |
635 | #define CC_EROMPTR 0xfc | |
636 | ||
637 | #define CC_OTPST 0x10 | |
638 | #define CC_INTSTATUS 0x20 | |
639 | #define CC_INTMASK 0x24 | |
640 | #define CC_JTAGCMD 0x30 | |
641 | #define CC_JTAGIR 0x34 | |
642 | #define CC_JTAGDR 0x38 | |
643 | #define CC_JTAGCTRL 0x3c | |
644 | #define CC_GPIOPU 0x58 | |
645 | #define CC_GPIOPD 0x5c | |
646 | #define CC_GPIOIN 0x60 | |
647 | #define CC_GPIOOUT 0x64 | |
648 | #define CC_GPIOOUTEN 0x68 | |
649 | #define CC_GPIOCTRL 0x6c | |
650 | #define CC_GPIOPOL 0x70 | |
651 | #define CC_GPIOINTM 0x74 | |
652 | #define CC_GPIOEVENT 0x78 | |
653 | #define CC_GPIOEVENTMASK 0x7c | |
654 | #define CC_WATCHDOG 0x80 | |
655 | #define CC_GPIOEVENTPOL 0x84 | |
656 | #define CC_CLKC_N 0x90 | |
657 | #define CC_CLKC_M0 0x94 | |
658 | #define CC_CLKC_M1 0x98 | |
659 | #define CC_CLKC_M2 0x9c | |
660 | #define CC_CLKC_M3 0xa0 | |
661 | #define CC_CLKDIV 0xa4 | |
662 | #define CC_CAP_EXT 0xac | |
663 | #define CC_SYS_CLK_CTL 0xc0 | |
664 | #define CC_BP_ADRLOW 0xd0 | |
665 | #define CC_BP_ADRHI 0xd4 | |
666 | #define CC_BP_DATA 0xd8 | |
667 | #define CC_SCR_DHD_TO_BL CC_BP_ADRHI | |
668 | #define CC_SCR_BL_TO_DHD CC_BP_ADRLOW | |
669 | #define CC_CLKDIV2 0xf0 | |
670 | #define CC_CLK_CTL_ST SI_CLK_CTL_ST | |
671 | #define PMU_CTL 0x600 | |
672 | #define PMU_CAP 0x604 | |
673 | #define PMU_ST 0x608 | |
674 | #define PMU_RES_STATE 0x60c | |
675 | #define PMU_RES_PENDING 0x610 | |
676 | #define PMU_TIMER 0x614 | |
677 | #define PMU_MIN_RES_MASK 0x618 | |
678 | #define PMU_MAX_RES_MASK 0x61c | |
679 | #define CC_CHIPCTL_ADDR 0x650 | |
680 | #define CC_CHIPCTL_DATA 0x654 | |
681 | #define PMU_REG_CONTROL_ADDR 0x658 | |
682 | #define PMU_REG_CONTROL_DATA 0x65C | |
683 | #define PMU_PLL_CONTROL_ADDR 0x660 | |
684 | #define PMU_PLL_CONTROL_DATA 0x664 | |
685 | #define PMU_RSRC_CONTROL_MASK 0x7B0 | |
686 | ||
687 | #define CC_SROM_CTRL 0x190 | |
688 | #define CC_SROM_ADDRESS 0x194u | |
689 | #define CC_SROM_DATA 0x198u | |
690 | #define CC_SROM_OTP 0x0800 | |
691 | #define CC_GCI_INDIRECT_ADDR_REG 0xC40 | |
692 | #define CC_GCI_CHIP_CTRL_REG 0xE00 | |
693 | #define CC_GCI_CC_OFFSET_2 2 | |
694 | #define CC_GCI_CC_OFFSET_5 5 | |
695 | #define CC_SWD_CTRL 0x380 | |
696 | #define CC_SWD_REQACK 0x384 | |
697 | #define CC_SWD_DATA 0x388 | |
698 | #define GPIO_SEL_0 0x00001111 | |
699 | #define GPIO_SEL_1 0x11110000 | |
700 | #define GPIO_SEL_8 0x00001111 | |
701 | #define GPIO_SEL_9 0x11110000 | |
702 | ||
703 | #define CHIPCTRLREG0 0x0 | |
704 | #define CHIPCTRLREG1 0x1 | |
705 | #define CHIPCTRLREG2 0x2 | |
706 | #define CHIPCTRLREG3 0x3 | |
707 | #define CHIPCTRLREG4 0x4 | |
708 | #define CHIPCTRLREG5 0x5 | |
709 | #define CHIPCTRLREG6 0x6 | |
710 | #define CHIPCTRLREG13 0xd | |
711 | #define CHIPCTRLREG16 0x10 | |
712 | #define REGCTRLREG4 0x4 | |
713 | #define REGCTRLREG5 0x5 | |
714 | #define REGCTRLREG6 0x6 | |
715 | #define MINRESMASKREG 0x618 | |
716 | #define MAXRESMASKREG 0x61c | |
717 | #define CHIPCTRLADDR 0x650 | |
718 | #define CHIPCTRLDATA 0x654 | |
719 | #define RSRCTABLEADDR 0x620 | |
720 | #define PMU_RES_DEP_MASK 0x624 | |
721 | #define RSRCUPDWNTIME 0x628 | |
722 | #define PMUREG_RESREQ_MASK 0x68c | |
723 | #define PMUREG_RESREQ_TIMER 0x688 | |
724 | #define PMUREG_RESREQ_MASK1 0x6f4 | |
725 | #define PMUREG_RESREQ_TIMER1 0x6f0 | |
726 | #define EXT_LPO_AVAIL 0x100 | |
727 | #define LPO_SEL (1 << 0) | |
728 | #define CC_EXT_LPO_PU 0x200000 | |
729 | #define GC_EXT_LPO_PU 0x2 | |
730 | #define CC_INT_LPO_PU 0x100000 | |
731 | #define GC_INT_LPO_PU 0x1 | |
732 | #define EXT_LPO_SEL 0x8 | |
733 | #define INT_LPO_SEL 0x4 | |
734 | #define ENABLE_FINE_CBUCK_CTRL (1 << 30) | |
735 | #define REGCTRL5_PWM_AUTO_CTRL_MASK 0x007e0000 | |
736 | #define REGCTRL5_PWM_AUTO_CTRL_SHIFT 17 | |
737 | #define REGCTRL6_PWM_AUTO_CTRL_MASK 0x3fff0000 | |
738 | #define REGCTRL6_PWM_AUTO_CTRL_SHIFT 16 | |
739 | #define CC_BP_IND_ACCESS_START_SHIFT 9 | |
740 | #define CC_BP_IND_ACCESS_START_MASK (1 << CC_BP_IND_ACCESS_START_SHIFT) | |
741 | #define CC_BP_IND_ACCESS_RDWR_SHIFT 8 | |
742 | #define CC_BP_IND_ACCESS_RDWR_MASK (1 << CC_BP_IND_ACCESS_RDWR_SHIFT) | |
743 | #define CC_BP_IND_ACCESS_ERROR_SHIFT 10 | |
744 | #define CC_BP_IND_ACCESS_ERROR_MASK (1 << CC_BP_IND_ACCESS_ERROR_SHIFT) | |
745 | #define GC_BT_CTRL_UARTPADS_OVRD_EN (1u << 1) | |
746 | ||
747 | #define LPO_SEL_TIMEOUT 1000 | |
748 | ||
749 | #define LPO_FINAL_SEL_SHIFT 18 | |
750 | ||
751 | #define LHL_LPO1_SEL 0 | |
752 | #define LHL_LPO2_SEL 0x1 | |
753 | #define LHL_32k_SEL 0x2 | |
754 | #define LHL_EXT_SEL 0x3 | |
755 | ||
756 | #define EXTLPO_BUF_PD 0x40 | |
757 | #define LPO1_PD_EN 0x1 | |
758 | #define LPO1_PD_SEL 0x6 | |
759 | #define LPO1_PD_SEL_VAL 0x4 | |
760 | #define LPO2_PD_EN 0x8 | |
761 | #define LPO2_PD_SEL 0x30 | |
762 | #define LPO2_PD_SEL_VAL 0x20 | |
763 | #define OSC_32k_PD 0x80 | |
764 | ||
765 | #define LHL_CLK_DET_CTL_AD_CNTR_CLK_SEL 0x3 | |
766 | ||
767 | #define LHL_LPO_AUTO 0x0 | |
768 | #define LHL_LPO1_ENAB 0x1 | |
769 | #define LHL_LPO2_ENAB 0x2 | |
770 | #define LHL_OSC_32k_ENAB 0x3 | |
771 | #define LHL_EXT_LPO_ENAB 0x4 | |
772 | #define RADIO_LPO_ENAB 0x5 | |
773 | ||
774 | #define LHL_CLK_DET_CTL_ADR_LHL_CNTR_EN 0x4 | |
775 | #define LHL_CLK_DET_CTL_ADR_LHL_CNTR_CLR 0x8 | |
776 | #define LHL_CLK_DET_CNT 0xF0 | |
777 | #define LHL_CLK_DET_CNT_SHIFT 4 | |
778 | #define LPO_SEL_SHIFT 9 | |
779 | ||
780 | #define LHL_MAIN_CTL_ADR_FINAL_CLK_SEL 0x3C0000 | |
781 | #define LHL_MAIN_CTL_ADR_LHL_WLCLK_SEL 0x600 | |
782 | ||
783 | #define CLK_DET_CNT_THRESH 8 | |
784 | ||
785 | #ifdef SR_DEBUG | |
786 | #define SUBCORE_POWER_ON 0x0001 | |
787 | #define PHY_POWER_ON 0x0010 | |
788 | #define VDDM_POWER_ON 0x0100 | |
789 | #define MEMLPLDO_POWER_ON 0x1000 | |
790 | #define SUBCORE_POWER_ON_CHK 0x00040000 | |
791 | #define PHY_POWER_ON_CHK 0x00080000 | |
792 | #define VDDM_POWER_ON_CHK 0x00100000 | |
793 | #define MEMLPLDO_POWER_ON_CHK 0x00200000 | |
794 | #endif /* SR_DEBUG */ | |
795 | ||
796 | #ifdef CCNFLASH_SUPPORT | |
797 | /* NAND flash support */ | |
798 | #define CC_NAND_REVISION 0xC00 | |
799 | #define CC_NAND_CMD_START 0xC04 | |
800 | #define CC_NAND_CMD_ADDR 0xC0C | |
801 | #define CC_NAND_SPARE_RD_0 0xC20 | |
802 | #define CC_NAND_SPARE_RD_4 0xC24 | |
803 | #define CC_NAND_SPARE_RD_8 0xC28 | |
804 | #define CC_NAND_SPARE_RD_C 0xC2C | |
805 | #define CC_NAND_CONFIG 0xC48 | |
806 | #define CC_NAND_DEVID 0xC60 | |
807 | #define CC_NAND_DEVID_EXT 0xC64 | |
808 | #define CC_NAND_INTFC_STATUS 0xC6C | |
809 | #endif /* CCNFLASH_SUPPORT */ | |
810 | ||
811 | /* chipid */ | |
812 | #define CID_ID_MASK 0x0000ffff /**< Chip Id mask */ | |
813 | #define CID_REV_MASK 0x000f0000 /**< Chip Revision mask */ | |
814 | #define CID_REV_SHIFT 16 /**< Chip Revision shift */ | |
815 | #define CID_PKG_MASK 0x00f00000 /**< Package Option mask */ | |
816 | #define CID_PKG_SHIFT 20 /**< Package Option shift */ | |
817 | #define CID_CC_MASK 0x0f000000 /**< CoreCount (corerev >= 4) */ | |
818 | #define CID_CC_SHIFT 24 | |
819 | #define CID_TYPE_MASK 0xf0000000 /**< Chip Type */ | |
820 | #define CID_TYPE_SHIFT 28 | |
821 | ||
822 | /* capabilities */ | |
823 | #define CC_CAP_UARTS_MASK 0x00000003u /**< Number of UARTs */ | |
824 | #define CC_CAP_MIPSEB 0x00000004u /**< MIPS is in big-endian mode */ | |
825 | #define CC_CAP_UCLKSEL 0x00000018u /**< UARTs clock select */ | |
826 | #define CC_CAP_UINTCLK 0x00000008u /**< UARTs are driven by internal divided clock */ | |
827 | #define CC_CAP_UARTGPIO 0x00000020u /**< UARTs own GPIOs 15:12 */ | |
828 | #define CC_CAP_EXTBUS_MASK 0x000000c0u /**< External bus mask */ | |
829 | #define CC_CAP_EXTBUS_NONE 0x00000000u /**< No ExtBus present */ | |
830 | #define CC_CAP_EXTBUS_FULL 0x00000040u /**< ExtBus: PCMCIA, IDE & Prog */ | |
831 | #define CC_CAP_EXTBUS_PROG 0x00000080u /**< ExtBus: ProgIf only */ | |
832 | #define CC_CAP_FLASH_MASK 0x00000700u /**< Type of flash */ | |
833 | #define CC_CAP_PLL_MASK 0x00038000u /**< Type of PLL */ | |
834 | #define CC_CAP_PWR_CTL 0x00040000u /**< Power control */ | |
835 | #define CC_CAP_OTPSIZE 0x00380000u /**< OTP Size (0 = none) */ | |
836 | #define CC_CAP_OTPSIZE_SHIFT 19 /**< OTP Size shift */ | |
837 | #define CC_CAP_OTPSIZE_BASE 5 /**< OTP Size base */ | |
838 | #define CC_CAP_JTAGP 0x00400000u /**< JTAG Master Present */ | |
839 | #define CC_CAP_ROM 0x00800000u /**< Internal boot rom active */ | |
840 | #define CC_CAP_BKPLN64 0x08000000u /**< 64-bit backplane */ | |
841 | #define CC_CAP_PMU 0x10000000u /**< PMU Present, rev >= 20 */ | |
842 | #define CC_CAP_ECI 0x20000000u /**< ECI Present, rev >= 21 */ | |
843 | #define CC_CAP_SROM 0x40000000u /**< Srom Present, rev >= 32 */ | |
844 | #define CC_CAP_NFLASH 0x80000000u /**< Nand flash present, rev >= 35 */ | |
845 | ||
846 | #define CC_CAP2_SECI 0x00000001u /**< SECI Present, rev >= 36 */ | |
847 | #define CC_CAP2_GSIO 0x00000002u /**< GSIO (spi/i2c) present, rev >= 37 */ | |
848 | ||
849 | /* capabilities extension */ | |
850 | #define CC_CAP_EXT_SECI_PRESENT 0x00000001u /**< SECI present */ | |
851 | #define CC_CAP_EXT_GSIO_PRESENT 0x00000002u /**< GSIO present */ | |
852 | #define CC_CAP_EXT_GCI_PRESENT 0x00000004u /**< GCI present */ | |
853 | #define CC_CAP_EXT_SECI_PUART_PRESENT 0x00000008u /**< UART present */ | |
854 | #define CC_CAP_EXT_AOB_PRESENT 0x00000040u /**< AOB present */ | |
855 | #define CC_CAP_EXT_SWD_PRESENT 0x00000400u /**< SWD present */ | |
856 | #define CC_CAP_SR_AON_PRESENT 0x0001E000u /**< SWD present */ | |
857 | #define CC_CAP_EXT1_DVFS_PRESENT 0x00001000u /**< DVFS present */ | |
858 | ||
859 | /* SpmCtrl (Chipcommon Offset 0x690) | |
860 | * Bits 27:16 AlpDiv | |
861 | * Clock divider control for dividing ALP or TCK clock | |
862 | * (bit 8 determines ALP vs TCK) | |
863 | * Bits 8 UseDivTck | |
864 | * See UseDivAlp (bit 1) for more details | |
865 | * Bits 7:6 DebugMuxSel | |
866 | * Controls the debug mux for SpmDebug register | |
867 | * Bits 5 IntPending | |
868 | * This field is set to 1 when any of the bits in IntHiStatus or IntLoStatus | |
869 | * is set. It is automatically cleared after reading and clearing the | |
870 | * IntHiStatus and IntLoStatus registers. This bit is Read only. | |
871 | * Bits 4 SpmIdle | |
872 | * Indicates whether the spm controller is running (SpmIdle=0) or in idle | |
873 | * state (SpmIdle=1); Note that after setting Spmen=1 (or 0), it takes a | |
874 | * few clock cycles (ILP or divided ALP) for SpmIdle to go to 0 (or 1). | |
875 | * This bit is Read only. | |
876 | * Bits 3 RoDisOutput | |
877 | * Debug register - gate off all the SPM ring oscillator clock outputs | |
878 | * Bits 2 RstSpm | |
879 | * Reset spm controller. | |
880 | * Put spm in reset before changing UseDivAlp and AlpDiv | |
881 | * Bits 1 UseDivAlp | |
882 | * This field, along with UseDivTck, selects the clock as the reference clock | |
883 | * Bits [UseDivTck,UseDivAlp]: | |
884 | * 00 - Use ILP clock as reference clock | |
885 | * 01 - Use divided ALP clock | |
886 | * 10 - Use divided jtag TCK | |
887 | * Bits 0 Spmen | |
888 | * 0 - SPM disabled | |
889 | * 1 - SPM enabled | |
890 | * Program all the SPM controls before enabling spm. For one-shot operation, | |
891 | * SpmIdle indicates when the one-shot run has completed. After one-shot | |
892 | * completion, spmen needs to be disabled first before enabling again. | |
893 | */ | |
894 | #define SPMCTRL_ALPDIV_FUNC 0x1ffu | |
895 | #define SPMCTRL_ALPDIV_RO 0xfffu | |
896 | #define SPMCTRL_ALPDIV_SHIFT 16u | |
897 | #define SPMCTRL_ALPDIV_MASK (0xfffu << SPMCTRL_ALPDIV_SHIFT) | |
898 | #define SPMCTRL_RSTSPM 0x1u | |
899 | #define SPMCTRL_RSTSPM_SHIFT 2u | |
900 | #define SPMCTRL_RSTSPM_MASK (0x1u << SPMCTRL_RSTSPM_SHIFT) | |
901 | #define SPMCTRL_USEDIVALP 0x1u | |
902 | #define SPMCTRL_USEDIVALP_SHIFT 1u | |
903 | #define SPMCTRL_USEDIVALP_MASK (0x1u << SPMCTRL_USEDIVALP_SHIFT) | |
904 | #define SPMCTRL_SPMEN 0x1u | |
905 | #define SPMCTRL_SPMEN_SHIFT 0u | |
906 | #define SPMCTRL_SPMEN_MASK (0x1u << SPMCTRL_SPMEN_SHIFT) | |
907 | ||
908 | /* SpmClkCtrl (Chipcommon Offset 0x698) | |
909 | * Bits 31 OneShot | |
910 | * 0 means Take periodic measurements based on IntervalValue | |
911 | * 1 means Take a one shot measurement | |
912 | * when OneShot=1 IntervalValue determines the amount of time to wait before | |
913 | * taking the measurement | |
914 | * Bits 30:28 ROClkprediv1 | |
915 | * ROClkprediv1 and ROClkprediv2 controls the clock dividers of the RO clk | |
916 | * before it goes to the monitor | |
917 | * The RO clk goes through prediv1, followed by prediv2 | |
918 | * prediv1: | |
919 | * 0 - no divide | |
920 | * 1 - divide by 2 | |
921 | * 2 - divide by 4 | |
922 | * 3 - divide by 8 | |
923 | * 4 - divide by 16 | |
924 | * 5 - divide by 32 | |
925 | * prediv2: | |
926 | * 0 - no divide | |
927 | * 1 to 15 - divide by (prediv2+1) | |
928 | */ | |
929 | #define SPMCLKCTRL_SAMPLETIME 0x2u | |
930 | #define SPMCLKCTRL_SAMPLETIME_SHIFT 24u | |
931 | #define SPMCLKCTRL_SAMPLETIME_MASK (0xfu << SPMCLKCTRL_SAMPLETIME_SHIFT) | |
932 | #define SPMCLKCTRL_ONESHOT 0x1u | |
933 | #define SPMCLKCTRL_ONESHOT_SHIFT 31u | |
934 | #define SPMCLKCTRL_ONESHOT_MASK (0x1u << SPMCLKCTRL_ONESHOT_SHIFT) | |
935 | ||
936 | /* MonCtrlN (Chipcommon Offset 0x6a8) | |
937 | * Bits 15:8 TargetRo | |
938 | * The target ring oscillator to observe | |
939 | * Bits 7:6 TargetRoExt | |
940 | * Extended select option to choose the target clock to monitor; | |
941 | * 00 - selects ring oscillator clock; | |
942 | * 10 - selects functional clock; | |
943 | * 11 - selects DFT clocks; | |
944 | * Bits 15:8 (TargetRO) is used to select the specific RO or functional or | |
945 | * DFT clock | |
946 | * Bits 3 intHiEn | |
947 | * Interrupt hi enable (MonEn should be 1) | |
948 | * Bits 2 intLoEn | |
949 | * Interrupt hi enable (MonEn should be 1) | |
950 | * Bits 1 HwEnable | |
951 | * TBD | |
952 | * Bits 0 MonEn | |
953 | * Enable monitor, interrupt and watermark functions | |
954 | */ | |
955 | #define MONCTRLN_TARGETRO_PMU_ALP_CLK 0u | |
956 | #define MONCTRLN_TARGETRO_PCIE_ALP_CLK 1u | |
957 | #define MONCTRLN_TARGETRO_CB_BP_CLK 2u | |
958 | #define MONCTRLN_TARGETRO_ARMCR4_CLK_4387B0 3u | |
959 | #define MONCTRLN_TARGETRO_ARMCR4_CLK_4387C0 20u | |
960 | #define MONCTRLN_TARGETRO_SHIFT 8u | |
961 | #define MONCTRLN_TARGETRO_MASK (0xffu << MONCTRLN_TARGETRO_SHIFT) | |
962 | #define MONCTRLN_TARGETROMAX 64u | |
963 | #define MONCTRLN_TARGETROHI 32u | |
964 | #define MONCTRLN_TARGETROEXT_RO 0x0u | |
965 | #define MONCTRLN_TARGETROEXT_FUNC 0x2u | |
966 | #define MONCTRLN_TARGETROEXT_DFT 0x3u | |
967 | #define MONCTRLN_TARGETROEXT_SHIFT 6u | |
968 | #define MONCTRLN_TARGETROEXT_MASK (0x3u << MONCTRLN_TARGETROEXT_SHIFT) | |
969 | #define MONCTRLN_MONEN 0x1u | |
970 | #define MONCTRLN_MONEN_SHIFT 0u | |
971 | #define MONCTRLN_MONEN_MASK (0x1u << MONCTRLN_MONENEXT_SHIFT) | |
972 | ||
973 | /* DvfsCoreCtrlN | |
974 | * Bits 10 Request_override_PDn | |
975 | * When set, the dvfs_request logic for this core is overridden with the | |
976 | * content in Request_val_PDn. This field is ignored when | |
977 | * DVFSCtrl1.dvfs_req_override is set. | |
978 | * Bits 9:8 Request_val_PDn | |
979 | * see Request_override_PDn description | |
980 | * Bits 4:0 DVFS_RsrcTrig_PDn | |
981 | * Specifies the pmu resource that is used to trigger the DVFS request for | |
982 | * this core request. Current plan is to use the appropriate PWRSW_* pmu | |
983 | * resource each power domain / cores | |
984 | */ | |
985 | #define CTRLN_REQUEST_OVERRIDE_SHIFT 10u | |
986 | #define CTRLN_REQUEST_OVERRIDE_MASK (0x1u << CTRLN_REQUEST_OVERRIDE_SHIFT) | |
987 | #define CTRLN_REQUEST_VAL_SHIFT 8u | |
988 | #define CTRLN_REQUEST_VAL_MASK (0x3u << CTRLN_REQUEST_VAL_SHIFT) | |
989 | #define CTRLN_RSRC_TRIG_SHIFT 0u | |
990 | #define CTRLN_RSRC_TRIG_MASK (0x1Fu << CTRLN_RSRC_TRIG_SHIFT) | |
991 | #define CTRLN_RSRC_TRIG_CHIPC 0x1Au | |
992 | #define CTRLN_RSRC_TRIG_PCIE 0x1Au | |
993 | #define CTRLN_RSRC_TRIG_ARM 0x8u | |
994 | #define CTRLN_RSRC_TRIG_D11_MAIN 0xEu | |
995 | #define CTRLN_RSRC_TRIG_D11_AUX 0xBu | |
996 | #define CTRLN_RSRC_TRIG_D11_SCAN 0xCu | |
997 | #define CTRLN_RSRC_TRIG_BT_MAIN 0x9u | |
998 | #define CTRLN_RSRC_TRIG_BT_SCAN 0xAu | |
999 | ||
1000 | #define DVFS_CORE_CHIPC 0u | |
1001 | #define DVFS_CORE_PCIE 1u | |
1002 | #define DVFS_CORE_ARM 2u | |
1003 | #define DVFS_CORE_D11_MAIN 3u | |
1004 | #define DVFS_CORE_D11_AUX 4u | |
1005 | #define DVFS_CORE_D11_SCAN 5u | |
1006 | #define DVFS_CORE_BT_MAIN 6u | |
1007 | #define DVFS_CORE_BT_SCAN 7u | |
1008 | #define DVFS_CORE_MASK 7u | |
1009 | ||
1010 | /* DVFS_Ctrl2 (PMU_BASE + 0x814) | |
1011 | * Bits 31:28 Voltage ramp down step | |
1012 | * Voltage increment amount during ramp down (10mv units) | |
1013 | * Bits 27:24 Voltage ramp up step | |
1014 | * Voltage increment amount during ramp up (10mv units) | |
1015 | * Bits 23:16 Voltage ramp down interval | |
1016 | * Number of clocks to wait during each voltage decrement | |
1017 | * Bits 15:8 Voltage ramp up interval | |
1018 | * Number of clocks to wait during each voltage increment | |
1019 | * Bits 7:0 Clock stable time | |
1020 | * Number of clocks to wait after dvfs_clk_sel is asserted | |
1021 | */ | |
1022 | #define DVFS_VOLTAGE_RAMP_DOWN_STEP 1u | |
1023 | #define DVFS_VOLTAGE_RAMP_DOWN_STEP_SHIFT 28u | |
1024 | #define DVFS_VOLTAGE_RAMP_DOWN_STEP_MASK (0xFu << DVFS_VOLTAGE_RAMP_DOWN_STEP_SHIFT) | |
1025 | #define DVFS_VOLTAGE_RAMP_UP_STEP 1u | |
1026 | #define DVFS_VOLTAGE_RAMP_UP_STEP_SHIFT 24u | |
1027 | #define DVFS_VOLTAGE_RAMP_UP_STEP_MASK (0xFu << DVFS_VOLTAGE_RAMP_UP_STEP_SHIFT) | |
1028 | #define DVFS_VOLTAGE_RAMP_DOWN_INTERVAL 1u | |
1029 | #define DVFS_VOLTAGE_RAMP_DOWN_INTERVAL_SHIFT 16u | |
1030 | #define DVFS_VOLTAGE_RAMP_DOWN_INTERVAL_MASK (0xFFu << DVFS_VOLTAGE_RAMP_DOWN_INTERVAL_SHIFT) | |
1031 | #define DVFS_VOLTAGE_RAMP_UP_INTERVAL 1u | |
1032 | #define DVFS_VOLTAGE_RAMP_UP_INTERVAL_SHIFT 8u | |
1033 | #define DVFS_VOLTAGE_RAMP_UP_INTERVAL_MASK (0xFFu << DVFS_VOLTAGE_RAMP_UP_INTERVAL_SHIFT) | |
1034 | #define DVFS_CLOCK_STABLE_TIME 3u | |
1035 | #define DVFS_CLOCK_STABLE_TIME_SHIFT 0 | |
1036 | #define DVFS_CLOCK_STABLE_TIME_MASK (0xFFu << DVFS_CLOCK_STABLE_TIME_SHIFT) | |
1037 | ||
1038 | /* DVFS_Voltage (PMU_BASE + 0x818) | |
1039 | * Bits 22:16 HDV Voltage | |
1040 | * Specifies the target HDV voltage in 10mv units | |
1041 | * Bits 14:8 NDV Voltage | |
1042 | * Specifies the target NDV voltage in 10mv units | |
1043 | * Bits 6:0 LDV Voltage | |
1044 | * Specifies the target LDV voltage in 10mv units | |
1045 | */ | |
1046 | #define DVFS_VOLTAGE_XDV 0u /* Reserved */ | |
1047 | #define DVFS_VOLTAGE_HDV 72u /* 0.72V */ | |
1048 | #define DVFS_VOLTAGE_HDV_PWR_OPT 68u /* 0.68V */ | |
1049 | #define DVFS_VOLTAGE_HDV_SHIFT 16u | |
1050 | #define DVFS_VOLTAGE_HDV_MASK (0x7Fu << DVFS_VOLTAGE_HDV_SHIFT) | |
1051 | #define DVFS_VOLTAGE_NDV 72u /* 0.72V */ | |
1052 | #define DVFS_VOLTAGE_NDV_PWR_OPT 68u /* 0.68V */ | |
1053 | #define DVFS_VOLTAGE_NDV_SHIFT 8u | |
1054 | #define DVFS_VOLTAGE_NDV_MASK (0x7Fu << DVFS_VOLTAGE_NDV_SHIFT) | |
1055 | #define DVFS_VOLTAGE_LDV 65u /* 0.65V */ | |
1056 | #define DVFS_VOLTAGE_LDV_PWR_OPT 65u /* 0.65V */ | |
1057 | #define DVFS_VOLTAGE_LDV_SHIFT 0u | |
1058 | #define DVFS_VOLTAGE_LDV_MASK (0x7Fu << DVFS_VOLTAGE_LDV_SHIFT) | |
1059 | ||
1060 | /* DVFS_Status (PMU_BASE + 0x81C) | |
1061 | * Bits 27:26 Raw_Core_Reqn | |
1062 | * Bits 25:24 Active_Core_Reqn | |
1063 | * Bits 12:11 Core_dvfs_status | |
1064 | * Bits 9:8 Dvfs_clk_sel | |
1065 | * 00 - LDV | |
1066 | * 01 - NDV | |
1067 | * Bits 6:0 Dvfs Voltage | |
1068 | * The real time voltage that is being output from the dvfs controller | |
1069 | */ | |
1070 | #define DVFS_RAW_CORE_REQ_SHIFT 26u | |
1071 | #define DVFS_RAW_CORE_REQ_MASK (0x3u << DVFS_RAW_CORE_REQ_SHIFT) | |
1072 | #define DVFS_ACT_CORE_REQ_SHIFT 24u | |
1073 | #define DVFS_ACT_CORE_REQ_MASK (0x3u << DVFS_ACT_CORE_REQ_SHIFT) | |
1074 | #define DVFS_CORE_STATUS_SHIFT 11u | |
1075 | #define DVFS_CORE_STATUS_MASK (0x3u << DVFS_CORE_STATUS_SHIFT) | |
1076 | #define DVFS_CLK_SEL_SHIFT 8u | |
1077 | #define DVFS_CLK_SEL_MASK (0x3u << DVFS_CLK_SEL_SHIFT) | |
1078 | #define DVFS_VOLTAGE_SHIFT 0u | |
1079 | #define DVFS_VOLTAGE_MASK (0x7Fu << DVFS_VOLTAGE_SHIFT) | |
1080 | ||
1081 | /* DVFS_Ctrl1 (PMU_BASE + 0x810) | |
1082 | * Bits 0 Enable DVFS | |
1083 | * This bit will enable DVFS operation. When cleared, the complete DVFS | |
1084 | * controller is bypassed and DVFS_voltage output will be the contents of | |
1085 | * NDV voltage register | |
1086 | */ | |
1087 | #define DVFS_DISABLE_DVFS 0u | |
1088 | #define DVFS_ENABLE_DVFS 1u | |
1089 | #define DVFS_ENABLE_DVFS_SHIFT 0u | |
1090 | #define DVFS_ENABLE_DVFS_MASK (1u << DVFS_ENABLE_DVFS_SHIFT) | |
1091 | ||
1092 | #define DVFS_LPO_DELAY 40u /* usec (1 LPO clock + margin) */ | |
1093 | #define DVFS_FASTLPO_DELAY 2u /* usec (1 FAST_LPO clock + margin) */ | |
1094 | #define DVFS_NDV_LPO_DELAY 1500u | |
1095 | #define DVFS_NDV_FASTLPO_DELAY 50u | |
1096 | ||
1097 | #if defined(BCM_FASTLPO) && !defined(BCM_FASTLPO_DISABLED) | |
1098 | #define DVFS_DELAY DVFS_FASTLPO_DELAY | |
1099 | #define DVFS_NDV_DELAY DVFS_NDV_FASTLPO_DELAY | |
1100 | #else | |
1101 | #define DVFS_DELAY DVFS_LPO_DELAY | |
1102 | #define DVFS_NDV_DELAY DVFS_NDV_LPO_DELAY | |
1103 | #endif /* BCM_FASTLPO && !BCM_FASTLPO_DISABLED */ | |
1104 | ||
1105 | #define DVFS_LDV 0u | |
1106 | #define DVFS_NDV 1u | |
1107 | #define DVFS_HDV 2u | |
1108 | ||
1109 | /* PowerControl2 (Core Offset 0x1EC) | |
1110 | * Bits 17:16 DVFSStatus | |
1111 | * This 2-bit field is the DVFS voltage status mapped as | |
1112 | * 00 - LDV | |
1113 | * 01 - NDV | |
1114 | * 10 - HDV | |
1115 | * Bits 1:0 DVFSRequest | |
1116 | * This 2-bit field is used to request DVFS voltage mapped as shown above | |
1117 | */ | |
1118 | #define DVFS_REQ_LDV DVFS_LDV | |
1119 | #define DVFS_REQ_NDV DVFS_NDV | |
1120 | #define DVFS_REQ_HDV DVFS_HDV | |
1121 | #define DVFS_REQ_SHIFT 0u | |
1122 | #define DVFS_REQ_MASK (0x3u << DVFS_REQ_SHIFT) | |
1123 | #define DVFS_STATUS_SHIFT 16u | |
1124 | #define DVFS_STATUS_MASK (0x3u << DVFS_STATUS_SHIFT) | |
1125 | ||
1126 | /* GCI Chip Control 16 Register | |
1127 | * Bits 0 CB Clock sel | |
1128 | * 0 - 160MHz | |
1129 | * 1 - 80Mhz - BT can force CB backplane clock to 80Mhz when wl is down | |
1130 | */ | |
1131 | #define GCI_CC16_CB_CLOCK_SEL_160 0u | |
1132 | #define GCI_CC16_CB_CLOCK_SEL_80 1u | |
1133 | #define GCI_CC16_CB_CLOCK_SEL_SHIFT 0u | |
1134 | #define GCI_CC16_CB_CLOCK_SEL_MASK (0x1u << GCI_CC16_CB_CLOCK_SEL_SHIFT) | |
1135 | ||
1136 | /* WL Channel Info to BT via GCI - bits 40 - 47 */ | |
1137 | #define GCI_WL_CHN_INFO_MASK (0xFF00) | |
1138 | /* WL indication of MCHAN enabled/disabled to BT - bit 36 */ | |
1139 | #define GCI_WL_MCHAN_BIT_MASK (0x0010) | |
1140 | ||
1141 | #ifdef WLC_SW_DIVERSITY | |
1142 | /* WL indication of SWDIV enabled/disabled to BT - bit 33 */ | |
1143 | #define GCI_WL_SWDIV_ANT_VALID_BIT_MASK (0x0002) | |
1144 | #define GCI_SWDIV_ANT_VALID_SHIFT 0x1 | |
1145 | #define GCI_SWDIV_ANT_VALID_DISABLE 0x0 | |
1146 | #endif | |
1147 | ||
1148 | /* Indicate to BT that WL is scheduling ACL based ble scan grant */ | |
1149 | #define GCI_WL2BT_ACL_BSD_BLE_SCAN_GRNT_MASK 0x8000000 | |
1150 | /* WLAN is awake Indicate to BT */ | |
1151 | #define GCI_WL2BT_2G_AWAKE_MASK (1u << 27u) | |
1152 | ||
1153 | /* WL inidcation of Aux Core 2G hibernate status - bit 50 */ | |
1154 | #define GCI_WL2BT_2G_HIB_STATE_MASK (0x0040000u) | |
1155 | ||
1156 | /* WL Strobe to BT */ | |
1157 | #define GCI_WL_STROBE_BIT_MASK (0x0020) | |
1158 | /* bits [51:48] - reserved for wlan TX pwr index */ | |
1159 | /* bits [55:52] btc mode indication */ | |
1160 | #define GCI_WL_BTC_MODE_SHIFT (20) | |
1161 | #define GCI_WL_BTC_MODE_MASK (0xF << GCI_WL_BTC_MODE_SHIFT) | |
1162 | #define GCI_WL_ANT_BIT_MASK (0x00c0) | |
1163 | #define GCI_WL_ANT_SHIFT_BITS (6) | |
1164 | /* PLL type */ | |
1165 | #define PLL_NONE 0x00000000 | |
1166 | #define PLL_TYPE1 0x00010000 /**< 48MHz base, 3 dividers */ | |
1167 | #define PLL_TYPE2 0x00020000 /**< 48MHz, 4 dividers */ | |
1168 | #define PLL_TYPE3 0x00030000 /**< 25MHz, 2 dividers */ | |
1169 | #define PLL_TYPE4 0x00008000 /**< 48MHz, 4 dividers */ | |
1170 | #define PLL_TYPE5 0x00018000 /**< 25MHz, 4 dividers */ | |
1171 | #define PLL_TYPE6 0x00028000 /**< 100/200 or 120/240 only */ | |
1172 | #define PLL_TYPE7 0x00038000 /**< 25MHz, 4 dividers */ | |
1173 | ||
1174 | /* ILP clock */ | |
1175 | #define ILP_CLOCK 32000 | |
1176 | ||
1177 | /* ALP clock on pre-PMU chips */ | |
1178 | #define ALP_CLOCK 20000000 | |
1179 | ||
1180 | #ifdef CFG_SIM | |
1181 | #define NS_ALP_CLOCK 84922 | |
1182 | #define NS_SLOW_ALP_CLOCK 84922 | |
1183 | #define NS_CPU_CLOCK 534500 | |
1184 | #define NS_SLOW_CPU_CLOCK 534500 | |
1185 | #define NS_SI_CLOCK 271750 | |
1186 | #define NS_SLOW_SI_CLOCK 271750 | |
1187 | #define NS_FAST_MEM_CLOCK 271750 | |
1188 | #define NS_MEM_CLOCK 271750 | |
1189 | #define NS_SLOW_MEM_CLOCK 271750 | |
1190 | #else | |
1191 | #define NS_ALP_CLOCK 125000000 | |
1192 | #define NS_SLOW_ALP_CLOCK 100000000 | |
1193 | #define NS_CPU_CLOCK 1000000000 | |
1194 | #define NS_SLOW_CPU_CLOCK 800000000 | |
1195 | #define NS_SI_CLOCK 250000000 | |
1196 | #define NS_SLOW_SI_CLOCK 200000000 | |
1197 | #define NS_FAST_MEM_CLOCK 800000000 | |
1198 | #define NS_MEM_CLOCK 533000000 | |
1199 | #define NS_SLOW_MEM_CLOCK 400000000 | |
1200 | #endif /* CFG_SIM */ | |
1201 | ||
1202 | /* HT clock */ | |
1203 | #define HT_CLOCK 80000000 | |
1204 | ||
1205 | /* corecontrol */ | |
1206 | #define CC_UARTCLKO 0x00000001 /**< Drive UART with internal clock */ | |
1207 | #define CC_SE 0x00000002 /**< sync clk out enable (corerev >= 3) */ | |
1208 | #define CC_ASYNCGPIO 0x00000004 /**< 1=generate GPIO interrupt without backplane clock */ | |
1209 | #define CC_UARTCLKEN 0x00000008 /**< enable UART Clock (corerev > = 21 */ | |
1210 | #define CC_RBG_RESET 0x00000040 /**< Reset RBG block (corerev > = 65 */ | |
1211 | ||
1212 | /* retention_ctl */ | |
1213 | #define RCTL_MEM_RET_SLEEP_LOG_SHIFT 29 | |
1214 | #define RCTL_MEM_RET_SLEEP_LOG_MASK (1 << RCTL_MEM_RET_SLEEP_LOG_SHIFT) | |
1215 | ||
1216 | /* 4321 chipcontrol */ | |
1217 | #define CHIPCTRL_4321_PLL_DOWN 0x800000 /**< serdes PLL down override */ | |
1218 | ||
1219 | /* Fields in the otpstatus register in rev >= 21 */ | |
1220 | #define OTPS_OL_MASK 0x000000ff | |
1221 | #define OTPS_OL_MFG 0x00000001 /**< manuf row is locked */ | |
1222 | #define OTPS_OL_OR1 0x00000002 /**< otp redundancy row 1 is locked */ | |
1223 | #define OTPS_OL_OR2 0x00000004 /**< otp redundancy row 2 is locked */ | |
1224 | #define OTPS_OL_GU 0x00000008 /**< general use region is locked */ | |
1225 | #define OTPS_GUP_MASK 0x00000f00 | |
1226 | #define OTPS_GUP_SHIFT 8 | |
1227 | #define OTPS_GUP_HW 0x00000100 /**< h/w subregion is programmed */ | |
1228 | #define OTPS_GUP_SW 0x00000200 /**< s/w subregion is programmed */ | |
1229 | #define OTPS_GUP_CI 0x00000400 /**< chipid/pkgopt subregion is programmed */ | |
1230 | #define OTPS_GUP_FUSE 0x00000800 /**< fuse subregion is programmed */ | |
1231 | #define OTPS_READY 0x00001000 | |
1232 | #define OTPS_RV(x) (1 << (16 + (x))) /**< redundancy entry valid */ | |
1233 | #define OTPS_RV_MASK 0x0fff0000 | |
1234 | #define OTPS_PROGOK 0x40000000 | |
1235 | ||
1236 | /* Fields in the otpcontrol register in rev >= 21 */ | |
1237 | #define OTPC_PROGSEL 0x00000001 | |
1238 | #define OTPC_PCOUNT_MASK 0x0000000e | |
1239 | #define OTPC_PCOUNT_SHIFT 1 | |
1240 | #define OTPC_VSEL_MASK 0x000000f0 | |
1241 | #define OTPC_VSEL_SHIFT 4 | |
1242 | #define OTPC_TMM_MASK 0x00000700 | |
1243 | #define OTPC_TMM_SHIFT 8 | |
1244 | #define OTPC_ODM 0x00000800 | |
1245 | #define OTPC_PROGEN 0x80000000 | |
1246 | ||
1247 | /* Fields in the 40nm otpcontrol register in rev >= 40 */ | |
1248 | #define OTPC_40NM_PROGSEL_SHIFT 0 | |
1249 | #define OTPC_40NM_PCOUNT_SHIFT 1 | |
1250 | #define OTPC_40NM_PCOUNT_WR 0xA | |
1251 | #define OTPC_40NM_PCOUNT_V1X 0xB | |
1252 | #define OTPC_40NM_REGCSEL_SHIFT 5 | |
1253 | #define OTPC_40NM_REGCSEL_DEF 0x4 | |
1254 | #define OTPC_40NM_PROGIN_SHIFT 8 | |
1255 | #define OTPC_40NM_R2X_SHIFT 10 | |
1256 | #define OTPC_40NM_ODM_SHIFT 11 | |
1257 | #define OTPC_40NM_DF_SHIFT 15 | |
1258 | #define OTPC_40NM_VSEL_SHIFT 16 | |
1259 | #define OTPC_40NM_VSEL_WR 0xA | |
1260 | #define OTPC_40NM_VSEL_V1X 0xA | |
1261 | #define OTPC_40NM_VSEL_R1X 0x5 | |
1262 | #define OTPC_40NM_COFAIL_SHIFT 30 | |
1263 | ||
1264 | #define OTPC1_CPCSEL_SHIFT 0 | |
1265 | #define OTPC1_CPCSEL_DEF 6 | |
1266 | #define OTPC1_TM_SHIFT 8 | |
1267 | #define OTPC1_TM_WR 0x84 | |
1268 | #define OTPC1_TM_V1X 0x84 | |
1269 | #define OTPC1_TM_R1X 0x4 | |
1270 | #define OTPC1_CLK_EN_MASK 0x00020000 | |
1271 | #define OTPC1_CLK_DIV_MASK 0x00FC0000 | |
1272 | ||
1273 | /* Fields in otpprog in rev >= 21 and HND OTP */ | |
1274 | #define OTPP_COL_MASK 0x000000ff | |
1275 | #define OTPP_COL_SHIFT 0 | |
1276 | #define OTPP_ROW_MASK 0x0000ff00 | |
1277 | #define OTPP_ROW_MASK9 0x0001ff00 /* for ccrev >= 49 */ | |
1278 | #define OTPP_ROW_SHIFT 8 | |
1279 | #define OTPP_OC_MASK 0x0f000000 | |
1280 | #define OTPP_OC_SHIFT 24 | |
1281 | #define OTPP_READERR 0x10000000 | |
1282 | #define OTPP_VALUE_MASK 0x20000000 | |
1283 | #define OTPP_VALUE_SHIFT 29 | |
1284 | #define OTPP_START_BUSY 0x80000000 | |
1285 | #define OTPP_READ 0x40000000 /* HND OTP */ | |
1286 | ||
1287 | /* Fields in otplayout register */ | |
1288 | #define OTPL_HWRGN_OFF_MASK 0x00000FFF | |
1289 | #define OTPL_HWRGN_OFF_SHIFT 0 | |
1290 | #define OTPL_WRAP_REVID_MASK 0x00F80000 | |
1291 | #define OTPL_WRAP_REVID_SHIFT 19 | |
1292 | #define OTPL_WRAP_TYPE_MASK 0x00070000 | |
1293 | #define OTPL_WRAP_TYPE_SHIFT 16 | |
1294 | #define OTPL_WRAP_TYPE_65NM 0 | |
1295 | #define OTPL_WRAP_TYPE_40NM 1 | |
1296 | #define OTPL_WRAP_TYPE_28NM 2 | |
1297 | #define OTPL_WRAP_TYPE_16NM 3 | |
1298 | #define OTPL_ROW_SIZE_MASK 0x0000F000 | |
1299 | #define OTPL_ROW_SIZE_SHIFT 12 | |
1300 | ||
1301 | /* otplayout reg corerev >= 36 */ | |
1302 | #define OTP_CISFORMAT_NEW 0x80000000 | |
1303 | ||
1304 | /* Opcodes for OTPP_OC field */ | |
1305 | #define OTPPOC_READ 0 | |
1306 | #define OTPPOC_BIT_PROG 1 | |
1307 | #define OTPPOC_VERIFY 3 | |
1308 | #define OTPPOC_INIT 4 | |
1309 | #define OTPPOC_SET 5 | |
1310 | #define OTPPOC_RESET 6 | |
1311 | #define OTPPOC_OCST 7 | |
1312 | #define OTPPOC_ROW_LOCK 8 | |
1313 | #define OTPPOC_PRESCN_TEST 9 | |
1314 | ||
1315 | /* Opcodes for OTPP_OC field (40NM) */ | |
1316 | #define OTPPOC_READ_40NM 0 | |
1317 | #define OTPPOC_PROG_ENABLE_40NM 1 | |
1318 | #define OTPPOC_PROG_DISABLE_40NM 2 | |
1319 | #define OTPPOC_VERIFY_40NM 3 | |
1320 | #define OTPPOC_WORD_VERIFY_1_40NM 4 | |
1321 | #define OTPPOC_ROW_LOCK_40NM 5 | |
1322 | #define OTPPOC_STBY_40NM 6 | |
1323 | #define OTPPOC_WAKEUP_40NM 7 | |
1324 | #define OTPPOC_WORD_VERIFY_0_40NM 8 | |
1325 | #define OTPPOC_PRESCN_TEST_40NM 9 | |
1326 | #define OTPPOC_BIT_PROG_40NM 10 | |
1327 | #define OTPPOC_WORDPROG_40NM 11 | |
1328 | #define OTPPOC_BURNIN_40NM 12 | |
1329 | #define OTPPOC_AUTORELOAD_40NM 13 | |
1330 | #define OTPPOC_OVST_READ_40NM 14 | |
1331 | #define OTPPOC_OVST_PROG_40NM 15 | |
1332 | ||
1333 | /* Opcodes for OTPP_OC field (28NM) */ | |
1334 | #define OTPPOC_READ_28NM 0 | |
1335 | #define OTPPOC_READBURST_28NM 1 | |
1336 | #define OTPPOC_PROG_ENABLE_28NM 2 | |
1337 | #define OTPPOC_PROG_DISABLE_28NM 3 | |
1338 | #define OTPPOC_PRESCREEN_28NM 4 | |
1339 | #define OTPPOC_PRESCREEN_RP_28NM 5 | |
1340 | #define OTPPOC_FLUSH_28NM 6 | |
1341 | #define OTPPOC_NOP_28NM 7 | |
1342 | #define OTPPOC_PROG_ECC_28NM 8 | |
1343 | #define OTPPOC_PROG_ECC_READ_28NM 9 | |
1344 | #define OTPPOC_PROG_28NM 10 | |
1345 | #define OTPPOC_PROGRAM_RP_28NM 11 | |
1346 | #define OTPPOC_PROGRAM_OVST_28NM 12 | |
1347 | #define OTPPOC_RELOAD_28NM 13 | |
1348 | #define OTPPOC_ERASE_28NM 14 | |
1349 | #define OTPPOC_LOAD_RF_28NM 15 | |
1350 | #define OTPPOC_CTRL_WR_28NM 16 | |
1351 | #define OTPPOC_CTRL_RD_28NM 17 | |
1352 | #define OTPPOC_READ_HP_28NM 18 | |
1353 | #define OTPPOC_READ_OVST_28NM 19 | |
1354 | #define OTPPOC_READ_VERIFY0_28NM 20 | |
1355 | #define OTPPOC_READ_VERIFY1_28NM 21 | |
1356 | #define OTPPOC_READ_FORCE0_28NM 22 | |
1357 | #define OTPPOC_READ_FORCE1_28NM 23 | |
1358 | #define OTPPOC_BURNIN_28NM 24 | |
1359 | #define OTPPOC_PROGRAM_LOCK_28NM 25 | |
1360 | #define OTPPOC_PROGRAM_TESTCOL_28NM 26 | |
1361 | #define OTPPOC_READ_TESTCOL_28NM 27 | |
1362 | #define OTPPOC_READ_FOUT_28NM 28 | |
1363 | #define OTPPOC_SFT_RESET_28NM 29 | |
1364 | ||
1365 | #define OTPP_OC_MASK_28NM 0x0f800000 | |
1366 | #define OTPP_OC_SHIFT_28NM 23 | |
1367 | #define OTPC_PROGEN_28NM 0x8 | |
1368 | #define OTPC_DBLERRCLR 0x20 | |
1369 | #define OTPC_CLK_EN_MASK 0x00000040 | |
1370 | #define OTPC_CLK_DIV_MASK 0x00000F80 | |
1371 | ||
1372 | /* Fields in otplayoutextension */ | |
1373 | #define OTPLAYOUTEXT_FUSE_MASK 0x3FF | |
1374 | ||
1375 | /* Jtagm characteristics that appeared at a given corerev */ | |
1376 | #define JTAGM_CREV_OLD 10 /**< Old command set, 16bit max IR */ | |
1377 | #define JTAGM_CREV_IRP 22 /**< Able to do pause-ir */ | |
1378 | #define JTAGM_CREV_RTI 28 /**< Able to do return-to-idle */ | |
1379 | ||
1380 | /* jtagcmd */ | |
1381 | #define JCMD_START 0x80000000 | |
1382 | #define JCMD_BUSY 0x80000000 | |
1383 | #define JCMD_STATE_MASK 0x60000000 | |
1384 | #define JCMD_STATE_TLR 0x00000000 /**< Test-logic-reset */ | |
1385 | #define JCMD_STATE_PIR 0x20000000 /**< Pause IR */ | |
1386 | #define JCMD_STATE_PDR 0x40000000 /**< Pause DR */ | |
1387 | #define JCMD_STATE_RTI 0x60000000 /**< Run-test-idle */ | |
1388 | #define JCMD0_ACC_MASK 0x0000f000 | |
1389 | #define JCMD0_ACC_IRDR 0x00000000 | |
1390 | #define JCMD0_ACC_DR 0x00001000 | |
1391 | #define JCMD0_ACC_IR 0x00002000 | |
1392 | #define JCMD0_ACC_RESET 0x00003000 | |
1393 | #define JCMD0_ACC_IRPDR 0x00004000 | |
1394 | #define JCMD0_ACC_PDR 0x00005000 | |
1395 | #define JCMD0_IRW_MASK 0x00000f00 | |
1396 | #define JCMD_ACC_MASK 0x000f0000 /**< Changes for corerev 11 */ | |
1397 | #define JCMD_ACC_IRDR 0x00000000 | |
1398 | #define JCMD_ACC_DR 0x00010000 | |
1399 | #define JCMD_ACC_IR 0x00020000 | |
1400 | #define JCMD_ACC_RESET 0x00030000 | |
1401 | #define JCMD_ACC_IRPDR 0x00040000 | |
1402 | #define JCMD_ACC_PDR 0x00050000 | |
1403 | #define JCMD_ACC_PIR 0x00060000 | |
1404 | #define JCMD_ACC_IRDR_I 0x00070000 /**< rev 28: return to run-test-idle */ | |
1405 | #define JCMD_ACC_DR_I 0x00080000 /**< rev 28: return to run-test-idle */ | |
1406 | #define JCMD_IRW_MASK 0x00001f00 | |
1407 | #define JCMD_IRW_SHIFT 8 | |
1408 | #define JCMD_DRW_MASK 0x0000003f | |
1409 | ||
1410 | /* jtagctrl */ | |
1411 | #define JCTRL_FORCE_CLK 4 /**< Force clock */ | |
1412 | #define JCTRL_EXT_EN 2 /**< Enable external targets */ | |
1413 | #define JCTRL_EN 1 /**< Enable Jtag master */ | |
1414 | #define JCTRL_TAPSEL_BIT 0x00000008 /**< JtagMasterCtrl tap_sel bit */ | |
1415 | ||
1416 | /* swdmasterctrl */ | |
1417 | #define SWDCTRL_INT_EN 8 /**< Enable internal targets */ | |
1418 | #define SWDCTRL_FORCE_CLK 4 /**< Force clock */ | |
1419 | #define SWDCTRL_OVJTAG 2 /**< Enable shared SWD/JTAG pins */ | |
1420 | #define SWDCTRL_EN 1 /**< Enable Jtag master */ | |
1421 | ||
1422 | /* Fields in clkdiv */ | |
1423 | #define CLKD_SFLASH 0x1f000000 | |
1424 | #define CLKD_SFLASH_SHIFT 24 | |
1425 | #define CLKD_OTP 0x000f0000 | |
1426 | #define CLKD_OTP_SHIFT 16 | |
1427 | #define CLKD_JTAG 0x00000f00 | |
1428 | #define CLKD_JTAG_SHIFT 8 | |
1429 | #define CLKD_UART 0x000000ff | |
1430 | ||
1431 | #define CLKD2_SROM 0x00000007 | |
1432 | #define CLKD2_SROMDIV_32 0 | |
1433 | #define CLKD2_SROMDIV_64 1 | |
1434 | #define CLKD2_SROMDIV_96 2 | |
1435 | #define CLKD2_SROMDIV_128 3 | |
1436 | #define CLKD2_SROMDIV_192 4 | |
1437 | #define CLKD2_SROMDIV_256 5 | |
1438 | #define CLKD2_SROMDIV_384 6 | |
1439 | #define CLKD2_SROMDIV_512 7 | |
1440 | #define CLKD2_SWD 0xf8000000 | |
1441 | #define CLKD2_SWD_SHIFT 27 | |
1442 | ||
1443 | /* intstatus/intmask */ | |
1444 | #define CI_GPIO 0x00000001 /**< gpio intr */ | |
1445 | #define CI_EI 0x00000002 /**< extif intr (corerev >= 3) */ | |
1446 | #define CI_TEMP 0x00000004 /**< temp. ctrl intr (corerev >= 15) */ | |
1447 | #define CI_SIRQ 0x00000008 /**< serial IRQ intr (corerev >= 15) */ | |
1448 | #define CI_ECI 0x00000010 /**< eci intr (corerev >= 21) */ | |
1449 | #define CI_PMU 0x00000020 /**< pmu intr (corerev >= 21) */ | |
1450 | #define CI_UART 0x00000040 /**< uart intr (corerev >= 21) */ | |
1451 | #define CI_WECI 0x00000080 /* eci wakeup intr (corerev >= 21) */ | |
1452 | #define CI_SPMI 0x00100000 /* SPMI (corerev >= 65) */ | |
1453 | #define CI_RNG 0x00200000 /**< rng intr (corerev >= 65) */ | |
1454 | #define CI_SSRESET_F0 0x10000000 /**< ss reset occurred */ | |
1455 | #define CI_SSRESET_F1 0x20000000 /**< ss reset occurred */ | |
1456 | #define CI_SSRESET_F2 0x40000000 /**< ss reset occurred */ | |
1457 | #define CI_WDRESET 0x80000000 /**< watchdog reset occurred */ | |
1458 | ||
1459 | /* slow_clk_ctl */ | |
1460 | #define SCC_SS_MASK 0x00000007 /**< slow clock source mask */ | |
1461 | #define SCC_SS_LPO 0x00000000 /**< source of slow clock is LPO */ | |
1462 | #define SCC_SS_XTAL 0x00000001 /**< source of slow clock is crystal */ | |
1463 | #define SCC_SS_PCI 0x00000002 /**< source of slow clock is PCI */ | |
1464 | #define SCC_LF 0x00000200 /**< LPOFreqSel, 1: 160Khz, 0: 32KHz */ | |
1465 | #define SCC_LP 0x00000400 /**< LPOPowerDown, 1: LPO is disabled, | |
1466 | * 0: LPO is enabled | |
1467 | */ | |
1468 | #define SCC_FS 0x00000800 /**< ForceSlowClk, 1: sb/cores running on slow clock, | |
1469 | * 0: power logic control | |
1470 | */ | |
1471 | #define SCC_IP 0x00001000 /**< IgnorePllOffReq, 1/0: power logic ignores/honors | |
1472 | * PLL clock disable requests from core | |
1473 | */ | |
1474 | #define SCC_XC 0x00002000 /**< XtalControlEn, 1/0: power logic does/doesn't | |
1475 | * disable crystal when appropriate | |
1476 | */ | |
1477 | #define SCC_XP 0x00004000 /**< XtalPU (RO), 1/0: crystal running/disabled */ | |
1478 | #define SCC_CD_MASK 0xffff0000 /**< ClockDivider (SlowClk = 1/(4+divisor)) */ | |
1479 | #define SCC_CD_SHIFT 16 | |
1480 | ||
1481 | /* system_clk_ctl */ | |
1482 | #define SYCC_IE 0x00000001 /**< ILPen: Enable Idle Low Power */ | |
1483 | #define SYCC_AE 0x00000002 /**< ALPen: Enable Active Low Power */ | |
1484 | #define SYCC_FP 0x00000004 /**< ForcePLLOn */ | |
1485 | #define SYCC_AR 0x00000008 /**< Force ALP (or HT if ALPen is not set */ | |
1486 | #define SYCC_HR 0x00000010 /**< Force HT */ | |
1487 | #define SYCC_CD_MASK 0xffff0000 /**< ClkDiv (ILP = 1/(4 * (divisor + 1)) */ | |
1488 | #define SYCC_CD_SHIFT 16 | |
1489 | ||
1490 | /* watchdogcounter */ | |
1491 | /* WL sub-system reset */ | |
1492 | #define WD_SSRESET_PCIE_F0_EN 0x10000000 | |
1493 | /* BT sub-system reset */ | |
1494 | #define WD_SSRESET_PCIE_F1_EN 0x20000000 | |
1495 | #define WD_SSRESET_PCIE_F2_EN 0x40000000 | |
1496 | /* Both WL and BT sub-system reset */ | |
1497 | #define WD_SSRESET_PCIE_ALL_FN_EN 0x80000000 | |
1498 | #define WD_COUNTER_MASK 0x0fffffff | |
1499 | #define WD_ENABLE_MASK \ | |
1500 | (WD_SSRESET_PCIE_F0_EN | WD_SSRESET_PCIE_F1_EN | \ | |
1501 | WD_SSRESET_PCIE_F2_EN | WD_SSRESET_PCIE_ALL_FN_EN) | |
1502 | ||
1503 | /* Indirect backplane access */ | |
1504 | #define BPIA_BYTEEN 0x0000000f | |
1505 | #define BPIA_SZ1 0x00000001 | |
1506 | #define BPIA_SZ2 0x00000003 | |
1507 | #define BPIA_SZ4 0x00000007 | |
1508 | #define BPIA_SZ8 0x0000000f | |
1509 | #define BPIA_WRITE 0x00000100 | |
1510 | #define BPIA_START 0x00000200 | |
1511 | #define BPIA_BUSY 0x00000200 | |
1512 | #define BPIA_ERROR 0x00000400 | |
1513 | ||
1514 | /* pcmcia/prog/flash_config */ | |
1515 | #define CF_EN 0x00000001 /**< enable */ | |
1516 | #define CF_EM_MASK 0x0000000e /**< mode */ | |
1517 | #define CF_EM_SHIFT 1 | |
1518 | #define CF_EM_FLASH 0 /**< flash/asynchronous mode */ | |
1519 | #define CF_EM_SYNC 2 /**< synchronous mode */ | |
1520 | #define CF_EM_PCMCIA 4 /**< pcmcia mode */ | |
1521 | #define CF_DS 0x00000010 /**< destsize: 0=8bit, 1=16bit */ | |
1522 | #define CF_BS 0x00000020 /**< byteswap */ | |
1523 | #define CF_CD_MASK 0x000000c0 /**< clock divider */ | |
1524 | #define CF_CD_SHIFT 6 | |
1525 | #define CF_CD_DIV2 0x00000000 /**< backplane/2 */ | |
1526 | #define CF_CD_DIV3 0x00000040 /**< backplane/3 */ | |
1527 | #define CF_CD_DIV4 0x00000080 /**< backplane/4 */ | |
1528 | #define CF_CE 0x00000100 /**< clock enable */ | |
1529 | #define CF_SB 0x00000200 /**< size/bytestrobe (synch only) */ | |
1530 | ||
1531 | /* pcmcia_memwait */ | |
1532 | #define PM_W0_MASK 0x0000003f /**< waitcount0 */ | |
1533 | #define PM_W1_MASK 0x00001f00 /**< waitcount1 */ | |
1534 | #define PM_W1_SHIFT 8 | |
1535 | #define PM_W2_MASK 0x001f0000 /**< waitcount2 */ | |
1536 | #define PM_W2_SHIFT 16 | |
1537 | #define PM_W3_MASK 0x1f000000 /**< waitcount3 */ | |
1538 | #define PM_W3_SHIFT 24 | |
1539 | ||
1540 | /* pcmcia_attrwait */ | |
1541 | #define PA_W0_MASK 0x0000003f /**< waitcount0 */ | |
1542 | #define PA_W1_MASK 0x00001f00 /**< waitcount1 */ | |
1543 | #define PA_W1_SHIFT 8 | |
1544 | #define PA_W2_MASK 0x001f0000 /**< waitcount2 */ | |
1545 | #define PA_W2_SHIFT 16 | |
1546 | #define PA_W3_MASK 0x1f000000 /**< waitcount3 */ | |
1547 | #define PA_W3_SHIFT 24 | |
1548 | ||
1549 | /* pcmcia_iowait */ | |
1550 | #define PI_W0_MASK 0x0000003f /**< waitcount0 */ | |
1551 | #define PI_W1_MASK 0x00001f00 /**< waitcount1 */ | |
1552 | #define PI_W1_SHIFT 8 | |
1553 | #define PI_W2_MASK 0x001f0000 /**< waitcount2 */ | |
1554 | #define PI_W2_SHIFT 16 | |
1555 | #define PI_W3_MASK 0x1f000000 /**< waitcount3 */ | |
1556 | #define PI_W3_SHIFT 24 | |
1557 | ||
1558 | /* prog_waitcount */ | |
1559 | #define PW_W0_MASK 0x0000001f /**< waitcount0 */ | |
1560 | #define PW_W1_MASK 0x00001f00 /**< waitcount1 */ | |
1561 | #define PW_W1_SHIFT 8 | |
1562 | #define PW_W2_MASK 0x001f0000 /**< waitcount2 */ | |
1563 | #define PW_W2_SHIFT 16 | |
1564 | #define PW_W3_MASK 0x1f000000 /**< waitcount3 */ | |
1565 | #define PW_W3_SHIFT 24 | |
1566 | ||
1567 | #define PW_W0 0x0000000c | |
1568 | #define PW_W1 0x00000a00 | |
1569 | #define PW_W2 0x00020000 | |
1570 | #define PW_W3 0x01000000 | |
1571 | ||
1572 | /* flash_waitcount */ | |
1573 | #define FW_W0_MASK 0x0000003f /**< waitcount0 */ | |
1574 | #define FW_W1_MASK 0x00001f00 /**< waitcount1 */ | |
1575 | #define FW_W1_SHIFT 8 | |
1576 | #define FW_W2_MASK 0x001f0000 /**< waitcount2 */ | |
1577 | #define FW_W2_SHIFT 16 | |
1578 | #define FW_W3_MASK 0x1f000000 /**< waitcount3 */ | |
1579 | #define FW_W3_SHIFT 24 | |
1580 | ||
1581 | /* When Srom support present, fields in sromcontrol */ | |
1582 | #define SRC_START 0x80000000 | |
1583 | #define SRC_BUSY 0x80000000 | |
1584 | #define SRC_OPCODE 0x60000000 | |
1585 | #define SRC_OP_READ 0x00000000 | |
1586 | #define SRC_OP_WRITE 0x20000000 | |
1587 | #define SRC_OP_WRDIS 0x40000000 | |
1588 | #define SRC_OP_WREN 0x60000000 | |
1589 | #define SRC_OTPSEL 0x00000010 | |
1590 | #define SRC_OTPPRESENT 0x00000020 | |
1591 | #define SRC_LOCK 0x00000008 | |
1592 | #define SRC_SIZE_MASK 0x00000006 | |
1593 | #define SRC_SIZE_1K 0x00000000 | |
1594 | #define SRC_SIZE_4K 0x00000002 | |
1595 | #define SRC_SIZE_16K 0x00000004 | |
1596 | #define SRC_SIZE_SHIFT 1 | |
1597 | #define SRC_PRESENT 0x00000001 | |
1598 | ||
1599 | /* Fields in pmucontrol */ | |
1600 | #define PCTL_ILP_DIV_MASK 0xffff0000 | |
1601 | #define PCTL_ILP_DIV_SHIFT 16 | |
1602 | #define PCTL_LQ_REQ_EN 0x00008000 | |
1603 | #define PCTL_PLL_PLLCTL_UPD 0x00000400 /**< rev 2 */ | |
1604 | #define PCTL_NOILP_ON_WAIT 0x00000200 /**< rev 1 */ | |
1605 | #define PCTL_HT_REQ_EN 0x00000100 | |
1606 | #define PCTL_ALP_REQ_EN 0x00000080 | |
1607 | #define PCTL_XTALFREQ_MASK 0x0000007c | |
1608 | #define PCTL_XTALFREQ_SHIFT 2 | |
1609 | #define PCTL_ILP_DIV_EN 0x00000002 | |
1610 | #define PCTL_LPO_SEL 0x00000001 | |
1611 | ||
1612 | /* Fields in pmucontrol_ext */ | |
1613 | #define PCTL_EXT_FAST_TRANS_ENAB 0x00000001u | |
1614 | #define PCTL_EXT_USE_LHL_TIMER 0x00000010u | |
1615 | #define PCTL_EXT_FASTLPO_ENAB 0x00000080u | |
1616 | #define PCTL_EXT_FASTLPO_SWENAB 0x00000200u | |
1617 | #define PCTL_EXT_FASTSEQ_ENAB 0x00001000u | |
1618 | #define PCTL_EXT_FASTLPO_PCIE_SWENAB 0x00004000u /**< rev33 for FLL1M */ | |
1619 | #define PCTL_EXT_FASTLPO_SB_SWENAB 0x00008000u /**< rev36 for FLL1M */ | |
1620 | #define PCTL_EXT_REQ_MIRROR_ENAB 0x00010000u /**< rev36 for ReqMirrorEn */ | |
1621 | ||
1622 | #define DEFAULT_43012_MIN_RES_MASK 0x0f8bfe77 | |
1623 | ||
1624 | /* Retention Control */ | |
1625 | #define PMU_RCTL_CLK_DIV_SHIFT 0 | |
1626 | #define PMU_RCTL_CHAIN_LEN_SHIFT 12 | |
1627 | #define PMU_RCTL_MACPHY_DISABLE_SHIFT 26 | |
1628 | #define PMU_RCTL_MACPHY_DISABLE_MASK (1 << 26) | |
1629 | #define PMU_RCTL_LOGIC_DISABLE_SHIFT 27 | |
1630 | #define PMU_RCTL_LOGIC_DISABLE_MASK (1 << 27) | |
1631 | #define PMU_RCTL_MEMSLP_LOG_SHIFT 28 | |
1632 | #define PMU_RCTL_MEMSLP_LOG_MASK (1 << 28) | |
1633 | #define PMU_RCTL_MEMRETSLP_LOG_SHIFT 29 | |
1634 | #define PMU_RCTL_MEMRETSLP_LOG_MASK (1 << 29) | |
1635 | ||
1636 | /* Retention Group Control */ | |
1637 | #define PMU_RCTLGRP_CHAIN_LEN_SHIFT 0 | |
1638 | #define PMU_RCTLGRP_RMODE_ENABLE_SHIFT 14 | |
1639 | #define PMU_RCTLGRP_RMODE_ENABLE_MASK (1 << 14) | |
1640 | #define PMU_RCTLGRP_DFT_ENABLE_SHIFT 15 | |
1641 | #define PMU_RCTLGRP_DFT_ENABLE_MASK (1 << 15) | |
1642 | #define PMU_RCTLGRP_NSRST_DISABLE_SHIFT 16 | |
1643 | #define PMU_RCTLGRP_NSRST_DISABLE_MASK (1 << 16) | |
1644 | ||
1645 | /* Fields in clkstretch */ | |
1646 | #define CSTRETCH_HT 0xffff0000 | |
1647 | #define CSTRETCH_ALP 0x0000ffff | |
1648 | #define CSTRETCH_REDUCE_8 0x00080008 | |
1649 | ||
1650 | /* gpiotimerval */ | |
1651 | #define GPIO_ONTIME_SHIFT 16 | |
1652 | ||
1653 | /* clockcontrol_n */ | |
1654 | /* Some pll types use less than the number of bits in some of these (n or m) masks */ | |
1655 | #define CN_N1_MASK 0x3f /**< n1 control */ | |
1656 | #define CN_N2_MASK 0x3f00 /**< n2 control */ | |
1657 | #define CN_N2_SHIFT 8 | |
1658 | #define CN_PLLC_MASK 0xf0000 /**< pll control */ | |
1659 | #define CN_PLLC_SHIFT 16 | |
1660 | ||
1661 | /* clockcontrol_sb/pci/uart */ | |
1662 | #define CC_M1_MASK 0x3f /**< m1 control */ | |
1663 | #define CC_M2_MASK 0x3f00 /**< m2 control */ | |
1664 | #define CC_M2_SHIFT 8 | |
1665 | #define CC_M3_MASK 0x3f0000 /**< m3 control */ | |
1666 | #define CC_M3_SHIFT 16 | |
1667 | #define CC_MC_MASK 0x1f000000 /**< mux control */ | |
1668 | #define CC_MC_SHIFT 24 | |
1669 | ||
1670 | /* N3M Clock control magic field values */ | |
1671 | #define CC_F6_2 0x02 /**< A factor of 2 in */ | |
1672 | #define CC_F6_3 0x03 /**< 6-bit fields like */ | |
1673 | #define CC_F6_4 0x05 /**< N1, M1 or M3 */ | |
1674 | #define CC_F6_5 0x09 | |
1675 | #define CC_F6_6 0x11 | |
1676 | #define CC_F6_7 0x21 | |
1677 | ||
1678 | #define CC_F5_BIAS 5 /**< 5-bit fields get this added */ | |
1679 | ||
1680 | #define CC_MC_BYPASS 0x08 | |
1681 | #define CC_MC_M1 0x04 | |
1682 | #define CC_MC_M1M2 0x02 | |
1683 | #define CC_MC_M1M2M3 0x01 | |
1684 | #define CC_MC_M1M3 0x11 | |
1685 | ||
1686 | /* Type 2 Clock control magic field values */ | |
1687 | #define CC_T2_BIAS 2 /**< n1, n2, m1 & m3 bias */ | |
1688 | #define CC_T2M2_BIAS 3 /**< m2 bias */ | |
1689 | ||
1690 | #define CC_T2MC_M1BYP 1 | |
1691 | #define CC_T2MC_M2BYP 2 | |
1692 | #define CC_T2MC_M3BYP 4 | |
1693 | ||
1694 | /* Type 6 Clock control magic field values */ | |
1695 | #define CC_T6_MMASK 1 /**< bits of interest in m */ | |
1696 | #define CC_T6_M0 120000000 /**< sb clock for m = 0 */ | |
1697 | #define CC_T6_M1 100000000 /**< sb clock for m = 1 */ | |
1698 | #define SB2MIPS_T6(sb) (2 * (sb)) | |
1699 | ||
1700 | /* Common clock base */ | |
1701 | #define CC_CLOCK_BASE1 24000000 /**< Half the clock freq */ | |
1702 | #define CC_CLOCK_BASE2 12500000 /**< Alternate crystal on some PLLs */ | |
1703 | ||
1704 | /* Flash types in the chipcommon capabilities register */ | |
1705 | #define FLASH_NONE 0x000 /**< No flash */ | |
1706 | #define SFLASH_ST 0x100 /**< ST serial flash */ | |
1707 | #define SFLASH_AT 0x200 /**< Atmel serial flash */ | |
1708 | #define NFLASH 0x300 /**< NAND flash */ | |
1709 | #define PFLASH 0x700 /**< Parallel flash */ | |
1710 | #define QSPIFLASH_ST 0x800 | |
1711 | #define QSPIFLASH_AT 0x900 | |
1712 | ||
1713 | /* Bits in the ExtBus config registers */ | |
1714 | #define CC_CFG_EN 0x0001 /**< Enable */ | |
1715 | #define CC_CFG_EM_MASK 0x000e /**< Extif Mode */ | |
1716 | #define CC_CFG_EM_ASYNC 0x0000 /**< Async/Parallel flash */ | |
1717 | #define CC_CFG_EM_SYNC 0x0002 /**< Synchronous */ | |
1718 | #define CC_CFG_EM_PCMCIA 0x0004 /**< PCMCIA */ | |
1719 | #define CC_CFG_EM_IDE 0x0006 /**< IDE */ | |
1720 | #define CC_CFG_DS 0x0010 /**< Data size, 0=8bit, 1=16bit */ | |
1721 | #define CC_CFG_CD_MASK 0x00e0 /**< Sync: Clock divisor, rev >= 20 */ | |
1722 | #define CC_CFG_CE 0x0100 /**< Sync: Clock enable, rev >= 20 */ | |
1723 | #define CC_CFG_SB 0x0200 /**< Sync: Size/Bytestrobe, rev >= 20 */ | |
1724 | #define CC_CFG_IS 0x0400 /**< Extif Sync Clk Select, rev >= 20 */ | |
1725 | ||
1726 | /* ExtBus address space */ | |
1727 | #define CC_EB_BASE 0x1a000000 /**< Chipc ExtBus base address */ | |
1728 | #define CC_EB_PCMCIA_MEM 0x1a000000 /**< PCMCIA 0 memory base address */ | |
1729 | #define CC_EB_PCMCIA_IO 0x1a200000 /**< PCMCIA 0 I/O base address */ | |
1730 | #define CC_EB_PCMCIA_CFG 0x1a400000 /**< PCMCIA 0 config base address */ | |
1731 | #define CC_EB_IDE 0x1a800000 /**< IDE memory base */ | |
1732 | #define CC_EB_PCMCIA1_MEM 0x1a800000 /**< PCMCIA 1 memory base address */ | |
1733 | #define CC_EB_PCMCIA1_IO 0x1aa00000 /**< PCMCIA 1 I/O base address */ | |
1734 | #define CC_EB_PCMCIA1_CFG 0x1ac00000 /**< PCMCIA 1 config base address */ | |
1735 | #define CC_EB_PROGIF 0x1b000000 /**< ProgIF Async/Sync base address */ | |
1736 | ||
1737 | /* Start/busy bit in flashcontrol */ | |
1738 | #define SFLASH_OPCODE 0x000000ff | |
1739 | #define SFLASH_ACTION 0x00000700 | |
1740 | #define SFLASH_CS_ACTIVE 0x00001000 /**< Chip Select Active, rev >= 20 */ | |
1741 | #define SFLASH_START 0x80000000 | |
1742 | #define SFLASH_BUSY SFLASH_START | |
1743 | ||
1744 | /* flashcontrol action codes */ | |
1745 | #define SFLASH_ACT_OPONLY 0x0000 /**< Issue opcode only */ | |
1746 | #define SFLASH_ACT_OP1D 0x0100 /**< opcode + 1 data byte */ | |
1747 | #define SFLASH_ACT_OP3A 0x0200 /**< opcode + 3 addr bytes */ | |
1748 | #define SFLASH_ACT_OP3A1D 0x0300 /**< opcode + 3 addr & 1 data bytes */ | |
1749 | #define SFLASH_ACT_OP3A4D 0x0400 /**< opcode + 3 addr & 4 data bytes */ | |
1750 | #define SFLASH_ACT_OP3A4X4D 0x0500 /**< opcode + 3 addr, 4 don't care & 4 data bytes */ | |
1751 | #define SFLASH_ACT_OP3A1X4D 0x0700 /**< opcode + 3 addr, 1 don't care & 4 data bytes */ | |
1752 | ||
1753 | /* flashcontrol action+opcodes for ST flashes */ | |
1754 | #define SFLASH_ST_WREN 0x0006 /**< Write Enable */ | |
1755 | #define SFLASH_ST_WRDIS 0x0004 /**< Write Disable */ | |
1756 | #define SFLASH_ST_RDSR 0x0105 /**< Read Status Register */ | |
1757 | #define SFLASH_ST_WRSR 0x0101 /**< Write Status Register */ | |
1758 | #define SFLASH_ST_READ 0x0303 /**< Read Data Bytes */ | |
1759 | #define SFLASH_ST_PP 0x0302 /**< Page Program */ | |
1760 | #define SFLASH_ST_SE 0x02d8 /**< Sector Erase */ | |
1761 | #define SFLASH_ST_BE 0x00c7 /**< Bulk Erase */ | |
1762 | #define SFLASH_ST_DP 0x00b9 /**< Deep Power-down */ | |
1763 | #define SFLASH_ST_RES 0x03ab /**< Read Electronic Signature */ | |
1764 | #define SFLASH_ST_CSA 0x1000 /**< Keep chip select asserted */ | |
1765 | #define SFLASH_ST_SSE 0x0220 /**< Sub-sector Erase */ | |
1766 | ||
1767 | #define SFLASH_ST_READ4B 0x6313 /* Read Data Bytes in 4Byte address */ | |
1768 | #define SFLASH_ST_PP4B 0x6312 /* Page Program in 4Byte address */ | |
1769 | #define SFLASH_ST_SE4B 0x62dc /* Sector Erase in 4Byte address */ | |
1770 | #define SFLASH_ST_SSE4B 0x6221 /* Sub-sector Erase */ | |
1771 | ||
1772 | #define SFLASH_MXIC_RDID 0x0390 /* Read Manufacture ID */ | |
1773 | #define SFLASH_MXIC_MFID 0xc2 /* MXIC Manufacture ID */ | |
1774 | ||
1775 | #define SFLASH_WINBOND_RDID 0x0390 /* Read Manufacture ID */ | |
1776 | #define SFLASH_WINBOND_MFID 0xef /* Winbond Manufacture ID */ | |
1777 | ||
1778 | /* Status register bits for ST flashes */ | |
1779 | #define SFLASH_ST_WIP 0x01 /**< Write In Progress */ | |
1780 | #define SFLASH_ST_WEL 0x02 /**< Write Enable Latch */ | |
1781 | #define SFLASH_ST_BP_MASK 0x1c /**< Block Protect */ | |
1782 | #define SFLASH_ST_BP_SHIFT 2 | |
1783 | #define SFLASH_ST_SRWD 0x80 /**< Status Register Write Disable */ | |
1784 | ||
1785 | /* flashcontrol action+opcodes for Atmel flashes */ | |
1786 | #define SFLASH_AT_READ 0x07e8 | |
1787 | #define SFLASH_AT_PAGE_READ 0x07d2 | |
1788 | /* PR9631: impossible to specify Atmel Buffer Read command */ | |
1789 | #define SFLASH_AT_BUF1_READ | |
1790 | #define SFLASH_AT_BUF2_READ | |
1791 | #define SFLASH_AT_STATUS 0x01d7 | |
1792 | #define SFLASH_AT_BUF1_WRITE 0x0384 | |
1793 | #define SFLASH_AT_BUF2_WRITE 0x0387 | |
1794 | #define SFLASH_AT_BUF1_ERASE_PROGRAM 0x0283 | |
1795 | #define SFLASH_AT_BUF2_ERASE_PROGRAM 0x0286 | |
1796 | #define SFLASH_AT_BUF1_PROGRAM 0x0288 | |
1797 | #define SFLASH_AT_BUF2_PROGRAM 0x0289 | |
1798 | #define SFLASH_AT_PAGE_ERASE 0x0281 | |
1799 | #define SFLASH_AT_BLOCK_ERASE 0x0250 | |
1800 | #define SFLASH_AT_BUF1_WRITE_ERASE_PROGRAM 0x0382 | |
1801 | #define SFLASH_AT_BUF2_WRITE_ERASE_PROGRAM 0x0385 | |
1802 | #define SFLASH_AT_BUF1_LOAD 0x0253 | |
1803 | #define SFLASH_AT_BUF2_LOAD 0x0255 | |
1804 | #define SFLASH_AT_BUF1_COMPARE 0x0260 | |
1805 | #define SFLASH_AT_BUF2_COMPARE 0x0261 | |
1806 | #define SFLASH_AT_BUF1_REPROGRAM 0x0258 | |
1807 | #define SFLASH_AT_BUF2_REPROGRAM 0x0259 | |
1808 | ||
1809 | /* Status register bits for Atmel flashes */ | |
1810 | #define SFLASH_AT_READY 0x80 | |
1811 | #define SFLASH_AT_MISMATCH 0x40 | |
1812 | #define SFLASH_AT_ID_MASK 0x38 | |
1813 | #define SFLASH_AT_ID_SHIFT 3 | |
1814 | ||
1815 | /* SPI register bits, corerev >= 37 */ | |
1816 | #define GSIO_START 0x80000000u | |
1817 | #define GSIO_BUSY GSIO_START | |
1818 | ||
1819 | /* UART Function sel related */ | |
1820 | #define MUXENAB_DEF_UART_MASK 0x0000000fu | |
1821 | #define MUXENAB_DEF_UART_SHIFT 0 | |
1822 | ||
1823 | /* HOST_WAKE Function sel related */ | |
1824 | #define MUXENAB_DEF_HOSTWAKE_MASK 0x000000f0u /**< configure GPIO for host_wake */ | |
1825 | #define MUXENAB_DEF_HOSTWAKE_SHIFT 4u | |
1826 | ||
1827 | /* GCI UART Function sel related */ | |
1828 | #define MUXENAB_GCI_UART_MASK 0x00000f00u | |
1829 | #define MUXENAB_GCI_UART_SHIFT 8u | |
1830 | #define MUXENAB_GCI_UART_FNSEL_MASK 0x00003000u | |
1831 | #define MUXENAB_GCI_UART_FNSEL_SHIFT 12u | |
1832 | ||
1833 | /* Mask used to decide whether MUX to be performed or not */ | |
1834 | #define MUXENAB_DEF_GETIX(val, name) \ | |
1835 | ((((val) & MUXENAB_DEF_ ## name ## _MASK) >> MUXENAB_DEF_ ## name ## _SHIFT) - 1) | |
1836 | ||
1837 | /* | |
1838 | * These are the UART port assignments, expressed as offsets from the base | |
1839 | * register. These assignments should hold for any serial port based on | |
1840 | * a 8250, 16450, or 16550(A). | |
1841 | */ | |
1842 | ||
1843 | #define UART_RX 0 /**< In: Receive buffer (DLAB=0) */ | |
1844 | #define UART_TX 0 /**< Out: Transmit buffer (DLAB=0) */ | |
1845 | #define UART_DLL 0 /**< Out: Divisor Latch Low (DLAB=1) */ | |
1846 | #define UART_IER 1 /**< In/Out: Interrupt Enable Register (DLAB=0) */ | |
1847 | #define UART_DLM 1 /**< Out: Divisor Latch High (DLAB=1) */ | |
1848 | #define UART_IIR 2 /**< In: Interrupt Identity Register */ | |
1849 | #define UART_FCR 2 /**< Out: FIFO Control Register */ | |
1850 | #define UART_LCR 3 /**< Out: Line Control Register */ | |
1851 | #define UART_MCR 4 /**< Out: Modem Control Register */ | |
1852 | #define UART_LSR 5 /**< In: Line Status Register */ | |
1853 | #define UART_MSR 6 /**< In: Modem Status Register */ | |
1854 | #define UART_SCR 7 /**< I/O: Scratch Register */ | |
1855 | #define UART_LCR_DLAB 0x80 /**< Divisor latch access bit */ | |
1856 | #define UART_LCR_WLEN8 0x03 /**< Word length: 8 bits */ | |
1857 | #define UART_MCR_OUT2 0x08 /**< MCR GPIO out 2 */ | |
1858 | #define UART_MCR_LOOP 0x10 /**< Enable loopback test mode */ | |
1859 | #define UART_LSR_RX_FIFO 0x80 /**< Receive FIFO error */ | |
1860 | #define UART_LSR_TDHR 0x40 /**< Data-hold-register empty */ | |
1861 | #define UART_LSR_THRE 0x20 /**< Transmit-hold-register empty */ | |
1862 | #define UART_LSR_BREAK 0x10 /**< Break interrupt */ | |
1863 | #define UART_LSR_FRAMING 0x08 /**< Framing error */ | |
1864 | #define UART_LSR_PARITY 0x04 /**< Parity error */ | |
1865 | #define UART_LSR_OVERRUN 0x02 /**< Overrun error */ | |
1866 | #define UART_LSR_RXRDY 0x01 /**< Receiver ready */ | |
1867 | #define UART_FCR_FIFO_ENABLE 1 /**< FIFO control register bit controlling FIFO enable/disable */ | |
1868 | ||
1869 | /* Interrupt Identity Register (IIR) bits */ | |
1870 | #define UART_IIR_FIFO_MASK 0xc0 /**< IIR FIFO disable/enabled mask */ | |
1871 | #define UART_IIR_INT_MASK 0xf /**< IIR interrupt ID source */ | |
1872 | #define UART_IIR_MDM_CHG 0x0 /**< Modem status changed */ | |
1873 | #define UART_IIR_NOINT 0x1 /**< No interrupt pending */ | |
1874 | #define UART_IIR_THRE 0x2 /**< THR empty */ | |
1875 | #define UART_IIR_RCVD_DATA 0x4 /**< Received data available */ | |
1876 | #define UART_IIR_RCVR_STATUS 0x6 /**< Receiver status */ | |
1877 | #define UART_IIR_CHAR_TIME 0xc /**< Character time */ | |
1878 | ||
1879 | /* Interrupt Enable Register (IER) bits */ | |
1880 | #define UART_IER_PTIME 128 /**< Programmable THRE Interrupt Mode Enable */ | |
1881 | #define UART_IER_EDSSI 8 /**< enable modem status interrupt */ | |
1882 | #define UART_IER_ELSI 4 /**< enable receiver line status interrupt */ | |
1883 | #define UART_IER_ETBEI 2 /**< enable transmitter holding register empty interrupt */ | |
1884 | #define UART_IER_ERBFI 1 /**< enable data available interrupt */ | |
1885 | ||
1886 | /* pmustatus */ | |
1887 | #define PST_SLOW_WR_PENDING 0x0400 | |
1888 | #define PST_EXTLPOAVAIL 0x0100 | |
1889 | #define PST_WDRESET 0x0080 | |
1890 | #define PST_INTPEND 0x0040 | |
1891 | #define PST_SBCLKST 0x0030 | |
1892 | #define PST_SBCLKST_ILP 0x0010 | |
1893 | #define PST_SBCLKST_ALP 0x0020 | |
1894 | #define PST_SBCLKST_HT 0x0030 | |
1895 | #define PST_ALPAVAIL 0x0008 | |
1896 | #define PST_HTAVAIL 0x0004 | |
1897 | #define PST_RESINIT 0x0003 | |
1898 | #define PST_ILPFASTLPO 0x00010000 | |
1899 | ||
1900 | /* pmucapabilities */ | |
1901 | #define PCAP_REV_MASK 0x000000ff | |
1902 | #define PCAP_RC_MASK 0x00001f00 | |
1903 | #define PCAP_RC_SHIFT 8 | |
1904 | #define PCAP_TC_MASK 0x0001e000 | |
1905 | #define PCAP_TC_SHIFT 13 | |
1906 | #define PCAP_PC_MASK 0x001e0000 | |
1907 | #define PCAP_PC_SHIFT 17 | |
1908 | #define PCAP_VC_MASK 0x01e00000 | |
1909 | #define PCAP_VC_SHIFT 21 | |
1910 | #define PCAP_CC_MASK 0x1e000000 | |
1911 | #define PCAP_CC_SHIFT 25 | |
1912 | #define PCAP5_PC_MASK 0x003e0000 /**< PMU corerev >= 5 */ | |
1913 | #define PCAP5_PC_SHIFT 17 | |
1914 | #define PCAP5_VC_MASK 0x07c00000 | |
1915 | #define PCAP5_VC_SHIFT 22 | |
1916 | #define PCAP5_CC_MASK 0xf8000000 | |
1917 | #define PCAP5_CC_SHIFT 27 | |
1918 | ||
1919 | /* pmucapabilities ext */ | |
1920 | #define PCAP_EXT_ST_NUM_SHIFT (8) /* stat timer number */ | |
1921 | #define PCAP_EXT_ST_NUM_MASK (0xf << PCAP_EXT_ST_NUM_SHIFT) | |
1922 | #define PCAP_EXT_ST_SRC_NUM_SHIFT (12) /* stat timer source number */ | |
1923 | #define PCAP_EXT_ST_SRC_NUM_MASK (0xf << PCAP_EXT_ST_SRC_NUM_SHIFT) | |
1924 | #define PCAP_EXT_MAC_RSRC_REQ_TMR_CNT_SHIFT (20u) /* # of MAC rsrc req timers */ | |
1925 | #define PCAP_EXT_MAC_RSRC_REQ_TMR_CNT_MASK (7u << PCAP_EXT_MAC_RSRC_REQ_TMR_CNT_SHIFT) | |
1926 | #define PCAP_EXT_PMU_INTR_RCVR_CNT_SHIFT (23u) /* pmu int rcvr cnt */ | |
1927 | #define PCAP_EXT_PMU_INTR_RCVR_CNT_MASK (7u << PCAP_EXT_PMU_INTR_RCVR_CNT_SHIFT) | |
1928 | ||
1929 | /* pmustattimer ctrl */ | |
1930 | #define PMU_ST_SRC_SHIFT (0) /* stat timer source number */ | |
1931 | #define PMU_ST_SRC_MASK (0xff << PMU_ST_SRC_SHIFT) | |
1932 | #define PMU_ST_CNT_MODE_SHIFT (10) /* stat timer count mode */ | |
1933 | #define PMU_ST_CNT_MODE_MASK (0x3 << PMU_ST_CNT_MODE_SHIFT) | |
1934 | #define PMU_ST_EN_SHIFT (8) /* stat timer enable */ | |
1935 | #define PMU_ST_EN_MASK (0x1 << PMU_ST_EN_SHIFT) | |
1936 | #define PMU_ST_ENAB 1 | |
1937 | #define PMU_ST_DISAB 0 | |
1938 | #define PMU_ST_INT_EN_SHIFT (9) /* stat timer enable */ | |
1939 | #define PMU_ST_INT_EN_MASK (0x1 << PMU_ST_INT_EN_SHIFT) | |
1940 | #define PMU_ST_INT_ENAB 1 | |
1941 | #define PMU_ST_INT_DISAB 0 | |
1942 | ||
1943 | /* CoreCapabilitiesExtension */ | |
1944 | #define PCAP_EXT_USE_MUXED_ILP_CLK_MASK 0x04000000 | |
1945 | ||
1946 | /* PMU Resource Request Timer registers */ | |
1947 | /* This is based on PmuRev0 */ | |
1948 | #define PRRT_TIME_MASK 0x03ff | |
1949 | #define PRRT_INTEN 0x0400 | |
1950 | /* ReqActive 25 | |
1951 | * The hardware sets this field to 1 when the timer expires. | |
1952 | * Software writes this field to 1 to make immediate resource requests. | |
1953 | */ | |
1954 | #define PRRT_REQ_ACTIVE 0x0800 /* To check h/w status */ | |
1955 | #define PRRT_IMMEDIATE_RES_REQ 0x0800 /* macro for sw immediate res req */ | |
1956 | #define PRRT_ALP_REQ 0x1000 | |
1957 | #define PRRT_HT_REQ 0x2000 | |
1958 | #define PRRT_HQ_REQ 0x4000 | |
1959 | ||
1960 | /* PMU Int Control register bits */ | |
1961 | #define PMU_INTC_ALP_REQ 0x1 | |
1962 | #define PMU_INTC_HT_REQ 0x2 | |
1963 | #define PMU_INTC_HQ_REQ 0x4 | |
1964 | ||
1965 | /* bit 0 of the PMU interrupt vector is asserted if this mask is enabled */ | |
1966 | #define RSRC_INTR_MASK_TIMER_INT_0 1 | |
1967 | #define PMU_INTR_MASK_EXTWAKE_REQ_ACTIVE_0 (1 << 20) | |
1968 | ||
1969 | #define PMU_INT_STAT_RSRC_EVENT_INT0_SHIFT (8u) | |
1970 | #define PMU_INT_STAT_RSRC_EVENT_INT0_MASK (1u << PMU_INT_STAT_RSRC_EVENT_INT0_SHIFT) | |
1971 | ||
1972 | /* bit 16 of the PMU interrupt vector - Stats Timer Interrupt */ | |
1973 | #define PMU_INT_STAT_TIMER_INT_SHIFT (16u) | |
1974 | #define PMU_INT_STAT_TIMER_INT_MASK (1u << PMU_INT_STAT_TIMER_INT_SHIFT) | |
1975 | ||
1976 | /* | |
1977 | * bit 18 of the PMU interrupt vector - S/R self test fails | |
1978 | */ | |
1979 | #define PMU_INT_STAT_SR_ERR_SHIFT (18u) | |
1980 | #define PMU_INT_STAT_SR_ERR_MASK (1u << PMU_INT_STAT_SR_ERR_SHIFT) | |
1981 | ||
1982 | /* PMU resource bit position */ | |
1983 | #define PMURES_BIT(bit) (1 << (bit)) | |
1984 | ||
1985 | /* PMU resource number limit */ | |
1986 | #define PMURES_MAX_RESNUM 30 | |
1987 | ||
1988 | /* PMU chip control0 register */ | |
1989 | #define PMU_CHIPCTL0 0 | |
1990 | ||
1991 | #define PMU_CC0_4369_XTALCORESIZE_BIAS_ADJ_START_VAL (0x20 << 0) | |
1992 | #define PMU_CC0_4369_XTALCORESIZE_BIAS_ADJ_START_MASK (0x3F << 0) | |
1993 | #define PMU_CC0_4369_XTALCORESIZE_BIAS_ADJ_NORMAL_VAL (0xF << 6) | |
1994 | #define PMU_CC0_4369B0_XTALCORESIZE_BIAS_ADJ_NORMAL_VAL (0x1A << 6) | |
1995 | #define PMU_CC0_4369_XTALCORESIZE_BIAS_ADJ_NORMAL_MASK (0x3F << 6) | |
1996 | #define PMU_CC0_4369_XTAL_RES_BYPASS_START_VAL (0 << 12) | |
1997 | #define PMU_CC0_4369_XTAL_RES_BYPASS_START_MASK (0x7 << 12) | |
1998 | #define PMU_CC0_4369_XTAL_RES_BYPASS_NORMAL_VAL (0x1 << 15) | |
1999 | #define PMU_CC0_4369_XTAL_RES_BYPASS_NORMAL_MASK (0x7 << 15) | |
2000 | ||
2001 | // This is not used. so retains reset value | |
2002 | #define PMU_CC0_4362_XTALCORESIZE_BIAS_ADJ_START_VAL (0x20u << 0u) | |
2003 | ||
2004 | #define PMU_CC0_4362_XTALCORESIZE_BIAS_ADJ_START_MASK (0x3Fu << 0u) | |
2005 | #define PMU_CC0_4362_XTALCORESIZE_BIAS_ADJ_NORMAL_VAL (0x1Au << 6u) | |
2006 | #define PMU_CC0_4362_XTALCORESIZE_BIAS_ADJ_NORMAL_MASK (0x3Fu << 6u) | |
2007 | #define PMU_CC0_4362_XTAL_RES_BYPASS_START_VAL (0x00u << 12u) | |
2008 | #define PMU_CC0_4362_XTAL_RES_BYPASS_START_MASK (0x07u << 12u) | |
2009 | #define PMU_CC0_4362_XTAL_RES_BYPASS_NORMAL_VAL (0x02u << 15u) | |
2010 | #define PMU_CC0_4362_XTAL_RES_BYPASS_NORMAL_MASK (0x07u << 15u) | |
2011 | ||
2012 | #define PMU_CC0_4378_XTALCORESIZE_BIAS_ADJ_START_VAL (0x20 << 0) | |
2013 | #define PMU_CC0_4378_XTALCORESIZE_BIAS_ADJ_START_MASK (0x3F << 0) | |
2014 | #define PMU_CC0_4378_XTALCORESIZE_BIAS_ADJ_NORMAL_VAL (0x1A << 6) | |
2015 | #define PMU_CC0_4378_XTALCORESIZE_BIAS_ADJ_NORMAL_MASK (0x3F << 6) | |
2016 | #define PMU_CC0_4378_XTAL_RES_BYPASS_START_VAL (0 << 12) | |
2017 | #define PMU_CC0_4378_XTAL_RES_BYPASS_START_MASK (0x7 << 12) | |
2018 | #define PMU_CC0_4378_XTAL_RES_BYPASS_NORMAL_VAL (0x2 << 15) | |
2019 | #define PMU_CC0_4378_XTAL_RES_BYPASS_NORMAL_MASK (0x7 << 15) | |
2020 | ||
2021 | #define PMU_CC0_4387_XTALCORESIZE_BIAS_ADJ_START_VAL (0x20 << 0) | |
2022 | #define PMU_CC0_4387_XTALCORESIZE_BIAS_ADJ_START_MASK (0x3F << 0) | |
2023 | #define PMU_CC0_4387_XTALCORESIZE_BIAS_ADJ_NORMAL_VAL (0x1A << 6) | |
2024 | #define PMU_CC0_4387_XTALCORESIZE_BIAS_ADJ_NORMAL_MASK (0x3F << 6) | |
2025 | #define PMU_CC0_4387_XTAL_RES_BYPASS_START_VAL (0 << 12) | |
2026 | #define PMU_CC0_4387_XTAL_RES_BYPASS_START_MASK (0x7 << 12) | |
2027 | #define PMU_CC0_4387_XTAL_RES_BYPASS_NORMAL_VAL (0x2 << 15) | |
2028 | #define PMU_CC0_4387_XTAL_RES_BYPASS_NORMAL_MASK (0x7 << 15) | |
2029 | #define PMU_CC0_4387_BT_PU_WAKE_MASK (0x3u << 30u) | |
2030 | ||
2031 | /* clock req types */ | |
2032 | #define PMU_CC1_CLKREQ_TYPE_SHIFT 19 | |
2033 | #define PMU_CC1_CLKREQ_TYPE_MASK (1 << PMU_CC1_CLKREQ_TYPE_SHIFT) | |
2034 | ||
2035 | #define CLKREQ_TYPE_CONFIG_OPENDRAIN 0 | |
2036 | #define CLKREQ_TYPE_CONFIG_PUSHPULL 1 | |
2037 | ||
2038 | /* Power Control */ | |
2039 | #define PWRCTL_ENAB_MEM_CLK_GATE_SHIFT 5 | |
2040 | #define PWRCTL_FORCE_HW_PWR_REQ_OFF_SHIFT 6 | |
2041 | #define PWRCTL_AUTO_MEM_STBYRET 28 | |
2042 | ||
2043 | /* PMU chip control1 register */ | |
2044 | #define PMU_CHIPCTL1 1 | |
2045 | #define PMU_CC1_RXC_DLL_BYPASS 0x00010000 | |
2046 | #define PMU_CC1_ENABLE_BBPLL_PWR_DOWN 0x00000010 | |
2047 | ||
2048 | #define PMU_CC1_IF_TYPE_MASK 0x00000030 | |
2049 | #define PMU_CC1_IF_TYPE_RMII 0x00000000 | |
2050 | #define PMU_CC1_IF_TYPE_MII 0x00000010 | |
2051 | #define PMU_CC1_IF_TYPE_RGMII 0x00000020 | |
2052 | ||
2053 | #define PMU_CC1_SW_TYPE_MASK 0x000000c0 | |
2054 | #define PMU_CC1_SW_TYPE_EPHY 0x00000000 | |
2055 | #define PMU_CC1_SW_TYPE_EPHYMII 0x00000040 | |
2056 | #define PMU_CC1_SW_TYPE_EPHYRMII 0x00000080 | |
2057 | #define PMU_CC1_SW_TYPE_RGMII 0x000000c0 | |
2058 | ||
2059 | #define PMU_CC1_ENABLE_CLOSED_LOOP_MASK 0x00000080 | |
2060 | #define PMU_CC1_ENABLE_CLOSED_LOOP 0x00000000 | |
2061 | ||
2062 | #define PMU_CC1_PWRSW_CLKSTRSTP_DELAY_MASK 0x00003F00u | |
2063 | #ifdef BCM_FASTLPO_PMU | |
2064 | #define PMU_CC1_PWRSW_CLKSTRSTP_DELAY 0x00002000u | |
2065 | #else | |
2066 | #define PMU_CC1_PWRSW_CLKSTRSTP_DELAY 0x00000400u | |
2067 | #endif /* BCM_FASTLPO_PMU */ | |
2068 | ||
2069 | /* PMU chip control2 register */ | |
2070 | #define PMU_CC2_CB2WL_INTR_PWRREQ_EN (1u << 13u) | |
2071 | #define PMU_CC2_RFLDO3P3_PU_FORCE_ON (1u << 15u) | |
2072 | #define PMU_CC2_RFLDO3P3_PU_CLEAR 0x00000000u | |
2073 | ||
2074 | #define PMU_CC2_WL2CDIG_I_PMU_SLEEP (1u << 16u) | |
2075 | #define PMU_CHIPCTL2 2u | |
2076 | #define PMU_CC2_FORCE_SUBCORE_PWR_SWITCH_ON (1u << 18u) | |
2077 | #define PMU_CC2_FORCE_PHY_PWR_SWITCH_ON (1u << 19u) | |
2078 | #define PMU_CC2_FORCE_VDDM_PWR_SWITCH_ON (1u << 20u) | |
2079 | #define PMU_CC2_FORCE_MEMLPLDO_PWR_SWITCH_ON (1u << 21u) | |
2080 | #define PMU_CC2_MASK_WL_DEV_WAKE (1u << 22u) | |
2081 | #define PMU_CC2_INV_GPIO_POLARITY_PMU_WAKE (1u << 25u) | |
2082 | #define PMU_CC2_GCI2_WAKE (1u << 31u) | |
2083 | ||
2084 | #define PMU_CC2_4369_XTALCORESIZE_BIAS_ADJ_START_VAL (0x3u << 26u) | |
2085 | #define PMU_CC2_4369_XTALCORESIZE_BIAS_ADJ_START_MASK (0x3u << 26u) | |
2086 | #define PMU_CC2_4369_XTALCORESIZE_BIAS_ADJ_NORMAL_VAL (0x0u << 28u) | |
2087 | #define PMU_CC2_4369_XTALCORESIZE_BIAS_ADJ_NORMAL_MASK (0x3u << 28u) | |
2088 | ||
2089 | #define PMU_CC2_4362_XTALCORESIZE_BIAS_ADJ_START_VAL (0x3u << 26u) | |
2090 | #define PMU_CC2_4362_XTALCORESIZE_BIAS_ADJ_START_MASK (0x3u << 26u) | |
2091 | #define PMU_CC2_4362_XTALCORESIZE_BIAS_ADJ_NORMAL_VAL (0x0u << 28u) | |
2092 | #define PMU_CC2_4362_XTALCORESIZE_BIAS_ADJ_NORMAL_MASK (0x3u << 28u) | |
2093 | ||
2094 | #define PMU_CC2_4378_XTALCORESIZE_BIAS_ADJ_START_VAL (0x3u << 26u) | |
2095 | #define PMU_CC2_4378_XTALCORESIZE_BIAS_ADJ_START_MASK (0x3u << 26u) | |
2096 | #define PMU_CC2_4378_XTALCORESIZE_BIAS_ADJ_NORMAL_VAL (0x0u << 28u) | |
2097 | #define PMU_CC2_4378_XTALCORESIZE_BIAS_ADJ_NORMAL_MASK (0x3u << 28u) | |
2098 | ||
2099 | #define PMU_CC2_4368_SR_RET_ENABLE (0x7u << 14u) | |
2100 | #define PMU_CC2_4368_WLAN2CB_INT_PWR_MASK (1u << 13u) | |
2101 | #define PMU_CC2_4368_WLAN2CB_INT_PWR_SHIFT 13u | |
2102 | ||
2103 | #define PMU_CC2_4387_XTALCORESIZE_BIAS_ADJ_START_VAL (0x3u << 26u) | |
2104 | #define PMU_CC2_4387_XTALCORESIZE_BIAS_ADJ_START_MASK (0x3u << 26u) | |
2105 | #define PMU_CC2_4387_XTALCORESIZE_BIAS_ADJ_NORMAL_VAL (0x0u << 28u) | |
2106 | #define PMU_CC2_4387_XTALCORESIZE_BIAS_ADJ_NORMAL_MASK (0x3u << 28u) | |
2107 | ||
2108 | /* PMU chip control3 register */ | |
2109 | #define PMU_CHIPCTL3 3u | |
2110 | #define PMU_CC3_ENABLE_SDIO_WAKEUP_SHIFT 19u | |
2111 | #define PMU_CC3_ENABLE_RF_SHIFT 22u | |
2112 | #define PMU_CC3_RF_DISABLE_IVALUE_SHIFT 23u | |
2113 | ||
2114 | #define PMU_CC3_4369_XTALCORESIZE_PMOS_START_VAL (0x3Fu << 0u) | |
2115 | #define PMU_CC3_4369_XTALCORESIZE_PMOS_START_MASK (0x3Fu << 0u) | |
2116 | #define PMU_CC3_4369_XTALCORESIZE_PMOS_NORMAL_VAL (0x3Fu << 15u) | |
2117 | #define PMU_CC3_4369_XTALCORESIZE_PMOS_NORMAL_MASK (0x3Fu << 15u) | |
2118 | #define PMU_CC3_4369_XTALCORESIZE_NMOS_START_VAL (0x3Fu << 6u) | |
2119 | #define PMU_CC3_4369_XTALCORESIZE_NMOS_START_MASK (0x3Fu << 6u) | |
2120 | #define PMU_CC3_4369_XTALCORESIZE_NMOS_NORMAL_VAL (0x3Fu << 21) | |
2121 | #define PMU_CC3_4369_XTALCORESIZE_NMOS_NORMAL_MASK (0x3Fu << 21) | |
2122 | #define PMU_CC3_4369_XTALSEL_BIAS_RES_START_VAL (0x2u << 12u) | |
2123 | #define PMU_CC3_4369_XTALSEL_BIAS_RES_START_MASK (0x7u << 12u) | |
2124 | #define PMU_CC3_4369_XTALSEL_BIAS_RES_NORMAL_VAL (0x2u << 27u) | |
2125 | #define PMU_CC3_4369_XTALSEL_BIAS_RES_NORMAL_MASK (0x7u << 27u) | |
2126 | ||
2127 | #define PMU_CC3_4362_XTALCORESIZE_PMOS_START_VAL (0x3Fu << 0u) | |
2128 | #define PMU_CC3_4362_XTALCORESIZE_PMOS_START_MASK (0x3Fu << 0u) | |
2129 | #define PMU_CC3_4362_XTALCORESIZE_PMOS_NORMAL_VAL (0x3Fu << 15u) | |
2130 | #define PMU_CC3_4362_XTALCORESIZE_PMOS_NORMAL_MASK (0x3Fu << 15u) | |
2131 | #define PMU_CC3_4362_XTALCORESIZE_NMOS_START_VAL (0x3Fu << 6u) | |
2132 | #define PMU_CC3_4362_XTALCORESIZE_NMOS_START_MASK (0x3Fu << 6u) | |
2133 | #define PMU_CC3_4362_XTALCORESIZE_NMOS_NORMAL_VAL (0x3Fu << 21u) | |
2134 | #define PMU_CC3_4362_XTALCORESIZE_NMOS_NORMAL_MASK (0x3Fu << 21u) | |
2135 | #define PMU_CC3_4362_XTALSEL_BIAS_RES_START_VAL (0x02u << 12u) | |
2136 | #define PMU_CC3_4362_XTALSEL_BIAS_RES_START_MASK (0x07u << 12u) | |
2137 | /* Changed from 6 to 4 for wlan PHN and to 2 for BT PER issues */ | |
2138 | #define PMU_CC3_4362_XTALSEL_BIAS_RES_NORMAL_VAL (0x02u << 27u) | |
2139 | #define PMU_CC3_4362_XTALSEL_BIAS_RES_NORMAL_MASK (0x07u << 27u) | |
2140 | ||
2141 | #define PMU_CC3_4378_XTALCORESIZE_PMOS_START_VAL (0x3F << 0) | |
2142 | #define PMU_CC3_4378_XTALCORESIZE_PMOS_START_MASK (0x3F << 0) | |
2143 | #define PMU_CC3_4378_XTALCORESIZE_PMOS_NORMAL_VAL (0x3F << 15) | |
2144 | #define PMU_CC3_4378_XTALCORESIZE_PMOS_NORMAL_MASK (0x3F << 15) | |
2145 | #define PMU_CC3_4378_XTALCORESIZE_NMOS_START_VAL (0x3F << 6) | |
2146 | #define PMU_CC3_4378_XTALCORESIZE_NMOS_START_MASK (0x3F << 6) | |
2147 | #define PMU_CC3_4378_XTALCORESIZE_NMOS_NORMAL_VAL (0x3F << 21) | |
2148 | #define PMU_CC3_4378_XTALCORESIZE_NMOS_NORMAL_MASK (0x3F << 21) | |
2149 | #define PMU_CC3_4378_XTALSEL_BIAS_RES_START_VAL (0x2 << 12) | |
2150 | #define PMU_CC3_4378_XTALSEL_BIAS_RES_START_MASK (0x7 << 12) | |
2151 | #define PMU_CC3_4378_XTALSEL_BIAS_RES_NORMAL_VAL (0x2 << 27) | |
2152 | #define PMU_CC3_4378_XTALSEL_BIAS_RES_NORMAL_MASK (0x7 << 27) | |
2153 | ||
2154 | #define PMU_CC3_4387_XTALCORESIZE_PMOS_START_VAL (0x3F << 0) | |
2155 | #define PMU_CC3_4387_XTALCORESIZE_PMOS_START_MASK (0x3F << 0) | |
2156 | #define PMU_CC3_4387_XTALCORESIZE_PMOS_NORMAL_VAL (0x3F << 15) | |
2157 | #define PMU_CC3_4387_XTALCORESIZE_PMOS_NORMAL_MASK (0x3F << 15) | |
2158 | #define PMU_CC3_4387_XTALCORESIZE_NMOS_START_VAL (0x3F << 6) | |
2159 | #define PMU_CC3_4387_XTALCORESIZE_NMOS_START_MASK (0x3F << 6) | |
2160 | #define PMU_CC3_4387_XTALCORESIZE_NMOS_NORMAL_VAL (0x3F << 21) | |
2161 | #define PMU_CC3_4387_XTALCORESIZE_NMOS_NORMAL_MASK (0x3F << 21) | |
2162 | #define PMU_CC3_4387_XTALSEL_BIAS_RES_START_VAL (0x2 << 12) | |
2163 | #define PMU_CC3_4387_XTALSEL_BIAS_RES_START_MASK (0x7 << 12) | |
2164 | #define PMU_CC3_4387_XTALSEL_BIAS_RES_NORMAL_VAL (0x5 << 27) | |
2165 | #define PMU_CC3_4387_XTALSEL_BIAS_RES_NORMAL_MASK (0x7 << 27) | |
2166 | ||
2167 | /* PMU chip control4 register */ | |
2168 | #define PMU_CHIPCTL4 4 | |
2169 | ||
2170 | /* 53537 series moved switch_type and gmac_if_type to CC4 [15:14] and [13:12] */ | |
2171 | #define PMU_CC4_IF_TYPE_MASK 0x00003000 | |
2172 | #define PMU_CC4_IF_TYPE_RMII 0x00000000 | |
2173 | #define PMU_CC4_IF_TYPE_MII 0x00001000 | |
2174 | #define PMU_CC4_IF_TYPE_RGMII 0x00002000 | |
2175 | ||
2176 | #define PMU_CC4_SW_TYPE_MASK 0x0000c000 | |
2177 | #define PMU_CC4_SW_TYPE_EPHY 0x00000000 | |
2178 | #define PMU_CC4_SW_TYPE_EPHYMII 0x00004000 | |
2179 | #define PMU_CC4_SW_TYPE_EPHYRMII 0x00008000 | |
2180 | #define PMU_CC4_SW_TYPE_RGMII 0x0000c000 | |
2181 | #define PMU_CC4_DISABLE_LQ_AVAIL (1<<27) | |
2182 | ||
2183 | #define PMU_CC4_4369_MAIN_PD_CBUCK2VDDB_ON (1u << 15u) | |
2184 | #define PMU_CC4_4369_MAIN_PD_CBUCK2VDDRET_ON (1u << 16u) | |
2185 | #define PMU_CC4_4369_MAIN_PD_MEMLPLDO2VDDB_ON (1u << 17u) | |
2186 | #define PMU_CC4_4369_MAIN_PD_MEMLPDLO2VDDRET_ON (1u << 18u) | |
2187 | ||
2188 | #define PMU_CC4_4369_AUX_PD_CBUCK2VDDB_ON (1u << 21u) | |
2189 | #define PMU_CC4_4369_AUX_PD_CBUCK2VDDRET_ON (1u << 22u) | |
2190 | #define PMU_CC4_4369_AUX_PD_MEMLPLDO2VDDB_ON (1u << 23u) | |
2191 | #define PMU_CC4_4369_AUX_PD_MEMLPLDO2VDDRET_ON (1u << 24u) | |
2192 | ||
2193 | #define PMU_CC4_4362_PD_CBUCK2VDDB_ON (1u << 15u) | |
2194 | #define PMU_CC4_4362_PD_CBUCK2VDDRET_ON (1u << 16u) | |
2195 | #define PMU_CC4_4362_PD_MEMLPLDO2VDDB_ON (1u << 17u) | |
2196 | #define PMU_CC4_4362_PD_MEMLPDLO2VDDRET_ON (1u << 18u) | |
2197 | ||
2198 | #define PMU_CC4_4378_MAIN_PD_CBUCK2VDDB_ON (1u << 15u) | |
2199 | #define PMU_CC4_4378_MAIN_PD_CBUCK2VDDRET_ON (1u << 16u) | |
2200 | #define PMU_CC4_4378_MAIN_PD_MEMLPLDO2VDDB_ON (1u << 17u) | |
2201 | #define PMU_CC4_4378_MAIN_PD_MEMLPDLO2VDDRET_ON (1u << 18u) | |
2202 | ||
2203 | #define PMU_CC4_4378_AUX_PD_CBUCK2VDDB_ON (1u << 21u) | |
2204 | #define PMU_CC4_4378_AUX_PD_CBUCK2VDDRET_ON (1u << 22u) | |
2205 | #define PMU_CC4_4378_AUX_PD_MEMLPLDO2VDDB_ON (1u << 23u) | |
2206 | #define PMU_CC4_4378_AUX_PD_MEMLPLDO2VDDRET_ON (1u << 24u) | |
2207 | ||
2208 | #define PMU_CC4_4387_MAIN_PD_CBUCK2VDDB_ON (1u << 15u) | |
2209 | #define PMU_CC4_4387_MAIN_PD_CBUCK2VDDRET_ON (1u << 16u) | |
2210 | #define PMU_CC4_4387_MAIN_PD_MEMLPLDO2VDDB_ON (1u << 17u) | |
2211 | #define PMU_CC4_4387_MAIN_PD_MEMLPDLO2VDDRET_ON (1u << 18u) | |
2212 | ||
2213 | #define PMU_CC4_4387_AUX_PD_CBUCK2VDDB_ON (1u << 21u) | |
2214 | #define PMU_CC4_4387_AUX_PD_CBUCK2VDDRET_ON (1u << 22u) | |
2215 | #define PMU_CC4_4387_AUX_PD_MEMLPLDO2VDDB_ON (1u << 23u) | |
2216 | #define PMU_CC4_4387_AUX_PD_MEMLPLDO2VDDRET_ON (1u << 24u) | |
2217 | ||
2218 | /* PMU chip control5 register */ | |
2219 | #define PMU_CHIPCTL5 5 | |
2220 | ||
2221 | #define PMU_CC5_4369_SUBCORE_CBUCK2VDDB_ON (1u << 9u) | |
2222 | #define PMU_CC5_4369_SUBCORE_CBUCK2VDDRET_ON (1u << 10u) | |
2223 | #define PMU_CC5_4369_SUBCORE_MEMLPLDO2VDDB_ON (1u << 11u) | |
2224 | #define PMU_CC5_4369_SUBCORE_MEMLPLDO2VDDRET_ON (1u << 12u) | |
2225 | ||
2226 | #define PMU_CC5_4362_SUBCORE_CBUCK2VDDB_ON (1u << 9u) | |
2227 | #define PMU_CC5_4362_SUBCORE_CBUCK2VDDRET_ON (1u << 10u) | |
2228 | #define PMU_CC5_4362_SUBCORE_MEMLPLDO2VDDB_ON (1u << 11u) | |
2229 | #define PMU_CC5_4362_SUBCORE_MEMLPLDO2VDDRET_ON (1u << 12u) | |
2230 | ||
2231 | #define PMU_CC5_4378_SUBCORE_CBUCK2VDDB_ON (1u << 9u) | |
2232 | #define PMU_CC5_4378_SUBCORE_CBUCK2VDDRET_ON (1u << 10u) | |
2233 | #define PMU_CC5_4378_SUBCORE_MEMLPLDO2VDDB_ON (1u << 11u) | |
2234 | #define PMU_CC5_4378_SUBCORE_MEMLPLDO2VDDRET_ON (1u << 12u) | |
2235 | ||
2236 | #define PMU_CC5_4387_SUBCORE_CBUCK2VDDB_ON (1u << 9u) | |
2237 | #define PMU_CC5_4387_SUBCORE_CBUCK2VDDRET_ON (1u << 10u) | |
2238 | #define PMU_CC5_4387_SUBCORE_MEMLPLDO2VDDB_ON (1u << 11u) | |
2239 | #define PMU_CC5_4387_SUBCORE_MEMLPLDO2VDDRET_ON (1u << 12u) | |
2240 | ||
2241 | #define PMU_CC5_4389_SUBCORE_SDTCCLK0_ON (1u << 3u) | |
2242 | #define PMU_CC5_4389_SUBCORE_SDTCCLK1_ON (1u << 4u) | |
2243 | ||
2244 | /* PMU chip control6 register */ | |
2245 | #define PMU_CHIPCTL6 6 | |
2246 | #define PMU_CC6_RX4_CLK_SEQ_SELECT_MASK BCM_MASK32(1u, 0u) | |
2247 | #define PMU_CC6_ENABLE_DMN1_WAKEUP (1 << 3) | |
2248 | #define PMU_CC6_ENABLE_CLKREQ_WAKEUP (1 << 4) | |
2249 | #define PMU_CC6_ENABLE_PMU_WAKEUP_ALP (1 << 6) | |
2250 | #define PMU_CC6_ENABLE_PCIE_RETENTION (1 << 12) | |
2251 | #define PMU_CC6_ENABLE_PMU_EXT_PERST (1 << 13) | |
2252 | #define PMU_CC6_ENABLE_PMU_WAKEUP_PERST (1 << 14) | |
2253 | #define PMU_CC6_ENABLE_LEGACY_WAKEUP (1 << 16) | |
2254 | ||
2255 | /* PMU chip control7 register */ | |
2256 | #define PMU_CHIPCTL7 7 | |
2257 | #define PMU_CC7_ENABLE_L2REFCLKPAD_PWRDWN (1 << 25) | |
2258 | #define PMU_CC7_ENABLE_MDIO_RESET_WAR (1 << 27) | |
2259 | /* 53537 series have gmca1 gmac_if_type in cc7 [7:6](defalut 0b01) */ | |
2260 | #define PMU_CC7_IF_TYPE_MASK 0x000000c0 | |
2261 | #define PMU_CC7_IF_TYPE_RMII 0x00000000 | |
2262 | #define PMU_CC7_IF_TYPE_MII 0x00000040 | |
2263 | #define PMU_CC7_IF_TYPE_RGMII 0x00000080 | |
2264 | ||
2265 | #define PMU_CHIPCTL8 8 | |
2266 | #define PMU_CHIPCTL9 9 | |
2267 | ||
2268 | #define PMU_CHIPCTL10 10 | |
2269 | #define PMU_CC10_PCIE_PWRSW_RESET0_CNT_SHIFT 0 | |
2270 | #define PMU_CC10_PCIE_PWRSW_RESET0_CNT_MASK 0x000000ff | |
2271 | #define PMU_CC10_PCIE_PWRSW_RESET1_CNT_SHIFT 8 | |
2272 | #define PMU_CC10_PCIE_PWRSW_RESET1_CNT_MASK 0x0000ff00 | |
2273 | #define PMU_CC10_PCIE_PWRSW_UP_DLY_SHIFT 16 | |
2274 | #define PMU_CC10_PCIE_PWRSW_UP_DLY_MASK 0x000f0000 | |
2275 | #define PMU_CC10_PCIE_PWRSW_FORCE_PWROK_DLY_SHIFT 20 | |
2276 | #define PMU_CC10_PCIE_PWRSW_FORCE_PWROK_DLY_MASK 0x00f00000 | |
2277 | #define PMU_CC10_FORCE_PCIE_ON (1 << 24) | |
2278 | #define PMU_CC10_FORCE_PCIE_SW_ON (1 << 25) | |
2279 | #define PMU_CC10_FORCE_PCIE_RETNT_ON (1 << 26) | |
2280 | ||
2281 | #define PMU_CC10_4368_FORCE_PCIE_RETNT_ON (1 << 25) | |
2282 | ||
2283 | #define PMU_CC10_PCIE_PWRSW_RESET_CNT_4US 1 | |
2284 | #define PMU_CC10_PCIE_PWRSW_RESET_CNT_8US 2 | |
2285 | ||
2286 | #define PMU_CC10_PCIE_PWRSW_UP_DLY_0US 0 | |
2287 | ||
2288 | #define PMU_CC10_PCIE_PWRSW_FORCE_PWROK_DLY_4US 1 | |
2289 | #define PMU_CC10_PCIE_RESET0_CNT_SLOW_MASK (0xFu << 4u) | |
2290 | #define PMU_CC10_PCIE_RESET1_CNT_SLOW_MASK (0xFu << 12u) | |
2291 | ||
2292 | #define PMU_CHIPCTL11 11 | |
2293 | ||
2294 | /* PMU chip control12 register */ | |
2295 | #define PMU_CHIPCTL12 12 | |
2296 | #define PMU_CC12_DISABLE_LQ_CLK_ON (1u << 31u) /* HW4387-254 */ | |
2297 | ||
2298 | /* PMU chip control13 register */ | |
2299 | #define PMU_CHIPCTL13 13 | |
2300 | ||
2301 | #define PMU_CC13_SUBCORE_CBUCK2VDDB_OFF (1u << 0u) | |
2302 | #define PMU_CC13_SUBCORE_CBUCK2VDDRET_OFF (1u << 1u) | |
2303 | #define PMU_CC13_SUBCORE_MEMLPLDO2VDDB_OFF (1u << 2u) | |
2304 | #define PMU_CC13_SUBCORE_MEMLPLDO2VDDRET_OFF (1u << 3u) | |
2305 | ||
2306 | #define PMU_CC13_MAIN_CBUCK2VDDB_OFF (1u << 4u) | |
2307 | #define PMU_CC13_MAIN_CBUCK2VDDRET_OFF (1u << 5u) | |
2308 | #define PMU_CC13_MAIN_MEMLPLDO2VDDB_OFF (1u << 6u) | |
2309 | #define PMU_CC13_MAIN_MEMLPLDO2VDDRET_OFF (1u << 7u) | |
2310 | ||
2311 | #define PMU_CC13_AUX_CBUCK2VDDB_OFF (1u << 8u) | |
2312 | #define PMU_CC13_AUX_MEMLPLDO2VDDB_OFF (1u << 10u) | |
2313 | #define PMU_CC13_AUX_MEMLPLDO2VDDRET_OFF (1u << 11u) | |
2314 | #define PMU_CC13_AUX_CBUCK2VDDRET_OFF (1u << 12u) | |
2315 | #define PMU_CC13_CMN_MEMLPLDO2VDDRET_ON (1u << 18u) | |
2316 | ||
2317 | /* HW4368-331 */ | |
2318 | #define PMU_CC13_MAIN_ALWAYS_USE_COHERENT_IF0 (1u << 13u) | |
2319 | #define PMU_CC13_MAIN_ALWAYS_USE_COHERENT_IF1 (1u << 14u) | |
2320 | #define PMU_CC13_AUX_ALWAYS_USE_COHERENT_IF0 (1u << 15u) | |
2321 | #define PMU_CC13_AUX_ALWAYS_USE_COHERENT_IF1 (1u << 19u) | |
2322 | ||
2323 | #define PMU_CC13_LHL_TIMER_SELECT (1u << 23u) | |
2324 | ||
2325 | #define PMU_CC13_4369_LHL_TIMER_SELECT (1u << 23u) | |
2326 | #define PMU_CC13_4378_LHL_TIMER_SELECT (1u << 23u) | |
2327 | ||
2328 | #define PMU_CC13_4387_ENAB_RADIO_REG_CLK (1u << 9u) | |
2329 | #define PMU_CC13_4387_LHL_TIMER_SELECT (1u << 23u) | |
2330 | ||
2331 | #define PMU_CHIPCTL14 14 | |
2332 | #define PMU_CHIPCTL15 15 | |
2333 | #define PMU_CHIPCTL16 16 | |
2334 | #define PMU_CC16_CLK4M_DIS (1 << 4) | |
2335 | #define PMU_CC16_FF_ZERO_ADJ (4 << 5) | |
2336 | ||
2337 | /* PMU chip control17 register */ | |
2338 | #define PMU_CHIPCTL17 17u | |
2339 | ||
2340 | #define PMU_CC17_SCAN_CBUCK2VDDB_OFF (1u << 8u) | |
2341 | #define PMU_CC17_SCAN_MEMLPLDO2VDDB_OFF (1u << 10u) | |
2342 | #define PMU_CC17_SCAN_MEMLPLDO2VDDRET_OFF (1u << 11u) | |
2343 | #define PMU_CC17_SCAN_CBUCK2VDDB_ON (1u << 24u) | |
2344 | #define PMU_CC17_SCAN_MEMLPLDO2VDDB_ON (1u << 26u) | |
2345 | #define PMU_CC17_SCAN_MEMLPLDO2VDDRET_ON (1u << 27u) | |
2346 | ||
2347 | #define PMU_CHIPCTL23 23 | |
2348 | #define PMU_CC23_MACPHYCLK_MASK (1 << 31) | |
2349 | ||
2350 | #define PMU_CC23_AT_CLK0_ON (1u << 14u) | |
2351 | #define PMU_CC23_AT_CLK1_ON (1u << 15u) | |
2352 | ||
2353 | /* PMU chip control14 register */ | |
2354 | #define PMU_CC14_MAIN_VDDB2VDDRET_UP_DLY_MASK (0xF) | |
2355 | #define PMU_CC14_MAIN_VDDB2VDD_UP_DLY_MASK (0xF << 4) | |
2356 | #define PMU_CC14_AUX_VDDB2VDDRET_UP_DLY_MASK (0xF << 8) | |
2357 | #define PMU_CC14_AUX_VDDB2VDD_UP_DLY_MASK (0xF << 12) | |
2358 | #define PMU_CC14_PCIE_VDDB2VDDRET_UP_DLY_MASK (0xF << 16) | |
2359 | #define PMU_CC14_PCIE_VDDB2VDD_UP_DLY_MASK (0xF << 20) | |
2360 | ||
2361 | /* PMU chip control15 register */ | |
2362 | #define PMU_CC15_PCIE_VDDB_CURRENT_LIMIT_DELAY_MASK (0xFu << 4u) | |
2363 | #define PMU_CC15_PCIE_VDDB_FORCE_RPS_PWROK_DELAY_MASK (0xFu << 8u) | |
2364 | ||
2365 | /* PMU corerev and chip specific PLL controls. | |
2366 | * PMU<rev>_PLL<num>_XX where <rev> is PMU corerev and <num> is an arbitrary number | |
2367 | * to differentiate different PLLs controlled by the same PMU rev. | |
2368 | */ | |
2369 | /* pllcontrol registers */ | |
2370 | /* PDIV, div_phy, div_arm, div_adc, dith_sel, ioff, kpd_scale, lsb_sel, mash_sel, lf_c & lf_r */ | |
2371 | #define PMU0_PLL0_PLLCTL0 0 | |
2372 | #define PMU0_PLL0_PC0_PDIV_MASK 1 | |
2373 | #define PMU0_PLL0_PC0_PDIV_FREQ 25000 | |
2374 | #define PMU0_PLL0_PC0_DIV_ARM_MASK 0x00000038 | |
2375 | #define PMU0_PLL0_PC0_DIV_ARM_SHIFT 3 | |
2376 | #define PMU0_PLL0_PC0_DIV_ARM_BASE 8 | |
2377 | ||
2378 | /* PC0_DIV_ARM for PLLOUT_ARM */ | |
2379 | #define PMU0_PLL0_PC0_DIV_ARM_110MHZ 0 | |
2380 | #define PMU0_PLL0_PC0_DIV_ARM_97_7MHZ 1 | |
2381 | #define PMU0_PLL0_PC0_DIV_ARM_88MHZ 2 | |
2382 | #define PMU0_PLL0_PC0_DIV_ARM_80MHZ 3 /* Default */ | |
2383 | #define PMU0_PLL0_PC0_DIV_ARM_73_3MHZ 4 | |
2384 | #define PMU0_PLL0_PC0_DIV_ARM_67_7MHZ 5 | |
2385 | #define PMU0_PLL0_PC0_DIV_ARM_62_9MHZ 6 | |
2386 | #define PMU0_PLL0_PC0_DIV_ARM_58_6MHZ 7 | |
2387 | ||
2388 | /* Wildcard base, stop_mod, en_lf_tp, en_cal & lf_r2 */ | |
2389 | #define PMU0_PLL0_PLLCTL1 1 | |
2390 | #define PMU0_PLL0_PC1_WILD_INT_MASK 0xf0000000 | |
2391 | #define PMU0_PLL0_PC1_WILD_INT_SHIFT 28 | |
2392 | #define PMU0_PLL0_PC1_WILD_FRAC_MASK 0x0fffff00 | |
2393 | #define PMU0_PLL0_PC1_WILD_FRAC_SHIFT 8 | |
2394 | #define PMU0_PLL0_PC1_STOP_MOD 0x00000040 | |
2395 | ||
2396 | /* Wildcard base, vco_calvar, vco_swc, vco_var_selref, vso_ical & vco_sel_avdd */ | |
2397 | #define PMU0_PLL0_PLLCTL2 2 | |
2398 | #define PMU0_PLL0_PC2_WILD_INT_MASK 0xf | |
2399 | #define PMU0_PLL0_PC2_WILD_INT_SHIFT 4 | |
2400 | ||
2401 | /* pllcontrol registers */ | |
2402 | /* ndiv_pwrdn, pwrdn_ch<x>, refcomp_pwrdn, dly_ch<x>, p1div, p2div, _bypass_sdmod */ | |
2403 | #define PMU1_PLL0_PLLCTL0 0 | |
2404 | #define PMU1_PLL0_PC0_P1DIV_MASK 0x00f00000 | |
2405 | #define PMU1_PLL0_PC0_P1DIV_SHIFT 20 | |
2406 | #define PMU1_PLL0_PC0_P2DIV_MASK 0x0f000000 | |
2407 | #define PMU1_PLL0_PC0_P2DIV_SHIFT 24 | |
2408 | ||
2409 | /* m<x>div */ | |
2410 | #define PMU1_PLL0_PLLCTL1 1 | |
2411 | #define PMU1_PLL0_PC1_M1DIV_MASK 0x000000ff | |
2412 | #define PMU1_PLL0_PC1_M1DIV_SHIFT 0 | |
2413 | #define PMU1_PLL0_PC1_M2DIV_MASK 0x0000ff00 | |
2414 | #define PMU1_PLL0_PC1_M2DIV_SHIFT 8 | |
2415 | #define PMU1_PLL0_PC1_M3DIV_MASK 0x00ff0000 | |
2416 | #define PMU1_PLL0_PC1_M3DIV_SHIFT 16 | |
2417 | #define PMU1_PLL0_PC1_M4DIV_MASK 0xff000000 | |
2418 | #define PMU1_PLL0_PC1_M4DIV_SHIFT 24 | |
2419 | #define PMU1_PLL0_PC1_M4DIV_BY_9 9 | |
2420 | #define PMU1_PLL0_PC1_M4DIV_BY_18 0x12 | |
2421 | #define PMU1_PLL0_PC1_M4DIV_BY_36 0x24 | |
2422 | #define PMU1_PLL0_PC1_M4DIV_BY_60 0x3C | |
2423 | #define PMU1_PLL0_PC1_M2_M4DIV_MASK 0xff00ff00 | |
2424 | #define PMU1_PLL0_PC1_HOLD_LOAD_CH 0x28 | |
2425 | ||
2426 | #define DOT11MAC_880MHZ_CLK_DIVISOR_SHIFT 8 | |
2427 | #define DOT11MAC_880MHZ_CLK_DIVISOR_MASK (0xFF << DOT11MAC_880MHZ_CLK_DIVISOR_SHIFT) | |
2428 | #define DOT11MAC_880MHZ_CLK_DIVISOR_VAL (0xE << DOT11MAC_880MHZ_CLK_DIVISOR_SHIFT) | |
2429 | ||
2430 | /* m<x>div, ndiv_dither_mfb, ndiv_mode, ndiv_int */ | |
2431 | #define PMU1_PLL0_PLLCTL2 2 | |
2432 | #define PMU1_PLL0_PC2_M5DIV_MASK 0x000000ff | |
2433 | #define PMU1_PLL0_PC2_M5DIV_SHIFT 0 | |
2434 | #define PMU1_PLL0_PC2_M5DIV_BY_12 0xc | |
2435 | #define PMU1_PLL0_PC2_M5DIV_BY_18 0x12 | |
2436 | #define PMU1_PLL0_PC2_M5DIV_BY_31 0x1f | |
2437 | #define PMU1_PLL0_PC2_M5DIV_BY_36 0x24 | |
2438 | #define PMU1_PLL0_PC2_M5DIV_BY_42 0x2a | |
2439 | #define PMU1_PLL0_PC2_M5DIV_BY_60 0x3c | |
2440 | #define PMU1_PLL0_PC2_M6DIV_MASK 0x0000ff00 | |
2441 | #define PMU1_PLL0_PC2_M6DIV_SHIFT 8 | |
2442 | #define PMU1_PLL0_PC2_M6DIV_BY_18 0x12 | |
2443 | #define PMU1_PLL0_PC2_M6DIV_BY_36 0x24 | |
2444 | #define PMU1_PLL0_PC2_NDIV_MODE_MASK 0x000e0000 | |
2445 | #define PMU1_PLL0_PC2_NDIV_MODE_SHIFT 17 | |
2446 | #define PMU1_PLL0_PC2_NDIV_MODE_MASH 1 | |
2447 | #define PMU1_PLL0_PC2_NDIV_MODE_MFB 2 | |
2448 | #define PMU1_PLL0_PC2_NDIV_INT_MASK 0x1ff00000 | |
2449 | #define PMU1_PLL0_PC2_NDIV_INT_SHIFT 20 | |
2450 | ||
2451 | /* ndiv_frac */ | |
2452 | #define PMU1_PLL0_PLLCTL3 3 | |
2453 | #define PMU1_PLL0_PC3_NDIV_FRAC_MASK 0x00ffffff | |
2454 | #define PMU1_PLL0_PC3_NDIV_FRAC_SHIFT 0 | |
2455 | ||
2456 | /* pll_ctrl */ | |
2457 | #define PMU1_PLL0_PLLCTL4 4 | |
2458 | ||
2459 | /* pll_ctrl, vco_rng, clkdrive_ch<x> */ | |
2460 | #define PMU1_PLL0_PLLCTL5 5 | |
2461 | #define PMU1_PLL0_PC5_CLK_DRV_MASK 0xffffff00 | |
2462 | #define PMU1_PLL0_PC5_CLK_DRV_SHIFT 8 | |
2463 | #define PMU1_PLL0_PC5_ASSERT_CH_MASK 0x3f000000 | |
2464 | #define PMU1_PLL0_PC5_ASSERT_CH_SHIFT 24 | |
2465 | #define PMU1_PLL0_PC5_DEASSERT_CH_MASK 0xff000000 | |
2466 | ||
2467 | #define PMU1_PLL0_PLLCTL6 6 | |
2468 | #define PMU1_PLL0_PLLCTL7 7 | |
2469 | #define PMU1_PLL0_PLLCTL8 8 | |
2470 | ||
2471 | #define PMU1_PLLCTL8_OPENLOOP_MASK (1 << 1) | |
2472 | ||
2473 | #define PMU1_PLL0_PLLCTL9 9 | |
2474 | ||
2475 | #define PMU1_PLL0_PLLCTL10 10 | |
2476 | ||
2477 | /* PMU rev 2 control words */ | |
2478 | #define PMU2_PHY_PLL_PLLCTL 4 | |
2479 | #define PMU2_SI_PLL_PLLCTL 10 | |
2480 | ||
2481 | /* PMU rev 2 */ | |
2482 | /* pllcontrol registers */ | |
2483 | /* ndiv_pwrdn, pwrdn_ch<x>, refcomp_pwrdn, dly_ch<x>, p1div, p2div, _bypass_sdmod */ | |
2484 | #define PMU2_PLL_PLLCTL0 0 | |
2485 | #define PMU2_PLL_PC0_P1DIV_MASK 0x00f00000 | |
2486 | #define PMU2_PLL_PC0_P1DIV_SHIFT 20 | |
2487 | #define PMU2_PLL_PC0_P2DIV_MASK 0x0f000000 | |
2488 | #define PMU2_PLL_PC0_P2DIV_SHIFT 24 | |
2489 | ||
2490 | /* m<x>div */ | |
2491 | #define PMU2_PLL_PLLCTL1 1 | |
2492 | #define PMU2_PLL_PC1_M1DIV_MASK 0x000000ff | |
2493 | #define PMU2_PLL_PC1_M1DIV_SHIFT 0 | |
2494 | #define PMU2_PLL_PC1_M2DIV_MASK 0x0000ff00 | |
2495 | #define PMU2_PLL_PC1_M2DIV_SHIFT 8 | |
2496 | #define PMU2_PLL_PC1_M3DIV_MASK 0x00ff0000 | |
2497 | #define PMU2_PLL_PC1_M3DIV_SHIFT 16 | |
2498 | #define PMU2_PLL_PC1_M4DIV_MASK 0xff000000 | |
2499 | #define PMU2_PLL_PC1_M4DIV_SHIFT 24 | |
2500 | ||
2501 | /* m<x>div, ndiv_dither_mfb, ndiv_mode, ndiv_int */ | |
2502 | #define PMU2_PLL_PLLCTL2 2 | |
2503 | #define PMU2_PLL_PC2_M5DIV_MASK 0x000000ff | |
2504 | #define PMU2_PLL_PC2_M5DIV_SHIFT 0 | |
2505 | #define PMU2_PLL_PC2_M6DIV_MASK 0x0000ff00 | |
2506 | #define PMU2_PLL_PC2_M6DIV_SHIFT 8 | |
2507 | #define PMU2_PLL_PC2_NDIV_MODE_MASK 0x000e0000 | |
2508 | #define PMU2_PLL_PC2_NDIV_MODE_SHIFT 17 | |
2509 | #define PMU2_PLL_PC2_NDIV_INT_MASK 0x1ff00000 | |
2510 | #define PMU2_PLL_PC2_NDIV_INT_SHIFT 20 | |
2511 | ||
2512 | /* ndiv_frac */ | |
2513 | #define PMU2_PLL_PLLCTL3 3 | |
2514 | #define PMU2_PLL_PC3_NDIV_FRAC_MASK 0x00ffffff | |
2515 | #define PMU2_PLL_PC3_NDIV_FRAC_SHIFT 0 | |
2516 | ||
2517 | /* pll_ctrl */ | |
2518 | #define PMU2_PLL_PLLCTL4 4 | |
2519 | ||
2520 | /* pll_ctrl, vco_rng, clkdrive_ch<x> */ | |
2521 | #define PMU2_PLL_PLLCTL5 5 | |
2522 | #define PMU2_PLL_PC5_CLKDRIVE_CH1_MASK 0x00000f00 | |
2523 | #define PMU2_PLL_PC5_CLKDRIVE_CH1_SHIFT 8 | |
2524 | #define PMU2_PLL_PC5_CLKDRIVE_CH2_MASK 0x0000f000 | |
2525 | #define PMU2_PLL_PC5_CLKDRIVE_CH2_SHIFT 12 | |
2526 | #define PMU2_PLL_PC5_CLKDRIVE_CH3_MASK 0x000f0000 | |
2527 | #define PMU2_PLL_PC5_CLKDRIVE_CH3_SHIFT 16 | |
2528 | #define PMU2_PLL_PC5_CLKDRIVE_CH4_MASK 0x00f00000 | |
2529 | #define PMU2_PLL_PC5_CLKDRIVE_CH4_SHIFT 20 | |
2530 | #define PMU2_PLL_PC5_CLKDRIVE_CH5_MASK 0x0f000000 | |
2531 | #define PMU2_PLL_PC5_CLKDRIVE_CH5_SHIFT 24 | |
2532 | #define PMU2_PLL_PC5_CLKDRIVE_CH6_MASK 0xf0000000 | |
2533 | #define PMU2_PLL_PC5_CLKDRIVE_CH6_SHIFT 28 | |
2534 | ||
2535 | /* PMU rev 5 (& 6) */ | |
2536 | #define PMU5_PLL_P1P2_OFF 0 | |
2537 | #define PMU5_PLL_P1_MASK 0x0f000000 | |
2538 | #define PMU5_PLL_P1_SHIFT 24 | |
2539 | #define PMU5_PLL_P2_MASK 0x00f00000 | |
2540 | #define PMU5_PLL_P2_SHIFT 20 | |
2541 | #define PMU5_PLL_M14_OFF 1 | |
2542 | #define PMU5_PLL_MDIV_MASK 0x000000ff | |
2543 | #define PMU5_PLL_MDIV_WIDTH 8 | |
2544 | #define PMU5_PLL_NM5_OFF 2 | |
2545 | #define PMU5_PLL_NDIV_MASK 0xfff00000 | |
2546 | #define PMU5_PLL_NDIV_SHIFT 20 | |
2547 | #define PMU5_PLL_NDIV_MODE_MASK 0x000e0000 | |
2548 | #define PMU5_PLL_NDIV_MODE_SHIFT 17 | |
2549 | #define PMU5_PLL_FMAB_OFF 3 | |
2550 | #define PMU5_PLL_MRAT_MASK 0xf0000000 | |
2551 | #define PMU5_PLL_MRAT_SHIFT 28 | |
2552 | #define PMU5_PLL_ABRAT_MASK 0x08000000 | |
2553 | #define PMU5_PLL_ABRAT_SHIFT 27 | |
2554 | #define PMU5_PLL_FDIV_MASK 0x07ffffff | |
2555 | #define PMU5_PLL_PLLCTL_OFF 4 | |
2556 | #define PMU5_PLL_PCHI_OFF 5 | |
2557 | #define PMU5_PLL_PCHI_MASK 0x0000003f | |
2558 | ||
2559 | /* pmu XtalFreqRatio */ | |
2560 | #define PMU_XTALFREQ_REG_ILPCTR_MASK 0x00001FFF | |
2561 | #define PMU_XTALFREQ_REG_MEASURE_MASK 0x80000000 | |
2562 | #define PMU_XTALFREQ_REG_MEASURE_SHIFT 31 | |
2563 | ||
2564 | /* Divider allocation in 5357 */ | |
2565 | #define PMU5_MAINPLL_CPU 1 | |
2566 | #define PMU5_MAINPLL_MEM 2 | |
2567 | #define PMU5_MAINPLL_SI 3 | |
2568 | ||
2569 | #define PMU7_PLL_PLLCTL7 7 | |
2570 | #define PMU7_PLL_CTL7_M4DIV_MASK 0xff000000 | |
2571 | #define PMU7_PLL_CTL7_M4DIV_SHIFT 24 | |
2572 | #define PMU7_PLL_CTL7_M4DIV_BY_6 6 | |
2573 | #define PMU7_PLL_CTL7_M4DIV_BY_12 0xc | |
2574 | #define PMU7_PLL_CTL7_M4DIV_BY_24 0x18 | |
2575 | #define PMU7_PLL_PLLCTL8 8 | |
2576 | #define PMU7_PLL_CTL8_M5DIV_MASK 0x000000ff | |
2577 | #define PMU7_PLL_CTL8_M5DIV_SHIFT 0 | |
2578 | #define PMU7_PLL_CTL8_M5DIV_BY_8 8 | |
2579 | #define PMU7_PLL_CTL8_M5DIV_BY_12 0xc | |
2580 | #define PMU7_PLL_CTL8_M5DIV_BY_24 0x18 | |
2581 | #define PMU7_PLL_CTL8_M6DIV_MASK 0x0000ff00 | |
2582 | #define PMU7_PLL_CTL8_M6DIV_SHIFT 8 | |
2583 | #define PMU7_PLL_CTL8_M6DIV_BY_12 0xc | |
2584 | #define PMU7_PLL_CTL8_M6DIV_BY_24 0x18 | |
2585 | #define PMU7_PLL_PLLCTL11 11 | |
2586 | #define PMU7_PLL_PLLCTL11_MASK 0xffffff00 | |
2587 | #define PMU7_PLL_PLLCTL11_VAL 0x22222200 | |
2588 | ||
2589 | /* PMU rev 15 */ | |
2590 | #define PMU15_PLL_PLLCTL0 0 | |
2591 | #define PMU15_PLL_PC0_CLKSEL_MASK 0x00000003 | |
2592 | #define PMU15_PLL_PC0_CLKSEL_SHIFT 0 | |
2593 | #define PMU15_PLL_PC0_FREQTGT_MASK 0x003FFFFC | |
2594 | #define PMU15_PLL_PC0_FREQTGT_SHIFT 2 | |
2595 | #define PMU15_PLL_PC0_PRESCALE_MASK 0x00C00000 | |
2596 | #define PMU15_PLL_PC0_PRESCALE_SHIFT 22 | |
2597 | #define PMU15_PLL_PC0_KPCTRL_MASK 0x07000000 | |
2598 | #define PMU15_PLL_PC0_KPCTRL_SHIFT 24 | |
2599 | #define PMU15_PLL_PC0_FCNTCTRL_MASK 0x38000000 | |
2600 | #define PMU15_PLL_PC0_FCNTCTRL_SHIFT 27 | |
2601 | #define PMU15_PLL_PC0_FDCMODE_MASK 0x40000000 | |
2602 | #define PMU15_PLL_PC0_FDCMODE_SHIFT 30 | |
2603 | #define PMU15_PLL_PC0_CTRLBIAS_MASK 0x80000000 | |
2604 | #define PMU15_PLL_PC0_CTRLBIAS_SHIFT 31 | |
2605 | ||
2606 | #define PMU15_PLL_PLLCTL1 1 | |
2607 | #define PMU15_PLL_PC1_BIAS_CTLM_MASK 0x00000060 | |
2608 | #define PMU15_PLL_PC1_BIAS_CTLM_SHIFT 5 | |
2609 | #define PMU15_PLL_PC1_BIAS_CTLM_RST_MASK 0x00000040 | |
2610 | #define PMU15_PLL_PC1_BIAS_CTLM_RST_SHIFT 6 | |
2611 | #define PMU15_PLL_PC1_BIAS_SS_DIVR_MASK 0x0001FF80 | |
2612 | #define PMU15_PLL_PC1_BIAS_SS_DIVR_SHIFT 7 | |
2613 | #define PMU15_PLL_PC1_BIAS_SS_RSTVAL_MASK 0x03FE0000 | |
2614 | #define PMU15_PLL_PC1_BIAS_SS_RSTVAL_SHIFT 17 | |
2615 | #define PMU15_PLL_PC1_BIAS_INTG_BW_MASK 0x0C000000 | |
2616 | #define PMU15_PLL_PC1_BIAS_INTG_BW_SHIFT 26 | |
2617 | #define PMU15_PLL_PC1_BIAS_INTG_BYP_MASK 0x10000000 | |
2618 | #define PMU15_PLL_PC1_BIAS_INTG_BYP_SHIFT 28 | |
2619 | #define PMU15_PLL_PC1_OPENLP_EN_MASK 0x40000000 | |
2620 | #define PMU15_PLL_PC1_OPENLP_EN_SHIFT 30 | |
2621 | ||
2622 | #define PMU15_PLL_PLLCTL2 2 | |
2623 | #define PMU15_PLL_PC2_CTEN_MASK 0x00000001 | |
2624 | #define PMU15_PLL_PC2_CTEN_SHIFT 0 | |
2625 | ||
2626 | #define PMU15_PLL_PLLCTL3 3 | |
2627 | #define PMU15_PLL_PC3_DITHER_EN_MASK 0x00000001 | |
2628 | #define PMU15_PLL_PC3_DITHER_EN_SHIFT 0 | |
2629 | #define PMU15_PLL_PC3_DCOCTLSP_MASK 0xFE000000 | |
2630 | #define PMU15_PLL_PC3_DCOCTLSP_SHIFT 25 | |
2631 | #define PMU15_PLL_PC3_DCOCTLSP_DIV2EN_MASK 0x01 | |
2632 | #define PMU15_PLL_PC3_DCOCTLSP_DIV2EN_SHIFT 0 | |
2633 | #define PMU15_PLL_PC3_DCOCTLSP_CH0EN_MASK 0x02 | |
2634 | #define PMU15_PLL_PC3_DCOCTLSP_CH0EN_SHIFT 1 | |
2635 | #define PMU15_PLL_PC3_DCOCTLSP_CH1EN_MASK 0x04 | |
2636 | #define PMU15_PLL_PC3_DCOCTLSP_CH1EN_SHIFT 2 | |
2637 | #define PMU15_PLL_PC3_DCOCTLSP_CH0SEL_MASK 0x18 | |
2638 | #define PMU15_PLL_PC3_DCOCTLSP_CH0SEL_SHIFT 3 | |
2639 | #define PMU15_PLL_PC3_DCOCTLSP_CH1SEL_MASK 0x60 | |
2640 | #define PMU15_PLL_PC3_DCOCTLSP_CH1SEL_SHIFT 5 | |
2641 | #define PMU15_PLL_PC3_DCOCTLSP_CHSEL_OUTP_DIV1 0 | |
2642 | #define PMU15_PLL_PC3_DCOCTLSP_CHSEL_OUTP_DIV2 1 | |
2643 | #define PMU15_PLL_PC3_DCOCTLSP_CHSEL_OUTP_DIV3 2 | |
2644 | #define PMU15_PLL_PC3_DCOCTLSP_CHSEL_OUTP_DIV5 3 | |
2645 | ||
2646 | #define PMU15_PLL_PLLCTL4 4 | |
2647 | #define PMU15_PLL_PC4_FLLCLK1_DIV_MASK 0x00000007 | |
2648 | #define PMU15_PLL_PC4_FLLCLK1_DIV_SHIFT 0 | |
2649 | #define PMU15_PLL_PC4_FLLCLK2_DIV_MASK 0x00000038 | |
2650 | #define PMU15_PLL_PC4_FLLCLK2_DIV_SHIFT 3 | |
2651 | #define PMU15_PLL_PC4_FLLCLK3_DIV_MASK 0x000001C0 | |
2652 | #define PMU15_PLL_PC4_FLLCLK3_DIV_SHIFT 6 | |
2653 | #define PMU15_PLL_PC4_DBGMODE_MASK 0x00000E00 | |
2654 | #define PMU15_PLL_PC4_DBGMODE_SHIFT 9 | |
2655 | #define PMU15_PLL_PC4_FLL480_CTLSP_LK_MASK 0x00001000 | |
2656 | #define PMU15_PLL_PC4_FLL480_CTLSP_LK_SHIFT 12 | |
2657 | #define PMU15_PLL_PC4_FLL480_CTLSP_MASK 0x000FE000 | |
2658 | #define PMU15_PLL_PC4_FLL480_CTLSP_SHIFT 13 | |
2659 | #define PMU15_PLL_PC4_DINPOL_MASK 0x00100000 | |
2660 | #define PMU15_PLL_PC4_DINPOL_SHIFT 20 | |
2661 | #define PMU15_PLL_PC4_CLKOUT_PD_MASK 0x00200000 | |
2662 | #define PMU15_PLL_PC4_CLKOUT_PD_SHIFT 21 | |
2663 | #define PMU15_PLL_PC4_CLKDIV2_PD_MASK 0x00400000 | |
2664 | #define PMU15_PLL_PC4_CLKDIV2_PD_SHIFT 22 | |
2665 | #define PMU15_PLL_PC4_CLKDIV4_PD_MASK 0x00800000 | |
2666 | #define PMU15_PLL_PC4_CLKDIV4_PD_SHIFT 23 | |
2667 | #define PMU15_PLL_PC4_CLKDIV8_PD_MASK 0x01000000 | |
2668 | #define PMU15_PLL_PC4_CLKDIV8_PD_SHIFT 24 | |
2669 | #define PMU15_PLL_PC4_CLKDIV16_PD_MASK 0x02000000 | |
2670 | #define PMU15_PLL_PC4_CLKDIV16_PD_SHIFT 25 | |
2671 | #define PMU15_PLL_PC4_TEST_EN_MASK 0x04000000 | |
2672 | #define PMU15_PLL_PC4_TEST_EN_SHIFT 26 | |
2673 | ||
2674 | #define PMU15_PLL_PLLCTL5 5 | |
2675 | #define PMU15_PLL_PC5_FREQTGT_MASK 0x000FFFFF | |
2676 | #define PMU15_PLL_PC5_FREQTGT_SHIFT 0 | |
2677 | #define PMU15_PLL_PC5_DCOCTLSP_MASK 0x07F00000 | |
2678 | #define PMU15_PLL_PC5_DCOCTLSP_SHIFT 20 | |
2679 | #define PMU15_PLL_PC5_PRESCALE_MASK 0x18000000 | |
2680 | #define PMU15_PLL_PC5_PRESCALE_SHIFT 27 | |
2681 | ||
2682 | #define PMU15_PLL_PLLCTL6 6 | |
2683 | #define PMU15_PLL_PC6_FREQTGT_MASK 0x000FFFFF | |
2684 | #define PMU15_PLL_PC6_FREQTGT_SHIFT 0 | |
2685 | #define PMU15_PLL_PC6_DCOCTLSP_MASK 0x07F00000 | |
2686 | #define PMU15_PLL_PC6_DCOCTLSP_SHIFT 20 | |
2687 | #define PMU15_PLL_PC6_PRESCALE_MASK 0x18000000 | |
2688 | #define PMU15_PLL_PC6_PRESCALE_SHIFT 27 | |
2689 | ||
2690 | #define PMU15_FREQTGT_480_DEFAULT 0x19AB1 | |
2691 | #define PMU15_FREQTGT_492_DEFAULT 0x1A4F5 | |
2692 | #define PMU15_ARM_96MHZ 96000000 /**< 96 Mhz */ | |
2693 | #define PMU15_ARM_98MHZ 98400000 /**< 98.4 Mhz */ | |
2694 | #define PMU15_ARM_97MHZ 97000000 /**< 97 Mhz */ | |
2695 | ||
2696 | #define PMU17_PLLCTL2_NDIVTYPE_MASK 0x00000070 | |
2697 | #define PMU17_PLLCTL2_NDIVTYPE_SHIFT 4 | |
2698 | ||
2699 | #define PMU17_PLLCTL2_NDIV_MODE_INT 0 | |
2700 | #define PMU17_PLLCTL2_NDIV_MODE_INT1B8 1 | |
2701 | #define PMU17_PLLCTL2_NDIV_MODE_MASH111 2 | |
2702 | #define PMU17_PLLCTL2_NDIV_MODE_MASH111B8 3 | |
2703 | ||
2704 | #define PMU17_PLLCTL0_BBPLL_PWRDWN 0 | |
2705 | #define PMU17_PLLCTL0_BBPLL_DRST 3 | |
2706 | #define PMU17_PLLCTL0_BBPLL_DISBL_CLK 8 | |
2707 | ||
2708 | /* PLL usage in 4716/47162 */ | |
2709 | #define PMU4716_MAINPLL_PLL0 12 | |
2710 | ||
2711 | /* PLL Usages for 4368 */ | |
2712 | #define PMU4368_P1DIV_LO_SHIFT 0 | |
2713 | #define PMU4368_P1DIV_HI_SHIFT 2 | |
2714 | ||
2715 | #define PMU4368_PLL1_PC4_P1DIV_MASK 0xC0000000 | |
2716 | #define PMU4368_PLL1_PC4_P1DIV_SHIFT 30 | |
2717 | #define PMU4368_PLL1_PC5_P1DIV_MASK 0x00000003 | |
2718 | #define PMU4368_PLL1_PC5_P1DIV_SHIFT 0 | |
2719 | #define PMU4368_PLL1_PC5_NDIV_INT_MASK 0x00000ffc | |
2720 | #define PMU4368_PLL1_PC5_NDIV_INT_SHIFT 2 | |
2721 | #define PMU4368_PLL1_PC5_NDIV_FRAC_MASK 0xfffff000 | |
2722 | #define PMU4368_PLL1_PC5_NDIV_FRAC_SHIFT 12 | |
2723 | #define PMU4368_PLL1_PC7_CH0_MDIV_MASK 0x0000000f | |
2724 | #define PMU4368_PLL1_PC7_CH0_MDIV_SHIFT 0 | |
2725 | #define PMU4368_PLL1_PC7_CH1_MDIV_MASK 0x000000f0 | |
2726 | #define PMU4368_PLL1_PC7_CH1_MDIV_SHIFT 4 | |
2727 | ||
2728 | /* PLL usage in 4369 */ | |
2729 | #define PMU4369_PLL0_PC2_PDIV_MASK 0x000f0000 | |
2730 | #define PMU4369_PLL0_PC2_PDIV_SHIFT 16 | |
2731 | #define PMU4369_PLL0_PC2_NDIV_INT_MASK 0x3ff00000 | |
2732 | #define PMU4369_PLL0_PC2_NDIV_INT_SHIFT 20 | |
2733 | #define PMU4369_PLL0_PC3_NDIV_FRAC_MASK 0x000fffff | |
2734 | #define PMU4369_PLL0_PC3_NDIV_FRAC_SHIFT 0 | |
2735 | #define PMU4369_PLL1_PC5_P1DIV_MASK 0xc0000000 | |
2736 | #define PMU4369_PLL1_PC5_P1DIV_SHIFT 30 | |
2737 | #define PMU4369_PLL1_PC6_P1DIV_MASK 0x00000003 | |
2738 | #define PMU4369_PLL1_PC6_P1DIV_SHIFT 0 | |
2739 | #define PMU4369_PLL1_PC6_NDIV_INT_MASK 0x00000ffc | |
2740 | #define PMU4369_PLL1_PC6_NDIV_INT_SHIFT 2 | |
2741 | #define PMU4369_PLL1_PC6_NDIV_FRAC_MASK 0xfffff000 | |
2742 | #define PMU4369_PLL1_PC6_NDIV_FRAC_SHIFT 12 | |
2743 | ||
2744 | #define PMU4369_P1DIV_LO_SHIFT 0 | |
2745 | #define PMU4369_P1DIV_HI_SHIFT 2 | |
2746 | ||
2747 | #define PMU4369_PLL6VAL_P1DIV 4 | |
2748 | #define PMU4369_PLL6VAL_P1DIV_BIT3_2 1 | |
2749 | #define PMU4369_PLL6VAL_PRE_SCALE (1 << 17) | |
2750 | #define PMU4369_PLL6VAL_POST_SCALE (1 << 3) | |
2751 | ||
2752 | /* PLL usage in 4378 | |
2753 | * Temporay setting, update is needed. | |
2754 | */ | |
2755 | #define PMU4378_PLL0_PC2_P1DIV_MASK 0x000f0000 | |
2756 | #define PMU4378_PLL0_PC2_P1DIV_SHIFT 16 | |
2757 | #define PMU4378_PLL0_PC2_NDIV_INT_MASK 0x3ff00000 | |
2758 | #define PMU4378_PLL0_PC2_NDIV_INT_SHIFT 20 | |
2759 | ||
2760 | /* PLL usage in 4387 */ | |
2761 | #define PMU4387_PLL0_PC1_ICH2_MDIV_SHIFT 18 | |
2762 | #define PMU4387_PLL0_PC1_ICH2_MDIV_MASK 0x07FC0000 | |
2763 | #define PMU4387_PLL0_PC2_ICH3_MDIV_MASK 0x000001ff | |
2764 | ||
2765 | /* PLL usage in 4389 */ | |
2766 | #define PMU4389_APLL_NDIV_P 0x154u | |
2767 | #define PMU4389_APLL_NDIV_Q 0x1ffu | |
2768 | #define PMU4389_APLL_PDIV 0x3u | |
2769 | #define PMU4389_ARMPLL_I_NDIV_INT_MASK 0x01ff8000u | |
2770 | #define PMU4389_ARMPLL_I_NDIV_INT_SHIFT 15u | |
2771 | ||
2772 | /* 5357 Chip specific ChipControl register bits */ | |
2773 | #define CCTRL5357_EXTPA (1<<14) /* extPA in ChipControl 1, bit 14 */ | |
2774 | #define CCTRL5357_ANT_MUX_2o3 (1<<15) /* 2o3 in ChipControl 1, bit 15 */ | |
2775 | #define CCTRL5357_NFLASH (1<<16) /* Nandflash in ChipControl 1, bit 16 */ | |
2776 | /* 43217 Chip specific ChipControl register bits */ | |
2777 | #define CCTRL43217_EXTPA_C0 (1<<13) /* core0 extPA in ChipControl 1, bit 13 */ | |
2778 | #define CCTRL43217_EXTPA_C1 (1<<8) /* core1 extPA in ChipControl 1, bit 8 */ | |
2779 | ||
2780 | #define PMU1_PLL0_CHIPCTL0 0 | |
2781 | #define PMU1_PLL0_CHIPCTL1 1 | |
2782 | #define PMU1_PLL0_CHIPCTL2 2 | |
2783 | ||
2784 | #define SOCDEVRAM_BP_ADDR 0x1E000000 | |
2785 | #define SOCDEVRAM_ARM_ADDR 0x00800000 | |
2786 | ||
2787 | #define PMU_VREG0_I_SR_CNTL_EN_SHIFT 0 | |
2788 | #define PMU_VREG0_DISABLE_PULLD_BT_SHIFT 2 | |
2789 | #define PMU_VREG0_DISABLE_PULLD_WL_SHIFT 3 | |
2790 | #define PMU_VREG0_CBUCKFSW_ADJ_SHIFT 7 | |
2791 | #define PMU_VREG0_CBUCKFSW_ADJ_MASK 0x1F | |
2792 | #define PMU_VREG0_RAMP_SEL_SHIFT 13 | |
2793 | #define PMU_VREG0_RAMP_SEL_MASK 0x7 | |
2794 | #define PMU_VREG0_VFB_RSEL_SHIFT 17 | |
2795 | #define PMU_VREG0_VFB_RSEL_MASK 3 | |
2796 | ||
2797 | #define PMU_VREG4_ADDR 4 | |
2798 | ||
2799 | #define PMU_VREG4_CLDO_PWM_SHIFT 4 | |
2800 | #define PMU_VREG4_CLDO_PWM_MASK 0x7 | |
2801 | ||
2802 | #define PMU_VREG4_LPLDO1_SHIFT 15 | |
2803 | #define PMU_VREG4_LPLDO1_MASK 0x7 | |
2804 | #define PMU_VREG4_LPLDO1_1p20V 0 | |
2805 | #define PMU_VREG4_LPLDO1_1p15V 1 | |
2806 | #define PMU_VREG4_LPLDO1_1p10V 2 | |
2807 | #define PMU_VREG4_LPLDO1_1p25V 3 | |
2808 | #define PMU_VREG4_LPLDO1_1p05V 4 | |
2809 | #define PMU_VREG4_LPLDO1_1p00V 5 | |
2810 | #define PMU_VREG4_LPLDO1_0p95V 6 | |
2811 | #define PMU_VREG4_LPLDO1_0p90V 7 | |
2812 | ||
2813 | #define PMU_VREG4_LPLDO2_LVM_SHIFT 18 | |
2814 | #define PMU_VREG4_LPLDO2_LVM_MASK 0x7 | |
2815 | #define PMU_VREG4_LPLDO2_HVM_SHIFT 21 | |
2816 | #define PMU_VREG4_LPLDO2_HVM_MASK 0x7 | |
2817 | #define PMU_VREG4_LPLDO2_LVM_HVM_MASK 0x3f | |
2818 | #define PMU_VREG4_LPLDO2_1p00V 0 | |
2819 | #define PMU_VREG4_LPLDO2_1p15V 1 | |
2820 | #define PMU_VREG4_LPLDO2_1p20V 2 | |
2821 | #define PMU_VREG4_LPLDO2_1p10V 3 | |
2822 | #define PMU_VREG4_LPLDO2_0p90V 4 /**< 4 - 7 is 0.90V */ | |
2823 | ||
2824 | #define PMU_VREG4_HSICLDO_BYPASS_SHIFT 27 | |
2825 | #define PMU_VREG4_HSICLDO_BYPASS_MASK 0x1 | |
2826 | ||
2827 | #define PMU_VREG5_ADDR 5 | |
2828 | #define PMU_VREG5_HSICAVDD_PD_SHIFT 6 | |
2829 | #define PMU_VREG5_HSICAVDD_PD_MASK 0x1 | |
2830 | #define PMU_VREG5_HSICDVDD_PD_SHIFT 11 | |
2831 | #define PMU_VREG5_HSICDVDD_PD_MASK 0x1 | |
2832 | ||
2833 | /* 43228 chipstatus reg bits */ | |
2834 | #define CST43228_OTP_PRESENT 0x2 | |
2835 | ||
2836 | /* 4360 Chip specific ChipControl register bits */ | |
2837 | /* 43602 uses these ChipControl definitions as well */ | |
2838 | #define CCTRL4360_I2C_MODE (1 << 0) | |
2839 | #define CCTRL4360_UART_MODE (1 << 1) | |
2840 | #define CCTRL4360_SECI_MODE (1 << 2) | |
2841 | #define CCTRL4360_BTSWCTRL_MODE (1 << 3) | |
2842 | #define CCTRL4360_DISCRETE_FEMCTRL_MODE (1 << 4) | |
2843 | #define CCTRL4360_DIGITAL_PACTRL_MODE (1 << 5) | |
2844 | #define CCTRL4360_BTSWCTRL_AND_DIGPA_PRESENT (1 << 6) | |
2845 | #define CCTRL4360_EXTRA_GPIO_MODE (1 << 7) | |
2846 | #define CCTRL4360_EXTRA_FEMCTRL_MODE (1 << 8) | |
2847 | #define CCTRL4360_BT_LGCY_MODE (1 << 9) | |
2848 | #define CCTRL4360_CORE2FEMCTRL4_ON (1 << 21) | |
2849 | #define CCTRL4360_SECI_ON_GPIO01 (1 << 24) | |
2850 | ||
2851 | /* 4360 Chip specific Regulator Control register bits */ | |
2852 | #define RCTRL4360_RFLDO_PWR_DOWN (1 << 1) | |
2853 | ||
2854 | /* 4360 PMU resources and chip status bits */ | |
2855 | #define RES4360_REGULATOR 0 | |
2856 | #define RES4360_ILP_AVAIL 1 | |
2857 | #define RES4360_ILP_REQ 2 | |
2858 | #define RES4360_XTAL_LDO_PU 3 | |
2859 | #define RES4360_XTAL_PU 4 | |
2860 | #define RES4360_ALP_AVAIL 5 | |
2861 | #define RES4360_BBPLLPWRSW_PU 6 | |
2862 | #define RES4360_HT_AVAIL 7 | |
2863 | #define RES4360_OTP_PU 8 | |
2864 | #define RES4360_AVB_PLL_PWRSW_PU 9 | |
2865 | #define RES4360_PCIE_TL_CLK_AVAIL 10 | |
2866 | ||
2867 | #define CST4360_XTAL_40MZ 0x00000001 | |
2868 | #define CST4360_SFLASH 0x00000002 | |
2869 | #define CST4360_SPROM_PRESENT 0x00000004 | |
2870 | #define CST4360_SFLASH_TYPE 0x00000004 | |
2871 | #define CST4360_OTP_ENABLED 0x00000008 | |
2872 | #define CST4360_REMAP_ROM 0x00000010 | |
2873 | #define CST4360_RSRC_INIT_MODE_MASK 0x00000060 | |
2874 | #define CST4360_RSRC_INIT_MODE_SHIFT 5 | |
2875 | #define CST4360_ILP_DIVEN 0x00000080 | |
2876 | #define CST4360_MODE_USB 0x00000100 | |
2877 | #define CST4360_SPROM_SIZE_MASK 0x00000600 | |
2878 | #define CST4360_SPROM_SIZE_SHIFT 9 | |
2879 | #define CST4360_BBPLL_LOCK 0x00000800 | |
2880 | #define CST4360_AVBBPLL_LOCK 0x00001000 | |
2881 | #define CST4360_USBBBPLL_LOCK 0x00002000 | |
2882 | #define CST4360_RSRC_INIT_MODE(cs) ((cs & CST4360_RSRC_INIT_MODE_MASK) >> \ | |
2883 | CST4360_RSRC_INIT_MODE_SHIFT) | |
2884 | ||
2885 | #define CCTRL_4360_UART_SEL 0x2 | |
2886 | ||
2887 | #define CST4360_RSRC_INIT_MODE(cs) ((cs & CST4360_RSRC_INIT_MODE_MASK) >> \ | |
2888 | CST4360_RSRC_INIT_MODE_SHIFT) | |
2889 | ||
2890 | #define PMU4360_CC1_GPIO7_OVRD (1<<23) /* GPIO7 override */ | |
2891 | ||
2892 | /* 43602 PMU resources based on pmu_params.xls version v0.95 */ | |
2893 | #define RES43602_LPLDO_PU 0 | |
2894 | #define RES43602_REGULATOR 1 | |
2895 | #define RES43602_PMU_SLEEP 2 | |
2896 | #define RES43602_RSVD_3 3 | |
2897 | #define RES43602_XTALLDO_PU 4 | |
2898 | #define RES43602_SERDES_PU 5 | |
2899 | #define RES43602_BBPLL_PWRSW_PU 6 | |
2900 | #define RES43602_SR_CLK_START 7 | |
2901 | #define RES43602_SR_PHY_PWRSW 8 | |
2902 | #define RES43602_SR_SUBCORE_PWRSW 9 | |
2903 | #define RES43602_XTAL_PU 10 | |
2904 | #define RES43602_PERST_OVR 11 | |
2905 | #define RES43602_SR_CLK_STABLE 12 | |
2906 | #define RES43602_SR_SAVE_RESTORE 13 | |
2907 | #define RES43602_SR_SLEEP 14 | |
2908 | #define RES43602_LQ_START 15 | |
2909 | #define RES43602_LQ_AVAIL 16 | |
2910 | #define RES43602_WL_CORE_RDY 17 | |
2911 | #define RES43602_ILP_REQ 18 | |
2912 | #define RES43602_ALP_AVAIL 19 | |
2913 | #define RES43602_RADIO_PU 20 | |
2914 | #define RES43602_RFLDO_PU 21 | |
2915 | #define RES43602_HT_START 22 | |
2916 | #define RES43602_HT_AVAIL 23 | |
2917 | #define RES43602_MACPHY_CLKAVAIL 24 | |
2918 | #define RES43602_PARLDO_PU 25 | |
2919 | #define RES43602_RSVD_26 26 | |
2920 | ||
2921 | /* 43602 chip status bits */ | |
2922 | #define CST43602_SPROM_PRESENT (1<<1) | |
2923 | #define CST43602_SPROM_SIZE (1<<10) /* 0 = 16K, 1 = 4K */ | |
2924 | #define CST43602_BBPLL_LOCK (1<<11) | |
2925 | #define CST43602_RF_LDO_OUT_OK (1<<15) /* RF LDO output OK */ | |
2926 | ||
2927 | #define PMU43602_CC1_GPIO12_OVRD (1<<28) /* GPIO12 override */ | |
2928 | ||
2929 | #define PMU43602_CC2_PCIE_CLKREQ_L_WAKE_EN (1<<1) /* creates gated_pcie_wake, pmu_wakeup logic */ | |
2930 | #define PMU43602_CC2_PCIE_PERST_L_WAKE_EN (1<<2) /* creates gated_pcie_wake, pmu_wakeup logic */ | |
2931 | #define PMU43602_CC2_ENABLE_L2REFCLKPAD_PWRDWN (1<<3) | |
2932 | #define PMU43602_CC2_PMU_WAKE_ALP_AVAIL_EN (1<<5) /* enable pmu_wakeup to request for ALP_AVAIL */ | |
2933 | #define PMU43602_CC2_PERST_L_EXTEND_EN (1<<9) /* extend perst_l until rsc PERST_OVR comes up */ | |
2934 | #define PMU43602_CC2_FORCE_EXT_LPO (1<<19) /* 1=ext LPO clock is the final LPO clock */ | |
2935 | #define PMU43602_CC2_XTAL32_SEL (1<<30) /* 0=ext_clock, 1=xtal */ | |
2936 | ||
2937 | #define CC_SR1_43602_SR_ASM_ADDR (0x0) | |
2938 | ||
2939 | /* PLL CTL register values for open loop, used during S/R operation */ | |
2940 | #define PMU43602_PLL_CTL6_VAL 0x68000528 | |
2941 | #define PMU43602_PLL_CTL7_VAL 0x6 | |
2942 | ||
2943 | #define PMU43602_CC3_ARMCR4_DBG_CLK (1 << 29) | |
2944 | ||
2945 | #define CC_SR0_43602_SR_ENG_EN_MASK 0x1 | |
2946 | #define CC_SR0_43602_SR_ENG_EN_SHIFT 0 | |
2947 | ||
2948 | /* GCI function sel values */ | |
2949 | #define CC_FNSEL_HWDEF (0u) | |
2950 | #define CC_FNSEL_SAMEASPIN (1u) | |
2951 | #define CC_FNSEL_GPIO0 (2u) | |
2952 | #define CC_FNSEL_GPIO1 (3u) | |
2953 | #define CC_FNSEL_GCI0 (4u) | |
2954 | #define CC_FNSEL_GCI1 (5u) | |
2955 | #define CC_FNSEL_UART (6u) | |
2956 | #define CC_FNSEL_SFLASH (7u) | |
2957 | #define CC_FNSEL_SPROM (8u) | |
2958 | #define CC_FNSEL_MISC0 (9u) | |
2959 | #define CC_FNSEL_MISC1 (10u) | |
2960 | #define CC_FNSEL_MISC2 (11u) | |
2961 | #define CC_FNSEL_IND (12u) | |
2962 | #define CC_FNSEL_PDN (13u) | |
2963 | #define CC_FNSEL_PUP (14u) | |
2964 | #define CC_FNSEL_TRI (15u) | |
2965 | ||
2966 | /* 4387 GCI function sel values */ | |
2967 | #define CC4387_FNSEL_FUART (3u) | |
2968 | #define CC4387_FNSEL_DBG_UART (6u) | |
2969 | #define CC4387_FNSEL_SPI (7u) | |
2970 | ||
2971 | /* Indices of PMU voltage regulator registers */ | |
2972 | #define PMU_VREG_0 (0u) | |
2973 | #define PMU_VREG_1 (1u) | |
2974 | #define PMU_VREG_2 (2u) | |
2975 | #define PMU_VREG_3 (3u) | |
2976 | #define PMU_VREG_4 (4u) | |
2977 | #define PMU_VREG_5 (5u) | |
2978 | #define PMU_VREG_6 (6u) | |
2979 | #define PMU_VREG_7 (7u) | |
2980 | #define PMU_VREG_8 (8u) | |
2981 | #define PMU_VREG_9 (9u) | |
2982 | #define PMU_VREG_10 (10u) | |
2983 | #define PMU_VREG_11 (11u) | |
2984 | #define PMU_VREG_12 (12u) | |
2985 | #define PMU_VREG_13 (13u) | |
2986 | #define PMU_VREG_14 (14u) | |
2987 | #define PMU_VREG_15 (15u) | |
2988 | #define PMU_VREG_16 (16u) | |
2989 | ||
2990 | /* 43012 Chipcommon ChipStatus bits */ | |
2991 | #define CST43012_FLL_LOCK (1 << 13) | |
2992 | /* 43012 resources - End */ | |
2993 | ||
2994 | /* 43012 related Cbuck modes */ | |
2995 | #define PMU_43012_VREG8_DYNAMIC_CBUCK_MODE0 0x00001c03 | |
2996 | #define PMU_43012_VREG9_DYNAMIC_CBUCK_MODE0 0x00492490 | |
2997 | #define PMU_43012_VREG8_DYNAMIC_CBUCK_MODE1 0x00001c03 | |
2998 | #define PMU_43012_VREG9_DYNAMIC_CBUCK_MODE1 0x00490410 | |
2999 | ||
3000 | /* 43012 related dynamic cbuck mode mask */ | |
3001 | #define PMU_43012_VREG8_DYNAMIC_CBUCK_MODE_MASK 0xFFFFFC07 | |
3002 | #define PMU_43012_VREG9_DYNAMIC_CBUCK_MODE_MASK 0xFFFFFFFF | |
3003 | ||
3004 | /* 4369 related VREG masks */ | |
3005 | #define PMU_4369_VREG_5_MISCLDO_POWER_UP_MASK (1u << 11u) | |
3006 | #define PMU_4369_VREG_5_MISCLDO_POWER_UP_SHIFT 11u | |
3007 | #define PMU_4369_VREG_5_LPLDO_POWER_UP_MASK (1u << 27u) | |
3008 | #define PMU_4369_VREG_5_LPLDO_POWER_UP_SHIFT 27u | |
3009 | #define PMU_4369_VREG_5_LPLDO_OP_VLT_ADJ_CTRL_MASK BCM_MASK32(23u, 20u) | |
3010 | #define PMU_4369_VREG_5_LPLDO_OP_VLT_ADJ_CTRL_SHIFT 20u | |
3011 | #define PMU_4369_VREG_5_MEMLPLDO_OP_VLT_ADJ_CTRL_MASK BCM_MASK32(31, 28) | |
3012 | #define PMU_4369_VREG_5_MEMLPLDO_OP_VLT_ADJ_CTRL_SHIFT 28u | |
3013 | ||
3014 | #define PMU_4369_VREG_6_MEMLPLDO_POWER_UP_MASK (1u << 3u) | |
3015 | #define PMU_4369_VREG_6_MEMLPLDO_POWER_UP_SHIFT 3u | |
3016 | ||
3017 | #define PMU_4369_VREG_7_PMU_FORCE_HP_MODE_MASK (1u << 27u) | |
3018 | #define PMU_4369_VREG_7_PMU_FORCE_HP_MODE_SHIFT 27u | |
3019 | #define PMU_4369_VREG_7_WL_PMU_LP_MODE_MASK (1u << 28u) | |
3020 | #define PMU_4369_VREG_7_WL_PMU_LP_MODE_SHIFT 28u | |
3021 | #define PMU_4369_VREG_7_WL_PMU_LV_MODE_MASK (1u << 29u) | |
3022 | #define PMU_4369_VREG_7_WL_PMU_LV_MODE_SHIFT 29u | |
3023 | ||
3024 | #define PMU_4369_VREG8_ASR_OVADJ_LPPFM_MASK BCM_MASK32(4, 0) | |
3025 | #define PMU_4369_VREG8_ASR_OVADJ_LPPFM_SHIFT 0u | |
3026 | ||
3027 | #define PMU_4369_VREG13_RSRC_EN0_ASR_MASK BCM_MASK32(9, 9) | |
3028 | #define PMU_4369_VREG13_RSRC_EN0_ASR_SHIFT 9u | |
3029 | #define PMU_4369_VREG13_RSRC_EN1_ASR_MASK BCM_MASK32(10, 10) | |
3030 | #define PMU_4369_VREG13_RSRC_EN1_ASR_SHIFT 10u | |
3031 | #define PMU_4369_VREG13_RSRC_EN2_ASR_MASK BCM_MASK32(11, 11) | |
3032 | #define PMU_4369_VREG13_RSRC_EN2_ASR_SHIFT 11u | |
3033 | ||
3034 | #define PMU_4369_VREG14_RSRC_EN_CSR_MASK0_MASK (1u << 23u) | |
3035 | #define PMU_4369_VREG14_RSRC_EN_CSR_MASK0_SHIFT 23u | |
3036 | ||
3037 | #define PMU_4369_VREG16_RSRC0_CBUCK_MODE_MASK BCM_MASK32(2, 0) | |
3038 | #define PMU_4369_VREG16_RSRC0_CBUCK_MODE_SHIFT 0u | |
3039 | #define PMU_4369_VREG16_RSRC0_ABUCK_MODE_MASK BCM_MASK32(17, 15) | |
3040 | #define PMU_4369_VREG16_RSRC0_ABUCK_MODE_SHIFT 15u | |
3041 | #define PMU_4369_VREG16_RSRC1_ABUCK_MODE_MASK BCM_MASK32(20, 18) | |
3042 | #define PMU_4369_VREG16_RSRC1_ABUCK_MODE_SHIFT 18u | |
3043 | #define PMU_4369_VREG16_RSRC2_ABUCK_MODE_MASK BCM_MASK32(23, 21) | |
3044 | #define PMU_4369_VREG16_RSRC2_ABUCK_MODE_SHIFT 21u | |
3045 | ||
3046 | /* 4362 related VREG masks */ | |
3047 | #define PMU_4362_VREG_5_MISCLDO_POWER_UP_MASK (1u << 11u) | |
3048 | #define PMU_4362_VREG_5_MISCLDO_POWER_UP_SHIFT (11u) | |
3049 | #define PMU_4362_VREG_5_LPLDO_POWER_UP_MASK (1u << 27u) | |
3050 | #define PMU_4362_VREG_5_LPLDO_POWER_UP_SHIFT (27u) | |
3051 | #define PMU_4362_VREG_5_MEMLPLDO_OP_VLT_ADJ_CTRL_MASK BCM_MASK32(31, 28) | |
3052 | #define PMU_4362_VREG_5_MEMLPLDO_OP_VLT_ADJ_CTRL_SHIFT (28u) | |
3053 | #define PMU_4362_VREG_6_MEMLPLDO_POWER_UP_MASK (1u << 3u) | |
3054 | #define PMU_4362_VREG_6_MEMLPLDO_POWER_UP_SHIFT (3u) | |
3055 | ||
3056 | #define PMU_4362_VREG_7_PMU_FORCE_HP_MODE_MASK (1u << 27u) | |
3057 | #define PMU_4362_VREG_7_PMU_FORCE_HP_MODE_SHIFT (27u) | |
3058 | #define PMU_4362_VREG_7_WL_PMU_LP_MODE_MASK (1u << 28u) | |
3059 | #define PMU_4362_VREG_7_WL_PMU_LP_MODE_SHIFT (28u) | |
3060 | #define PMU_4362_VREG_7_WL_PMU_LV_MODE_MASK (1u << 29u) | |
3061 | #define PMU_4362_VREG_7_WL_PMU_LV_MODE_SHIFT (29u) | |
3062 | ||
3063 | #define PMU_4362_VREG8_ASR_OVADJ_LPPFM_MASK BCM_MASK32(4, 0) | |
3064 | #define PMU_4362_VREG8_ASR_OVADJ_LPPFM_SHIFT (0u) | |
3065 | ||
3066 | #define PMU_4362_VREG8_ASR_OVADJ_PFM_MASK BCM_MASK32(9, 5) | |
3067 | #define PMU_4362_VREG8_ASR_OVADJ_PFM_SHIFT (5u) | |
3068 | ||
3069 | #define PMU_4362_VREG8_ASR_OVADJ_PWM_MASK BCM_MASK32(14, 10) | |
3070 | #define PMU_4362_VREG8_ASR_OVADJ_PWM_SHIFT (10u) | |
3071 | ||
3072 | #define PMU_4362_VREG13_RSRC_EN0_ASR_MASK BCM_MASK32(9, 9) | |
3073 | #define PMU_4362_VREG13_RSRC_EN0_ASR_SHIFT 9u | |
3074 | #define PMU_4362_VREG13_RSRC_EN1_ASR_MASK BCM_MASK32(10, 10) | |
3075 | #define PMU_4362_VREG13_RSRC_EN1_ASR_SHIFT 10u | |
3076 | #define PMU_4362_VREG13_RSRC_EN2_ASR_MASK BCM_MASK32(11, 11) | |
3077 | #define PMU_4362_VREG13_RSRC_EN2_ASR_SHIFT 11u | |
3078 | ||
3079 | #define PMU_4362_VREG14_RSRC_EN_CSR_MASK0_MASK (1u << 23u) | |
3080 | #define PMU_4362_VREG14_RSRC_EN_CSR_MASK0_SHIFT (23u) | |
3081 | ||
3082 | #define PMU_4362_VREG16_RSRC0_CBUCK_MODE_MASK BCM_MASK32(2, 0) | |
3083 | #define PMU_4362_VREG16_RSRC0_CBUCK_MODE_SHIFT (0u) | |
3084 | #define PMU_4362_VREG16_RSRC0_ABUCK_MODE_MASK BCM_MASK32(17, 15) | |
3085 | #define PMU_4362_VREG16_RSRC0_ABUCK_MODE_SHIFT (15u) | |
3086 | #define PMU_4362_VREG16_RSRC1_ABUCK_MODE_MASK BCM_MASK32(20, 18) | |
3087 | #define PMU_4362_VREG16_RSRC1_ABUCK_MODE_SHIFT (18u) | |
3088 | #define PMU_4362_VREG16_RSRC2_ABUCK_MODE_MASK BCM_MASK32(23, 21) | |
3089 | #define PMU_4362_VREG16_RSRC2_ABUCK_MODE_SHIFT 21u | |
3090 | ||
3091 | #define VREG0_4378_CSR_VOLT_ADJ_PWM_MASK 0x00001F00u | |
3092 | #define VREG0_4378_CSR_VOLT_ADJ_PWM_SHIFT 8u | |
3093 | #define VREG0_4378_CSR_VOLT_ADJ_PFM_MASK 0x0003E000u | |
3094 | #define VREG0_4378_CSR_VOLT_ADJ_PFM_SHIFT 13u | |
3095 | #define VREG0_4378_CSR_VOLT_ADJ_LP_PFM_MASK 0x007C0000u | |
3096 | #define VREG0_4378_CSR_VOLT_ADJ_LP_PFM_SHIFT 18u | |
3097 | #define VREG0_4378_CSR_OUT_VOLT_TRIM_ADJ_MASK 0x07800000u | |
3098 | #define VREG0_4378_CSR_OUT_VOLT_TRIM_ADJ_SHIFT 23u | |
3099 | ||
3100 | #define PMU_4387_VREG1_CSR_OVERI_DIS_MASK (1u << 22u) | |
3101 | ||
3102 | #define PMU_4387_VREG6_WL_PMU_LV_MODE_MASK (0x00000002u) | |
3103 | ||
3104 | #define PMU_4389_VREG6_WL_PMU_LV_MODE_SHIFT (1u) | |
3105 | #define PMU_4389_VREG6_WL_PMU_LV_MODE_MASK (1u << PMU_4389_VREG6_WL_PMU_LV_MODE_SHIFT) | |
3106 | #define PMU_4389_VREG6_MEMLDO_PU_SHIFT (3u) | |
3107 | #define PMU_4389_VREG6_MEMLDO_PU_MASK (1u << PMU_4389_VREG6_MEMLDO_PU_SHIFT) | |
3108 | ||
3109 | #define PMU_4387_VREG8_ASR_OVERI_DIS_MASK (1u << 7u) | |
3110 | ||
3111 | #define PMU_VREG13_ASR_OVADJ_PWM_MASK (0x001F0000u) | |
3112 | #define PMU_VREG13_ASR_OVADJ_PWM_SHIFT (16u) | |
3113 | ||
3114 | #define PMU_VREG14_RSRC_EN_ASR_PWM_PFM_MASK (1u << 18u) | |
3115 | #define PMU_VREG14_RSRC_EN_ASR_PWM_PFM_SHIFT (18u) | |
3116 | ||
3117 | #define CSR_VOLT_ADJ_PWM_4378 (0x17u) | |
3118 | #define CSR_VOLT_ADJ_PFM_4378 (0x17u) | |
3119 | #define CSR_VOLT_ADJ_LP_PFM_4378 (0x17u) | |
3120 | #define CSR_OUT_VOLT_TRIM_ADJ_4378 (0xEu) | |
3121 | ||
3122 | /* 1.00V */ | |
3123 | #define ABUCK_VOLT_SW_DEFAULT_4387 (0x1Fu) | |
3124 | ||
3125 | /* 0.68V */ | |
3126 | #define CBUCK_VOLT_SW_DEFAULT_4387 (0xFu) | |
3127 | ||
3128 | #define CC_GCI1_REG (0x1) | |
3129 | ||
3130 | #define FORCE_CLK_ON 1 | |
3131 | #define FORCE_CLK_OFF 0 | |
3132 | ||
3133 | #define PMU1_PLL0_SWITCH_MACCLOCK_120MHZ (0) | |
3134 | #define PMU1_PLL0_SWITCH_MACCLOCK_160MHZ (1) | |
3135 | #define PMU1_PLL0_PC1_M2DIV_VALUE_120MHZ 8 | |
3136 | #define PMU1_PLL0_PC1_M2DIV_VALUE_160MHZ 6 | |
3137 | ||
3138 | /* 4369 Related */ | |
3139 | ||
3140 | /* | |
3141 | * PMU VREG Definitions: | |
3142 | * http://confluence.broadcom.com/display/WLAN/BCM4369+PMU+Vreg+Control+Register | |
3143 | */ | |
3144 | /* PMU VREG4 */ | |
3145 | #define PMU_28NM_VREG4_WL_LDO_CNTL_EN (0x1 << 10) | |
3146 | ||
3147 | /* PMU VREG6 */ | |
3148 | #define PMU_28NM_VREG6_BTLDO3P3_PU (0x1 << 12) | |
3149 | #define PMU_4387_VREG6_BTLDO3P3_PU (0x1 << 8) | |
3150 | ||
3151 | /* PMU resources */ | |
3152 | #define RES4347_XTAL_PU 6 | |
3153 | #define RES4347_CORE_RDY_DIG 17 | |
3154 | #define RES4347_CORE_RDY_AUX 18 | |
3155 | #define RES4347_CORE_RDY_MAIN 22 | |
3156 | ||
3157 | /* 4369 PMU Resources */ | |
3158 | #define RES4369_DUMMY 0 | |
3159 | #define RES4369_ABUCK 1 | |
3160 | #define RES4369_PMU_SLEEP 2 | |
3161 | #define RES4369_MISCLDO 3 | |
3162 | #define RES4369_LDO3P3 4 | |
3163 | #define RES4369_FAST_LPO_AVAIL 5 | |
3164 | #define RES4369_XTAL_PU 6 | |
3165 | #define RES4369_XTAL_STABLE 7 | |
3166 | #define RES4369_PWRSW_DIG 8 | |
3167 | #define RES4369_SR_DIG 9 | |
3168 | #define RES4369_SLEEP_DIG 10 | |
3169 | #define RES4369_PWRSW_AUX 11 | |
3170 | #define RES4369_SR_AUX 12 | |
3171 | #define RES4369_SLEEP_AUX 13 | |
3172 | #define RES4369_PWRSW_MAIN 14 | |
3173 | #define RES4369_SR_MAIN 15 | |
3174 | #define RES4369_SLEEP_MAIN 16 | |
3175 | #define RES4369_DIG_CORE_RDY 17 | |
3176 | #define RES4369_CORE_RDY_AUX 18 | |
3177 | #define RES4369_ALP_AVAIL 19 | |
3178 | #define RES4369_RADIO_AUX_PU 20 | |
3179 | #define RES4369_MINIPMU_AUX_PU 21 | |
3180 | #define RES4369_CORE_RDY_MAIN 22 | |
3181 | #define RES4369_RADIO_MAIN_PU 23 | |
3182 | #define RES4369_MINIPMU_MAIN_PU 24 | |
3183 | #define RES4369_PCIE_EP_PU 25 | |
3184 | #define RES4369_COLD_START_WAIT 26 | |
3185 | #define RES4369_ARMHTAVAIL 27 | |
3186 | #define RES4369_HT_AVAIL 28 | |
3187 | #define RES4369_MACPHY_AUX_CLK_AVAIL 29 | |
3188 | #define RES4369_MACPHY_MAIN_CLK_AVAIL 30 | |
3189 | ||
3190 | /* | |
3191 | * 4378 PMU Resources | |
3192 | */ | |
3193 | #define RES4378_DUMMY 0 | |
3194 | #define RES4378_ABUCK 1 | |
3195 | #define RES4378_PMU_SLEEP 2 | |
3196 | #define RES4378_MISC_LDO 3 | |
3197 | #define RES4378_LDO3P3_PU 4 | |
3198 | #define RES4378_FAST_LPO_AVAIL 5 | |
3199 | #define RES4378_XTAL_PU 6 | |
3200 | #define RES4378_XTAL_STABLE 7 | |
3201 | #define RES4378_PWRSW_DIG 8 | |
3202 | #define RES4378_SR_DIG 9 | |
3203 | #define RES4378_SLEEP_DIG 10 | |
3204 | #define RES4378_PWRSW_AUX 11 | |
3205 | #define RES4378_SR_AUX 12 | |
3206 | #define RES4378_SLEEP_AUX 13 | |
3207 | #define RES4378_PWRSW_MAIN 14 | |
3208 | #define RES4378_SR_MAIN 15 | |
3209 | #define RES4378_SLEEP_MAIN 16 | |
3210 | #define RES4378_CORE_RDY_DIG 17 | |
3211 | #define RES4378_CORE_RDY_AUX 18 | |
3212 | #define RES4378_ALP_AVAIL 19 | |
3213 | #define RES4378_RADIO_AUX_PU 20 | |
3214 | #define RES4378_MINIPMU_AUX_PU 21 | |
3215 | #define RES4378_CORE_RDY_MAIN 22 | |
3216 | #define RES4378_RADIO_MAIN_PU 23 | |
3217 | #define RES4378_MINIPMU_MAIN_PU 24 | |
3218 | #define RES4378_CORE_RDY_CB 25 | |
3219 | #define RES4378_PWRSW_CB 26 | |
3220 | #define RES4378_ARMHTAVAIL 27 | |
3221 | #define RES4378_HT_AVAIL 28 | |
3222 | #define RES4378_MACPHY_AUX_CLK_AVAIL 29 | |
3223 | #define RES4378_MACPHY_MAIN_CLK_AVAIL 30 | |
3224 | #define RES4378_RESERVED_31 31 | |
3225 | ||
3226 | /* | |
3227 | * 4387 PMU Resources | |
3228 | */ | |
3229 | #define RES4387_DUMMY 0 | |
3230 | #define RES4387_RESERVED_1 1 | |
3231 | #define RES4387_FAST_LPO_AVAIL 1 /* C0 */ | |
3232 | #define RES4387_PMU_SLEEP 2 | |
3233 | #define RES4387_PMU_LP 2 /* C0 */ | |
3234 | #define RES4387_MISC_LDO 3 | |
3235 | #define RES4387_RESERVED_4 4 | |
3236 | #define RES4387_SERDES_AFE_RET 4 /* C0 */ | |
3237 | #define RES4387_XTAL_HQ 5 | |
3238 | #define RES4387_XTAL_PU 6 | |
3239 | #define RES4387_XTAL_STABLE 7 | |
3240 | #define RES4387_PWRSW_DIG 8 | |
3241 | #define RES4387_CORE_RDY_BTMAIN 9 | |
3242 | #define RES4387_CORE_RDY_BTSC 10 | |
3243 | #define RES4387_PWRSW_AUX 11 | |
3244 | #define RES4387_PWRSW_SCAN 12 | |
3245 | #define RES4387_CORE_RDY_SCAN 13 | |
3246 | #define RES4387_PWRSW_MAIN 14 | |
3247 | #define RES4387_RESERVED_15 15 | |
3248 | #define RES4387_XTAL_PM_CLK 15 /* C0 */ | |
3249 | #define RES4387_RESERVED_16 16 | |
3250 | #define RES4387_CORE_RDY_DIG 17 | |
3251 | #define RES4387_CORE_RDY_AUX 18 | |
3252 | #define RES4387_ALP_AVAIL 19 | |
3253 | #define RES4387_RADIO_PU_AUX 20 | |
3254 | #define RES4387_RADIO_PU_SCAN 21 | |
3255 | #define RES4387_CORE_RDY_MAIN 22 | |
3256 | #define RES4387_RADIO_PU_MAIN 23 | |
3257 | #define RES4387_MACPHY_CLK_SCAN 24 | |
3258 | #define RES4387_CORE_RDY_CB 25 | |
3259 | #define RES4387_PWRSW_CB 26 | |
3260 | #define RES4387_ARMCLK_AVAIL 27 | |
3261 | #define RES4387_HT_AVAIL 28 | |
3262 | #define RES4387_MACPHY_CLK_AUX 29 | |
3263 | #define RES4387_MACPHY_CLK_MAIN 30 | |
3264 | #define RES4387_RESERVED_31 31 | |
3265 | ||
3266 | /* 4388 PMU Resources */ | |
3267 | #define RES4388_DUMMY 0u | |
3268 | #define RES4388_FAST_LPO_AVAIL 1u | |
3269 | #define RES4388_PMU_LP 2u | |
3270 | #define RES4388_MISC_LDO 3u | |
3271 | #define RES4388_SERDES_AFE_RET 4u | |
3272 | #define RES4388_XTAL_HQ 5u | |
3273 | #define RES4388_XTAL_PU 6u | |
3274 | #define RES4388_XTAL_STABLE 7u | |
3275 | #define RES4388_PWRSW_DIG 8u | |
3276 | #define RES4388_BTMC_TOP_RDY 9u | |
3277 | #define RES4388_BTSC_TOP_RDY 10u | |
3278 | #define RES4388_PWRSW_AUX 11u | |
3279 | #define RES4388_PWRSW_SCAN 12u | |
3280 | #define RES4388_CORE_RDY_SCAN 13u | |
3281 | #define RES4388_PWRSW_MAIN 14u | |
3282 | #define RES4388_RESERVED_15 15u | |
3283 | #define RES4388_RESERVED_16 16u | |
3284 | #define RES4388_CORE_RDY_DIG 17u | |
3285 | #define RES4388_CORE_RDY_AUX 18u | |
3286 | #define RES4388_ALP_AVAIL 19u | |
3287 | #define RES4388_RADIO_PU_AUX 20u | |
3288 | #define RES4388_RADIO_PU_SCAN 21u | |
3289 | #define RES4388_CORE_RDY_MAIN 22u | |
3290 | #define RES4388_RADIO_PU_MAIN 23u | |
3291 | #define RES4388_MACPHY_CLK_SCAN 24u | |
3292 | #define RES4388_CORE_RDY_CB 25u | |
3293 | #define RES4388_PWRSW_CB 26u | |
3294 | #define RES4388_ARMCLKAVAIL 27u | |
3295 | #define RES4388_HT_AVAIL 28u | |
3296 | #define RES4388_MACPHY_CLK_AUX 29u | |
3297 | #define RES4388_MACPHY_CLK_MAIN 30u | |
3298 | #define RES4388_RESERVED_31 31u | |
3299 | ||
3300 | /* 4389 PMU Resources */ | |
3301 | #define RES4389_DUMMY 0u | |
3302 | #define RES4389_FAST_LPO_AVAIL 1u | |
3303 | #define RES4389_PMU_LP 2u | |
3304 | #define RES4389_MISC_LDO 3u | |
3305 | #define RES4389_SERDES_AFE_RET 4u | |
3306 | #define RES4389_XTAL_HQ 5u | |
3307 | #define RES4389_XTAL_PU 6u | |
3308 | #define RES4389_XTAL_STABLE 7u | |
3309 | #define RES4389_PWRSW_DIG 8u | |
3310 | #define RES4389_BTMC_TOP_RDY 9u | |
3311 | #define RES4389_BTSC_TOP_RDY 10u | |
3312 | #define RES4389_PWRSW_AUX 11u | |
3313 | #define RES4389_PWRSW_SCAN 12u | |
3314 | #define RES4389_CORE_RDY_SCAN 13u | |
3315 | #define RES4389_PWRSW_MAIN 14u | |
3316 | #define RES4389_RESERVED_15 15u | |
3317 | #define RES4389_RESERVED_16 16u | |
3318 | #define RES4389_CORE_RDY_DIG 17u | |
3319 | #define RES4389_CORE_RDY_AUX 18u | |
3320 | #define RES4389_ALP_AVAIL 19u | |
3321 | #define RES4389_RADIO_PU_AUX 20u | |
3322 | #define RES4389_RADIO_PU_SCAN 21u | |
3323 | #define RES4389_CORE_RDY_MAIN 22u | |
3324 | #define RES4389_RADIO_PU_MAIN 23u | |
3325 | #define RES4389_MACPHY_CLK_SCAN 24u | |
3326 | #define RES4389_CORE_RDY_CB 25u | |
3327 | #define RES4389_PWRSW_CB 26u | |
3328 | #define RES4389_ARMCLKAVAIL 27u | |
3329 | #define RES4389_HT_AVAIL 28u | |
3330 | #define RES4389_MACPHY_CLK_AUX 29u | |
3331 | #define RES4389_MACPHY_CLK_MAIN 30u | |
3332 | #define RES4389_RESERVED_31 31u | |
3333 | ||
3334 | /* 4397 PMU Resources */ | |
3335 | #define RES4397_DUMMY 0u | |
3336 | #define RES4397_FAST_LPO_AVAIL 1u | |
3337 | #define RES4397_PMU_LP 2u | |
3338 | #define RES4397_MISC_LDO 3u | |
3339 | #define RES4397_SERDES_AFE_RET 4u | |
3340 | #define RES4397_XTAL_HQ 5u | |
3341 | #define RES4397_XTAL_PU 6u | |
3342 | #define RES4397_XTAL_STABLE 7u | |
3343 | #define RES4397_PWRSW_DIG 8u | |
3344 | #define RES4397_BTMC_TOP_RDY 9u | |
3345 | #define RES4397_BTSC_TOP_RDY 10u | |
3346 | #define RES4397_PWRSW_AUX 11u | |
3347 | #define RES4397_PWRSW_SCAN 12u | |
3348 | #define RES4397_CORE_RDY_SCAN 13u | |
3349 | #define RES4397_PWRSW_MAIN 14u | |
3350 | #define RES4397_XTAL_PM_CLK 15u | |
3351 | #define RES4397_PWRSW_DRR2 16u | |
3352 | #define RES4397_CORE_RDY_DIG 17u | |
3353 | #define RES4397_CORE_RDY_AUX 18u | |
3354 | #define RES4397_ALP_AVAIL 19u | |
3355 | #define RES4397_RADIO_PU_AUX 20u | |
3356 | #define RES4397_RADIO_PU_SCAN 21u | |
3357 | #define RES4397_CORE_RDY_MAIN 22u | |
3358 | #define RES4397_RADIO_PU_MAIN 23u | |
3359 | #define RES4397_MACPHY_CLK_SCAN 24u | |
3360 | #define RES4397_CORE_RDY_CB 25u | |
3361 | #define RES4397_PWRSW_CB 26u | |
3362 | #define RES4397_ARMCLKAVAIL 27u | |
3363 | #define RES4397_HT_AVAIL 28u | |
3364 | #define RES4397_MACPHY_CLK_AUX 29u | |
3365 | #define RES4397_MACPHY_CLK_MAIN 30u | |
3366 | #define RES4397_RESERVED_31 31u | |
3367 | ||
3368 | /* 0: BToverPCIe, 1: BToverUART */ | |
3369 | #define CST4378_CHIPMODE_BTOU(cs) (((cs) & (1 << 6)) != 0) | |
3370 | #define CST4378_CHIPMODE_BTOP(cs) (((cs) & (1 << 6)) == 0) | |
3371 | #define CST4378_SPROM_PRESENT 0x00000010 | |
3372 | ||
3373 | #define CST4368_SFLASH_PRESENT 0x00000010U | |
3374 | ||
3375 | #define CST4387_CHIPMODE_BTOU(cs) (((cs) & (1 << 6)) != 0) | |
3376 | #define CST4387_CHIPMODE_BTOP(cs) (((cs) & (1 << 6)) == 0) | |
3377 | #define CST4387_SPROM_PRESENT 0x00000010 | |
3378 | ||
3379 | /* GCI chip status */ | |
3380 | #define GCI_CS_4369_FLL1MHZ_LOCK_MASK (1 << 1) | |
3381 | #define GCI_CS_4387_FLL1MHZ_LOCK_MASK (1 << 1) | |
3382 | ||
3383 | /* GCI chip control registers */ | |
3384 | #define GCI_CC7_AAON_BYPASS_PWRSW_SEL 13 | |
3385 | #define GCI_CC7_AAON_BYPASS_PWRSW_SEQ_ON 14 | |
3386 | ||
3387 | /* 4368 GCI chip control registers */ | |
3388 | #define GCI_CC7_PRISEL_MASK (1 << 8 | 1 << 9) | |
3389 | #define GCI_CC12_PRISEL_MASK (1 << 0 | 1 << 1) | |
3390 | #define GCI_CC12_PRISEL_SHIFT 0 | |
3391 | #define GCI_CC12_DMASK_MASK (0x3ff << 10) | |
3392 | #define GCI_CC16_ANT_SHARE_MASK (1 << 16 | 1 << 17) | |
3393 | ||
3394 | #define CC2_4362_SDIO_AOS_WAKEUP_MASK (1u << 24u) | |
3395 | #define CC2_4362_SDIO_AOS_WAKEUP_SHIFT 24u | |
3396 | ||
3397 | #define CC2_4378_MAIN_MEMLPLDO_VDDB_OFF_MASK (1 << 12) | |
3398 | #define CC2_4378_MAIN_MEMLPLDO_VDDB_OFF_SHIFT 12 | |
3399 | #define CC2_4378_AUX_MEMLPLDO_VDDB_OFF_MASK (1 << 13) | |
3400 | #define CC2_4378_AUX_MEMLPLDO_VDDB_OFF_SHIFT 13 | |
3401 | #define CC2_4378_MAIN_VDDRET_ON_MASK (1 << 15) | |
3402 | #define CC2_4378_MAIN_VDDRET_ON_SHIFT 15 | |
3403 | #define CC2_4378_AUX_VDDRET_ON_MASK (1 << 16) | |
3404 | #define CC2_4378_AUX_VDDRET_ON_SHIFT 16 | |
3405 | #define CC2_4378_GCI2WAKE_MASK (1 << 31) | |
3406 | #define CC2_4378_GCI2WAKE_SHIFT 31 | |
3407 | #define CC2_4378_SDIO_AOS_WAKEUP_MASK (1 << 24) | |
3408 | #define CC2_4378_SDIO_AOS_WAKEUP_SHIFT 24 | |
3409 | #define CC4_4378_LHL_TIMER_SELECT (1 << 0) | |
3410 | #define CC6_4378_PWROK_WDT_EN_IN_MASK (1 << 6) | |
3411 | #define CC6_4378_PWROK_WDT_EN_IN_SHIFT 6 | |
3412 | #define CC6_4378_SDIO_AOS_CHIP_WAKEUP_MASK (1 << 24) | |
3413 | #define CC6_4378_SDIO_AOS_CHIP_WAKEUP_SHIFT 24 | |
3414 | ||
3415 | #define CC2_4378_USE_WLAN_BP_CLK_ON_REQ_MASK (1 << 15) | |
3416 | #define CC2_4378_USE_WLAN_BP_CLK_ON_REQ_SHIFT 15 | |
3417 | #define CC2_4378_USE_CMN_BP_CLK_ON_REQ_MASK (1 << 16) | |
3418 | #define CC2_4378_USE_CMN_BP_CLK_ON_REQ_SHIFT 16 | |
3419 | ||
3420 | #define CC2_4387_MAIN_MEMLPLDO_VDDB_OFF_MASK (1 << 12) | |
3421 | #define CC2_4387_MAIN_MEMLPLDO_VDDB_OFF_SHIFT 12 | |
3422 | #define CC2_4387_AUX_MEMLPLDO_VDDB_OFF_MASK (1 << 13) | |
3423 | #define CC2_4387_AUX_MEMLPLDO_VDDB_OFF_SHIFT 13 | |
3424 | #define CC2_4387_MAIN_VDDRET_ON_MASK (1 << 15) | |
3425 | #define CC2_4387_MAIN_VDDRET_ON_SHIFT 15 | |
3426 | #define CC2_4387_AUX_VDDRET_ON_MASK (1 << 16) | |
3427 | #define CC2_4387_AUX_VDDRET_ON_SHIFT 16 | |
3428 | #define CC2_4387_GCI2WAKE_MASK (1 << 31) | |
3429 | #define CC2_4387_GCI2WAKE_SHIFT 31 | |
3430 | #define CC2_4387_SDIO_AOS_WAKEUP_MASK (1 << 24) | |
3431 | #define CC2_4387_SDIO_AOS_WAKEUP_SHIFT 24 | |
3432 | #define CC4_4387_LHL_TIMER_SELECT (1 << 0) | |
3433 | #define CC6_4387_PWROK_WDT_EN_IN_MASK (1 << 6) | |
3434 | #define CC6_4387_PWROK_WDT_EN_IN_SHIFT 6 | |
3435 | #define CC6_4387_SDIO_AOS_CHIP_WAKEUP_MASK (1 << 24) | |
3436 | #define CC6_4387_SDIO_AOS_CHIP_WAKEUP_SHIFT 24 | |
3437 | ||
3438 | #define CC2_4387_USE_WLAN_BP_CLK_ON_REQ_MASK (1 << 15) | |
3439 | #define CC2_4387_USE_WLAN_BP_CLK_ON_REQ_SHIFT 15 | |
3440 | #define CC2_4387_USE_CMN_BP_CLK_ON_REQ_MASK (1 << 16) | |
3441 | #define CC2_4387_USE_CMN_BP_CLK_ON_REQ_SHIFT 16 | |
3442 | ||
3443 | #define CC2_4389_MAIN_MEMLPLDO_VDDB_OFF_MASK (1u << 12u) | |
3444 | #define CC2_4389_MAIN_MEMLPLDO_VDDB_OFF_SHIFT (12u) | |
3445 | #define CC2_4389_AUX_MEMLPLDO_VDDB_OFF_MASK (1u << 13u) | |
3446 | #define CC2_4389_AUX_MEMLPLDO_VDDB_OFF_SHIFT (13u) | |
3447 | #define CC2_4389_MAIN_VDDRET_ON_MASK (1u << 15u) | |
3448 | #define CC2_4389_MAIN_VDDRET_ON_SHIFT (15u) | |
3449 | #define CC2_4389_AUX_VDDRET_ON_MASK (1u << 16u) | |
3450 | #define CC2_4389_AUX_VDDRET_ON_SHIFT (16u) | |
3451 | #define CC2_4389_GCI2WAKE_MASK (1u << 31u) | |
3452 | #define CC2_4389_GCI2WAKE_SHIFT (31u) | |
3453 | #define CC2_4389_SDIO_AOS_WAKEUP_MASK (1u << 24u) | |
3454 | #define CC2_4389_SDIO_AOS_WAKEUP_SHIFT (24u) | |
3455 | #define CC4_4389_LHL_TIMER_SELECT (1u << 0u) | |
3456 | #define CC6_4389_PWROK_WDT_EN_IN_MASK (1u << 6u) | |
3457 | #define CC6_4389_PWROK_WDT_EN_IN_SHIFT (6u) | |
3458 | #define CC6_4389_SDIO_AOS_CHIP_WAKEUP_MASK (1u << 24u) | |
3459 | #define CC6_4389_SDIO_AOS_CHIP_WAKEUP_SHIFT (24u) | |
3460 | ||
3461 | #define CC2_4389_USE_WLAN_BP_CLK_ON_REQ_MASK (1u << 15u) | |
3462 | #define CC2_4389_USE_WLAN_BP_CLK_ON_REQ_SHIFT (15u) | |
3463 | #define CC2_4389_USE_CMN_BP_CLK_ON_REQ_MASK (1u << 16u) | |
3464 | #define CC2_4389_USE_CMN_BP_CLK_ON_REQ_SHIFT (16u) | |
3465 | ||
3466 | #define PCIE_GPIO1_GPIO_PIN CC_GCI_GPIO_0 | |
3467 | #define PCIE_PERST_GPIO_PIN CC_GCI_GPIO_1 | |
3468 | #define PCIE_CLKREQ_GPIO_PIN CC_GCI_GPIO_2 | |
3469 | ||
3470 | #define VREG5_4378_MEMLPLDO_ADJ_MASK 0xF0000000 | |
3471 | #define VREG5_4378_MEMLPLDO_ADJ_SHIFT 28 | |
3472 | #define VREG5_4378_LPLDO_ADJ_MASK 0x00F00000 | |
3473 | #define VREG5_4378_LPLDO_ADJ_SHIFT 20 | |
3474 | ||
3475 | #define VREG5_4387_MISCLDO_PU_MASK (0x00000800u) | |
3476 | #define VREG5_4387_MISCLDO_PU_SHIFT (11u) | |
3477 | ||
3478 | #define VREG5_4387_MEMLPLDO_ADJ_MASK 0xF0000000 | |
3479 | #define VREG5_4387_MEMLPLDO_ADJ_SHIFT 28 | |
3480 | #define VREG5_4387_LPLDO_ADJ_MASK 0x00F00000 | |
3481 | #define VREG5_4387_LPLDO_ADJ_SHIFT 20 | |
3482 | ||
3483 | /* lpldo/memlpldo voltage */ | |
3484 | #define PMU_VREG5_LPLDO_VOLT_0_88 0xf /* 0.88v */ | |
3485 | #define PMU_VREG5_LPLDO_VOLT_0_86 0xe /* 0.86v */ | |
3486 | #define PMU_VREG5_LPLDO_VOLT_0_84 0xd /* 0.84v */ | |
3487 | #define PMU_VREG5_LPLDO_VOLT_0_82 0xc /* 0.82v */ | |
3488 | #define PMU_VREG5_LPLDO_VOLT_0_80 0xb /* 0.80v */ | |
3489 | #define PMU_VREG5_LPLDO_VOLT_0_78 0xa /* 0.78v */ | |
3490 | #define PMU_VREG5_LPLDO_VOLT_0_76 0x9 /* 0.76v */ | |
3491 | #define PMU_VREG5_LPLDO_VOLT_0_74 0x8 /* 0.74v */ | |
3492 | #define PMU_VREG5_LPLDO_VOLT_0_72 0x7 /* 0.72v */ | |
3493 | #define PMU_VREG5_LPLDO_VOLT_1_10 0x6 /* 1.10v */ | |
3494 | #define PMU_VREG5_LPLDO_VOLT_1_00 0x5 /* 1.00v */ | |
3495 | #define PMU_VREG5_LPLDO_VOLT_0_98 0x4 /* 0.98v */ | |
3496 | #define PMU_VREG5_LPLDO_VOLT_0_96 0x3 /* 0.96v */ | |
3497 | #define PMU_VREG5_LPLDO_VOLT_0_94 0x2 /* 0.94v */ | |
3498 | #define PMU_VREG5_LPLDO_VOLT_0_92 0x1 /* 0.92v */ | |
3499 | #define PMU_VREG5_LPLDO_VOLT_0_90 0x0 /* 0.90v */ | |
3500 | ||
3501 | /* Save/Restore engine */ | |
3502 | ||
3503 | /* 512 bytes block */ | |
3504 | #define SR_ASM_ADDR_BLK_SIZE_SHIFT (9u) | |
3505 | ||
3506 | #define BM_ADDR_TO_SR_ADDR(bmaddr) ((bmaddr) >> SR_ASM_ADDR_BLK_SIZE_SHIFT) | |
3507 | #define SR_ADDR_TO_BM_ADDR(sraddr) ((sraddr) << SR_ASM_ADDR_BLK_SIZE_SHIFT) | |
3508 | ||
3509 | /* Txfifo is 512KB for main core and 128KB for aux core | |
3510 | * We use first 12kB (0x3000) in BMC buffer for template in main core and | |
3511 | * 6.5kB (0x1A00) in aux core, followed by ASM code | |
3512 | */ | |
3513 | #define SR_ASM_ADDR_MAIN_4369 BM_ADDR_TO_SR_ADDR(0xC00) | |
3514 | #define SR_ASM_ADDR_AUX_4369 BM_ADDR_TO_SR_ADDR(0xC00) | |
3515 | #define SR_ASM_ADDR_DIG_4369 (0x0) | |
3516 | ||
3517 | #define SR_ASM_ADDR_MAIN_4362 BM_ADDR_TO_SR_ADDR(0xc00u) | |
3518 | #define SR_ASM_ADDR_DIG_4362 (0x0u) | |
3519 | ||
3520 | #define SR_ASM_ADDR_MAIN_4378 (0x18) | |
3521 | #define SR_ASM_ADDR_AUX_4378 (0xd) | |
3522 | /* backplane address, use last 16k of BTCM for s/r */ | |
3523 | #define SR_ASM_ADDR_DIG_4378A0 (0x51c000) | |
3524 | ||
3525 | /* backplane address, use last 32k of BTCM for s/r */ | |
3526 | #define SR_ASM_ADDR_DIG_4378B0 (0x518000) | |
3527 | ||
3528 | #define SR_ASM_ADDR_MAIN_4368 (0x40) | |
3529 | #define SR_ASM_ADDR_AUX_4368 (0x48) | |
3530 | #define SR_ASM_ADDR_DIG_4368 (0x18520000) | |
3531 | #define SR_ASM_SIZE_DIG_4368 (6114u * 8u) | |
3532 | ||
3533 | #define SR_ASM_ADDR_MAIN_4387 (0x18) | |
3534 | #define SR_ASM_ADDR_AUX_4387 (0xd) | |
3535 | #define SR_ASM_ADDR_SCAN_4387 (0) | |
3536 | /* backplane address */ | |
3537 | #define SR_ASM_ADDR_DIG_4387 (0x800000) | |
3538 | ||
3539 | #define SR_ASM_ADDR_MAIN_4387C0 BM_ADDR_TO_SR_ADDR(0xC00) | |
3540 | #define SR_ASM_ADDR_AUX_4387C0 BM_ADDR_TO_SR_ADDR(0xC00) | |
3541 | #define SR_ASM_ADDR_DIG_4387C0 (0x931000) | |
3542 | #define SR_ASM_ADDR_DIG_4387_C0 (0x931000) | |
3543 | ||
3544 | #define SR_ASM_ADDR_MAIN_4388 BM_ADDR_TO_SR_ADDR(0xC00) | |
3545 | #define SR_ASM_ADDR_AUX_4388 BM_ADDR_TO_SR_ADDR(0xC00) | |
3546 | #define SR_ASM_ADDR_SCAN_4388 BM_ADDR_TO_SR_ADDR(0) | |
3547 | #define SR_ASM_ADDR_DIG_4388 (0x18520000) | |
3548 | #define SR_ASM_SIZE_DIG_4388 (65536u) | |
3549 | ||
3550 | #define SR_ASM_ADDR_MAIN_4389C0 BM_ADDR_TO_SR_ADDR(0xC00) | |
3551 | #define SR_ASM_ADDR_AUX_4389C0 BM_ADDR_TO_SR_ADDR(0xC00) | |
3552 | #define SR_ASM_ADDR_SCAN_4389C0 BM_ADDR_TO_SR_ADDR(0x000) | |
3553 | #define SR_ASM_ADDR_DIG_4389C0 (0x18520000) | |
3554 | #define SR_ASM_SIZE_DIG_4389C0 (8192u * 8u) | |
3555 | ||
3556 | #define SR_ASM_ADDR_MAIN_4389 BM_ADDR_TO_SR_ADDR(0xC00) | |
3557 | #define SR_ASM_ADDR_AUX_4389 BM_ADDR_TO_SR_ADDR(0xC00) | |
3558 | #define SR_ASM_ADDR_SCAN_4389 BM_ADDR_TO_SR_ADDR(0x000) | |
3559 | #define SR_ASM_ADDR_DIG_4389 (0x18520000) | |
3560 | #define SR_ASM_SIZE_DIG_4389 (8192u * 8u) | |
3561 | #define FIS_CMN_SUBCORE_ADDR_4389 (0x1640u) | |
3562 | ||
3563 | #define SR_ASM_ADDR_DIG_4397 (0x18520000) | |
3564 | ||
3565 | /* SR Control0 bits */ | |
3566 | #define SR0_SR_ENG_EN_MASK 0x1 | |
3567 | #define SR0_SR_ENG_EN_SHIFT 0 | |
3568 | #define SR0_SR_ENG_CLK_EN (1 << 1) | |
3569 | #define SR0_RSRC_TRIGGER (0xC << 2) | |
3570 | #define SR0_WD_MEM_MIN_DIV (0x3 << 6) | |
3571 | #define SR0_INVERT_SR_CLK (1 << 11) | |
3572 | #define SR0_MEM_STBY_ALLOW (1 << 16) | |
3573 | #define SR0_ENABLE_SR_ILP (1 << 17) | |
3574 | #define SR0_ENABLE_SR_ALP (1 << 18) | |
3575 | #define SR0_ENABLE_SR_HT (1 << 19) | |
3576 | #define SR0_ALLOW_PIC (3 << 20) | |
3577 | #define SR0_ENB_PMU_MEM_DISABLE (1 << 30) | |
3578 | ||
3579 | /* SR Control0 bits for 4369 */ | |
3580 | #define SR0_4369_SR_ENG_EN_MASK 0x1 | |
3581 | #define SR0_4369_SR_ENG_EN_SHIFT 0 | |
3582 | #define SR0_4369_SR_ENG_CLK_EN (1 << 1) | |
3583 | #define SR0_4369_RSRC_TRIGGER (0xC << 2) | |
3584 | #define SR0_4369_WD_MEM_MIN_DIV (0x2 << 6) | |
3585 | #define SR0_4369_INVERT_SR_CLK (1 << 11) | |
3586 | #define SR0_4369_MEM_STBY_ALLOW (1 << 16) | |
3587 | #define SR0_4369_ENABLE_SR_ILP (1 << 17) | |
3588 | #define SR0_4369_ENABLE_SR_ALP (1 << 18) | |
3589 | #define SR0_4369_ENABLE_SR_HT (1 << 19) | |
3590 | #define SR0_4369_ALLOW_PIC (3 << 20) | |
3591 | #define SR0_4369_ENB_PMU_MEM_DISABLE (1 << 30) | |
3592 | ||
3593 | /* SR Control0 bits for 4378 */ | |
3594 | #define SR0_4378_SR_ENG_EN_MASK 0x1 | |
3595 | #define SR0_4378_SR_ENG_EN_SHIFT 0 | |
3596 | #define SR0_4378_SR_ENG_CLK_EN (1 << 1) | |
3597 | #define SR0_4378_RSRC_TRIGGER (0xC << 2) | |
3598 | #define SR0_4378_WD_MEM_MIN_DIV (0x2 << 6) | |
3599 | #define SR0_4378_INVERT_SR_CLK (1 << 11) | |
3600 | #define SR0_4378_MEM_STBY_ALLOW (1 << 16) | |
3601 | #define SR0_4378_ENABLE_SR_ILP (1 << 17) | |
3602 | #define SR0_4378_ENABLE_SR_ALP (1 << 18) | |
3603 | #define SR0_4378_ENABLE_SR_HT (1 << 19) | |
3604 | #define SR0_4378_ALLOW_PIC (3 << 20) | |
3605 | #define SR0_4378_ENB_PMU_MEM_DISABLE (1 << 30) | |
3606 | ||
3607 | /* SR Control0 bits for 4368 */ | |
3608 | #define SR0_4368_SR_ENG_EN_MASK 0x1 | |
3609 | #define SR0_4368_SR_ENG_EN_SHIFT 0 | |
3610 | #define SR0_4368_SR_ENG_CLK_EN (1 << 1) | |
3611 | #define SR0_4368_RSRC_TRIGGER (0xC << 2) | |
3612 | #define SR0_4368_WD_MEM_MIN_DIV (0x2 << 6) | |
3613 | #define SR0_4368_INVERT_SR_CLK (1 << 11) | |
3614 | #define SR0_4368_MEM_STBY_ALLOW (1 << 16) | |
3615 | #define SR0_4368_ENABLE_SR_ILP (1 << 17) | |
3616 | #define SR0_4368_ENABLE_SR_ALP (1 << 18) | |
3617 | #define SR0_4368_ENABLE_SR_HT (1 << 19) | |
3618 | #define SR0_4368_ALLOW_PIC (3 << 20) | |
3619 | #define SR0_4368_ENB_PMU_MEM_DISABLE (1 << 30) | |
3620 | ||
3621 | /* SR Control0 bits for 4387 */ | |
3622 | #define SR0_4387_SR_ENG_EN_MASK 0x1 | |
3623 | #define SR0_4387_SR_ENG_EN_SHIFT 0 | |
3624 | #define SR0_4387_SR_ENG_CLK_EN (1 << 1) | |
3625 | #define SR0_4387_RSRC_TRIGGER (0xC << 2) | |
3626 | #define SR0_4387_WD_MEM_MIN_DIV (0x2 << 6) | |
3627 | #define SR0_4387_WD_MEM_MIN_DIV_AUX (0x4 << 6) | |
3628 | #define SR0_4387_INVERT_SR_CLK (1 << 11) | |
3629 | #define SR0_4387_MEM_STBY_ALLOW (1 << 16) | |
3630 | #define SR0_4387_ENABLE_SR_ILP (1 << 17) | |
3631 | #define SR0_4387_ENABLE_SR_ALP (1 << 18) | |
3632 | #define SR0_4387_ENABLE_SR_HT (1 << 19) | |
3633 | #define SR0_4387_ALLOW_PIC (3 << 20) | |
3634 | #define SR0_4387_ENB_PMU_MEM_DISABLE (1 << 30) | |
3635 | ||
3636 | /* SR Control0 bits for 4388 */ | |
3637 | #define SR0_4388_SR_ENG_EN_MASK 0x1u | |
3638 | #define SR0_4388_SR_ENG_EN_SHIFT 0 | |
3639 | #define SR0_4388_SR_ENG_CLK_EN (1u << 1u) | |
3640 | #define SR0_4388_RSRC_TRIGGER (0xCu << 2u) | |
3641 | #define SR0_4388_WD_MEM_MIN_DIV (0x2u << 6u) | |
3642 | #define SR0_4388_INVERT_SR_CLK (1u << 11u) | |
3643 | #define SR0_4388_MEM_STBY_ALLOW (1u << 16u) | |
3644 | #define SR0_4388_ENABLE_SR_ILP (1u << 17u) | |
3645 | #define SR0_4388_ENABLE_SR_ALP (1u << 18u) | |
3646 | #define SR0_4388_ENABLE_SR_HT (1u << 19u) | |
3647 | #define SR0_4388_ALLOW_PIC (3u << 20u) | |
3648 | #define SR0_4388_ENB_PMU_MEM_DISABLE (1u << 30u) | |
3649 | ||
3650 | /* SR Control0 bits for 4389 */ | |
3651 | #define SR0_4389_SR_ENG_EN_MASK 0x1 | |
3652 | #define SR0_4389_SR_ENG_EN_SHIFT 0 | |
3653 | #define SR0_4389_SR_ENG_CLK_EN (1 << 1) | |
3654 | #define SR0_4389_RSRC_TRIGGER (0xC << 2) | |
3655 | #define SR0_4389_WD_MEM_MIN_DIV (0x2 << 6) | |
3656 | #define SR0_4389_INVERT_SR_CLK (1 << 11) | |
3657 | #define SR0_4389_MEM_STBY_ALLOW (1 << 16) | |
3658 | #define SR0_4389_ENABLE_SR_ILP (1 << 17) | |
3659 | #define SR0_4389_ENABLE_SR_ALP (1 << 18) | |
3660 | #define SR0_4389_ENABLE_SR_HT (1 << 19) | |
3661 | #define SR0_4389_ALLOW_PIC (3 << 20) | |
3662 | #define SR0_4389_ENB_PMU_MEM_DISABLE (1 << 30) | |
3663 | ||
3664 | /* SR Control1 bits */ | |
3665 | #define SR1_INIT_ADDR_MASK (0x000003FFu) | |
3666 | #define SR1_SELFTEST_ENB_MASK (0x00004000u) | |
3667 | #define SR1_SELFTEST_ERR_INJCT_ENB_MASK (0x00008000u) | |
3668 | #define SR1_SELFTEST_ERR_INJCT_PRD_MASK (0xFFFF0000u) | |
3669 | #define SR1_SELFTEST_ERR_INJCT_PRD_SHIFT (16u) | |
3670 | ||
3671 | /* SR Control2 bits */ | |
3672 | #define SR2_INIT_ADDR_LONG_MASK (0x00003FFFu) | |
3673 | ||
3674 | #define SR_SELFTEST_ERR_INJCT_PRD (0x10u) | |
3675 | ||
3676 | /* SR Status1 bits */ | |
3677 | #define SR_STS1_SR_ERR_MASK (0x00000001u) | |
3678 | ||
3679 | /* =========== LHL regs =========== */ | |
3680 | /* 4369 LHL register settings */ | |
3681 | #define LHL4369_UP_CNT 0 | |
3682 | #define LHL4369_DN_CNT 2 | |
3683 | #define LHL4369_PWRSW_EN_DWN_CNT (LHL4369_DN_CNT + 2) | |
3684 | #define LHL4369_ISO_EN_DWN_CNT (LHL4369_PWRSW_EN_DWN_CNT + 3) | |
3685 | #define LHL4369_SLB_EN_DWN_CNT (LHL4369_ISO_EN_DWN_CNT + 1) | |
3686 | #define LHL4369_ASR_CLK4M_DIS_DWN_CNT (LHL4369_DN_CNT) | |
3687 | #define LHL4369_ASR_LPPFM_MODE_DWN_CNT (LHL4369_DN_CNT) | |
3688 | #define LHL4369_ASR_MODE_SEL_DWN_CNT (LHL4369_DN_CNT) | |
3689 | #define LHL4369_ASR_MANUAL_MODE_DWN_CNT (LHL4369_DN_CNT) | |
3690 | #define LHL4369_ASR_ADJ_DWN_CNT (LHL4369_DN_CNT) | |
3691 | #define LHL4369_ASR_OVERI_DIS_DWN_CNT (LHL4369_DN_CNT) | |
3692 | #define LHL4369_ASR_TRIM_ADJ_DWN_CNT (LHL4369_DN_CNT) | |
3693 | #define LHL4369_VDDC_SW_DIS_DWN_CNT (LHL4369_SLB_EN_DWN_CNT + 1) | |
3694 | #define LHL4369_VMUX_ASR_SEL_DWN_CNT (LHL4369_VDDC_SW_DIS_DWN_CNT + 1) | |
3695 | #define LHL4369_CSR_ADJ_DWN_CNT (LHL4369_VMUX_ASR_SEL_DWN_CNT + 1) | |
3696 | #define LHL4369_CSR_MODE_DWN_CNT (LHL4369_VMUX_ASR_SEL_DWN_CNT + 1) | |
3697 | #define LHL4369_CSR_OVERI_DIS_DWN_CNT (LHL4369_VMUX_ASR_SEL_DWN_CNT + 1) | |
3698 | #define LHL4369_HPBG_CHOP_DIS_DWN_CNT (LHL4369_VMUX_ASR_SEL_DWN_CNT + 1) | |
3699 | #define LHL4369_SRBG_REF_SEL_DWN_CNT (LHL4369_VMUX_ASR_SEL_DWN_CNT + 1) | |
3700 | #define LHL4369_PFM_PWR_SLICE_DWN_CNT (LHL4369_VMUX_ASR_SEL_DWN_CNT + 1) | |
3701 | #define LHL4369_CSR_TRIM_ADJ_DWN_CNT (LHL4369_VMUX_ASR_SEL_DWN_CNT + 1) | |
3702 | #define LHL4369_CSR_VOLTAGE_DWN_CNT (LHL4369_VMUX_ASR_SEL_DWN_CNT + 1) | |
3703 | #define LHL4369_HPBG_PU_EN_DWN_CNT (LHL4369_CSR_MODE_DWN_CNT + 1) | |
3704 | ||
3705 | #define LHL4369_HPBG_PU_EN_UP_CNT (LHL4369_UP_CNT + 1) | |
3706 | #define LHL4369_CSR_ADJ_UP_CNT (LHL4369_HPBG_PU_EN_UP_CNT + 1) | |
3707 | #define LHL4369_CSR_MODE_UP_CNT (LHL4369_HPBG_PU_EN_UP_CNT + 1) | |
3708 | #define LHL4369_CSR_OVERI_DIS_UP_CNT (LHL4369_HPBG_PU_EN_UP_CNT + 1) | |
3709 | #define LHL4369_HPBG_CHOP_DIS_UP_CNT (LHL4369_HPBG_PU_EN_UP_CNT + 1) | |
3710 | #define LHL4369_SRBG_REF_SEL_UP_CNT (LHL4369_HPBG_PU_EN_UP_CNT + 1) | |
3711 | #define LHL4369_PFM_PWR_SLICE_UP_CNT (LHL4369_HPBG_PU_EN_UP_CNT + 1) | |
3712 | #define LHL4369_CSR_TRIM_ADJ_UP_CNT (LHL4369_HPBG_PU_EN_UP_CNT + 1) | |
3713 | #define LHL4369_CSR_VOLTAGE_UP_CNT (LHL4369_HPBG_PU_EN_UP_CNT + 1) | |
3714 | #define LHL4369_VMUX_ASR_SEL_UP_CNT (LHL4369_CSR_MODE_UP_CNT + 1) | |
3715 | #define LHL4369_VDDC_SW_DIS_UP_CNT (LHL4369_VMUX_ASR_SEL_UP_CNT + 1) | |
3716 | #define LHL4369_SLB_EN_UP_CNT (LHL4369_VDDC_SW_DIS_UP_CNT + 8) | |
3717 | #define LHL4369_ISO_EN_UP_CNT (LHL4369_SLB_EN_UP_CNT + 1) | |
3718 | #define LHL4369_PWRSW_EN_UP_CNT (LHL4369_ISO_EN_UP_CNT + 3) | |
3719 | #define LHL4369_ASR_ADJ_UP_CNT (LHL4369_PWRSW_EN_UP_CNT + 1) | |
3720 | #define LHL4369_ASR_CLK4M_DIS_UP_CNT (LHL4369_PWRSW_EN_UP_CNT + 1) | |
3721 | #define LHL4369_ASR_LPPFM_MODE_UP_CNT (LHL4369_PWRSW_EN_UP_CNT + 1) | |
3722 | #define LHL4369_ASR_MODE_SEL_UP_CNT (LHL4369_PWRSW_EN_UP_CNT + 1) | |
3723 | #define LHL4369_ASR_MANUAL_MODE_UP_CNT (LHL4369_PWRSW_EN_UP_CNT + 1) | |
3724 | #define LHL4369_ASR_OVERI_DIS_UP_CNT (LHL4369_PWRSW_EN_UP_CNT + 1) | |
3725 | #define LHL4369_ASR_TRIM_ADJ_UP_CNT (LHL4369_PWRSW_EN_UP_CNT + 1) | |
3726 | ||
3727 | /* 4362 LHL register settings */ | |
3728 | #define LHL4362_UP_CNT (0u) | |
3729 | #define LHL4362_DN_CNT (2u) | |
3730 | #define LHL4362_PWRSW_EN_DWN_CNT (LHL4362_DN_CNT + 2) | |
3731 | #define LHL4362_ISO_EN_DWN_CNT (LHL4362_PWRSW_EN_DWN_CNT + 3) | |
3732 | #define LHL4362_SLB_EN_DWN_CNT (LHL4362_ISO_EN_DWN_CNT + 1) | |
3733 | #define LHL4362_ASR_CLK4M_DIS_DWN_CNT (LHL4362_DN_CNT) | |
3734 | #define LHL4362_ASR_LPPFM_MODE_DWN_CNT (LHL4362_DN_CNT) | |
3735 | #define LHL4362_ASR_MODE_SEL_DWN_CNT (LHL4362_DN_CNT) | |
3736 | #define LHL4362_ASR_MANUAL_MODE_DWN_CNT (LHL4362_DN_CNT) | |
3737 | #define LHL4362_ASR_ADJ_DWN_CNT (LHL4362_DN_CNT) | |
3738 | #define LHL4362_ASR_OVERI_DIS_DWN_CNT (LHL4362_DN_CNT) | |
3739 | #define LHL4362_ASR_TRIM_ADJ_DWN_CNT (LHL4362_DN_CNT) | |
3740 | #define LHL4362_VDDC_SW_DIS_DWN_CNT (LHL4362_SLB_EN_DWN_CNT + 1) | |
3741 | #define LHL4362_VMUX_ASR_SEL_DWN_CNT (LHL4362_VDDC_SW_DIS_DWN_CNT + 1) | |
3742 | #define LHL4362_CSR_ADJ_DWN_CNT (LHL4362_VMUX_ASR_SEL_DWN_CNT + 1) | |
3743 | #define LHL4362_CSR_MODE_DWN_CNT (LHL4362_VMUX_ASR_SEL_DWN_CNT + 1) | |
3744 | #define LHL4362_CSR_OVERI_DIS_DWN_CNT (LHL4362_VMUX_ASR_SEL_DWN_CNT + 1) | |
3745 | #define LHL4362_HPBG_CHOP_DIS_DWN_CNT (LHL4362_VMUX_ASR_SEL_DWN_CNT + 1) | |
3746 | #define LHL4362_SRBG_REF_SEL_DWN_CNT (LHL4362_VMUX_ASR_SEL_DWN_CNT + 1) | |
3747 | #define LHL4362_PFM_PWR_SLICE_DWN_CNT (LHL4362_VMUX_ASR_SEL_DWN_CNT + 1) | |
3748 | #define LHL4362_CSR_TRIM_ADJ_DWN_CNT (LHL4362_VMUX_ASR_SEL_DWN_CNT + 1) | |
3749 | #define LHL4362_CSR_VOLTAGE_DWN_CNT (LHL4362_VMUX_ASR_SEL_DWN_CNT + 1) | |
3750 | #define LHL4362_HPBG_PU_EN_DWN_CNT (LHL4362_CSR_MODE_DWN_CNT + 1) | |
3751 | ||
3752 | #define LHL4362_HPBG_PU_EN_UP_CNT (LHL4362_UP_CNT + 1) | |
3753 | #define LHL4362_CSR_ADJ_UP_CNT (LHL4362_HPBG_PU_EN_UP_CNT + 1) | |
3754 | #define LHL4362_CSR_MODE_UP_CNT (LHL4362_HPBG_PU_EN_UP_CNT + 1) | |
3755 | #define LHL4362_CSR_OVERI_DIS_UP_CNT (LHL4362_HPBG_PU_EN_UP_CNT + 1) | |
3756 | #define LHL4362_HPBG_CHOP_DIS_UP_CNT (LHL4362_HPBG_PU_EN_UP_CNT + 1) | |
3757 | #define LHL4362_SRBG_REF_SEL_UP_CNT (LHL4362_HPBG_PU_EN_UP_CNT + 1) | |
3758 | #define LHL4362_PFM_PWR_SLICE_UP_CNT (LHL4362_HPBG_PU_EN_UP_CNT + 1) | |
3759 | #define LHL4362_CSR_TRIM_ADJ_UP_CNT (LHL4362_HPBG_PU_EN_UP_CNT + 1) | |
3760 | #define LHL4362_CSR_VOLTAGE_UP_CNT (LHL4362_HPBG_PU_EN_UP_CNT + 1) | |
3761 | #define LHL4362_VMUX_ASR_SEL_UP_CNT (LHL4362_CSR_MODE_UP_CNT + 1) | |
3762 | #define LHL4362_VDDC_SW_DIS_UP_CNT (LHL4362_VMUX_ASR_SEL_UP_CNT + 1) | |
3763 | #define LHL4362_SLB_EN_UP_CNT (LHL4362_VDDC_SW_DIS_UP_CNT + 8) | |
3764 | #define LHL4362_ISO_EN_UP_CNT (LHL4362_SLB_EN_UP_CNT + 1) | |
3765 | #define LHL4362_PWRSW_EN_UP_CNT (LHL4362_ISO_EN_UP_CNT + 3) | |
3766 | #define LHL4362_ASR_ADJ_UP_CNT (LHL4362_PWRSW_EN_UP_CNT + 1) | |
3767 | #define LHL4362_ASR_CLK4M_DIS_UP_CNT (LHL4362_PWRSW_EN_UP_CNT + 1) | |
3768 | #define LHL4362_ASR_LPPFM_MODE_UP_CNT (LHL4362_PWRSW_EN_UP_CNT + 1) | |
3769 | #define LHL4362_ASR_MODE_SEL_UP_CNT (LHL4362_PWRSW_EN_UP_CNT + 1) | |
3770 | #define LHL4362_ASR_MANUAL_MODE_UP_CNT (LHL4362_PWRSW_EN_UP_CNT + 1) | |
3771 | #define LHL4362_ASR_OVERI_DIS_UP_CNT (LHL4362_PWRSW_EN_UP_CNT + 1) | |
3772 | #define LHL4362_ASR_TRIM_ADJ_UP_CNT (LHL4362_PWRSW_EN_UP_CNT + 1) | |
3773 | ||
3774 | /* 4378 LHL register settings */ | |
3775 | #define LHL4378_CSR_OVERI_DIS_DWN_CNT 5u | |
3776 | #define LHL4378_CSR_MODE_DWN_CNT 5u | |
3777 | #define LHL4378_CSR_ADJ_DWN_CNT 5u | |
3778 | ||
3779 | #define LHL4378_CSR_OVERI_DIS_UP_CNT 1u | |
3780 | #define LHL4378_CSR_MODE_UP_CNT 1u | |
3781 | #define LHL4378_CSR_ADJ_UP_CNT 1u | |
3782 | ||
3783 | #define LHL4378_VDDC_SW_DIS_DWN_CNT 3u | |
3784 | #define LHL4378_ASR_ADJ_DWN_CNT 3u | |
3785 | #define LHL4378_HPBG_CHOP_DIS_DWN_CNT 0 | |
3786 | ||
3787 | #define LHL4378_VDDC_SW_DIS_UP_CNT 3u | |
3788 | #define LHL4378_ASR_ADJ_UP_CNT 1u | |
3789 | #define LHL4378_HPBG_CHOP_DIS_UP_CNT 0 | |
3790 | ||
3791 | #define LHL4378_ASR_MANUAL_MODE_DWN_CNT 5u | |
3792 | #define LHL4378_ASR_MODE_SEL_DWN_CNT 5u | |
3793 | #define LHL4378_ASR_LPPFM_MODE_DWN_CNT 5u | |
3794 | #define LHL4378_ASR_CLK4M_DIS_DWN_CNT 0 | |
3795 | ||
3796 | #define LHL4378_ASR_MANUAL_MODE_UP_CNT 1u | |
3797 | #define LHL4378_ASR_MODE_SEL_UP_CNT 1u | |
3798 | #define LHL4378_ASR_LPPFM_MODE_UP_CNT 1u | |
3799 | #define LHL4378_ASR_CLK4M_DIS_UP_CNT 0 | |
3800 | ||
3801 | #define LHL4378_PFM_PWR_SLICE_DWN_CNT 5u | |
3802 | #define LHL4378_ASR_OVERI_DIS_DWN_CNT 5u | |
3803 | #define LHL4378_SRBG_REF_SEL_DWN_CNT 5u | |
3804 | #define LHL4378_HPBG_PU_EN_DWN_CNT 6u | |
3805 | ||
3806 | #define LHL4378_PFM_PWR_SLICE_UP_CNT 1u | |
3807 | #define LHL4378_ASR_OVERI_DIS_UP_CNT 1u | |
3808 | #define LHL4378_SRBG_REF_SEL_UP_CNT 1u | |
3809 | #define LHL4378_HPBG_PU_EN_UP_CNT 0 | |
3810 | ||
3811 | #define LHL4378_CSR_TRIM_ADJ_CNT_SHIFT (16u) | |
3812 | #define LHL4378_CSR_TRIM_ADJ_CNT_MASK (0x3Fu << LHL4378_CSR_TRIM_ADJ_CNT_SHIFT) | |
3813 | #define LHL4378_CSR_TRIM_ADJ_DWN_CNT 0 | |
3814 | #define LHL4378_CSR_TRIM_ADJ_UP_CNT 0 | |
3815 | ||
3816 | #define LHL4378_ASR_TRIM_ADJ_CNT_SHIFT (0u) | |
3817 | #define LHL4378_ASR_TRIM_ADJ_CNT_MASK (0x3Fu << LHL4378_ASR_TRIM_ADJ_CNT_SHIFT) | |
3818 | #define LHL4378_ASR_TRIM_ADJ_UP_CNT 0 | |
3819 | #define LHL4378_ASR_TRIM_ADJ_DWN_CNT 0 | |
3820 | ||
3821 | #define LHL4378_PWRSW_EN_DWN_CNT 0 | |
3822 | #define LHL4378_SLB_EN_DWN_CNT 2u | |
3823 | #define LHL4378_ISO_EN_DWN_CNT 1u | |
3824 | ||
3825 | #define LHL4378_VMUX_ASR_SEL_DWN_CNT 4u | |
3826 | ||
3827 | #define LHL4378_PWRSW_EN_UP_CNT 6u | |
3828 | #define LHL4378_SLB_EN_UP_CNT 4u | |
3829 | #define LHL4378_ISO_EN_UP_CNT 5u | |
3830 | ||
3831 | #define LHL4378_VMUX_ASR_SEL_UP_CNT 2u | |
3832 | ||
3833 | #define LHL4387_VMUX_ASR_SEL_DWN_CNT (8u) | |
3834 | #define LHL4387_VMUX_ASR_SEL_UP_CNT (0x14u) | |
3835 | ||
3836 | /* MacResourceReqTimer0/1 */ | |
3837 | #define MAC_RSRC_REQ_TIMER_INT_ENAB_SHIFT 24 | |
3838 | #define MAC_RSRC_REQ_TIMER_FORCE_ALP_SHIFT 26 | |
3839 | #define MAC_RSRC_REQ_TIMER_FORCE_HT_SHIFT 27 | |
3840 | #define MAC_RSRC_REQ_TIMER_FORCE_HQ_SHIFT 28 | |
3841 | #define MAC_RSRC_REQ_TIMER_CLKREQ_GRP_SEL_SHIFT 29 | |
3842 | ||
3843 | /* for pmu rev32 and higher */ | |
3844 | #define PMU32_MAC_MAIN_RSRC_REQ_TIMER ((1 << MAC_RSRC_REQ_TIMER_INT_ENAB_SHIFT) | \ | |
3845 | (1 << MAC_RSRC_REQ_TIMER_FORCE_ALP_SHIFT) | \ | |
3846 | (1 << MAC_RSRC_REQ_TIMER_FORCE_HT_SHIFT) | \ | |
3847 | (1 << MAC_RSRC_REQ_TIMER_FORCE_HQ_SHIFT) | \ | |
3848 | (0 << MAC_RSRC_REQ_TIMER_CLKREQ_GRP_SEL_SHIFT)) | |
3849 | ||
3850 | #define PMU32_MAC_AUX_RSRC_REQ_TIMER ((1 << MAC_RSRC_REQ_TIMER_INT_ENAB_SHIFT) | \ | |
3851 | (1 << MAC_RSRC_REQ_TIMER_FORCE_ALP_SHIFT) | \ | |
3852 | (1 << MAC_RSRC_REQ_TIMER_FORCE_HT_SHIFT) | \ | |
3853 | (1 << MAC_RSRC_REQ_TIMER_FORCE_HQ_SHIFT) | \ | |
3854 | (0 << MAC_RSRC_REQ_TIMER_CLKREQ_GRP_SEL_SHIFT)) | |
3855 | ||
3856 | /* for pmu rev38 and higher */ | |
3857 | #define PMU32_MAC_SCAN_RSRC_REQ_TIMER ((1u << MAC_RSRC_REQ_TIMER_INT_ENAB_SHIFT) | \ | |
3858 | (1u << MAC_RSRC_REQ_TIMER_FORCE_ALP_SHIFT) | \ | |
3859 | (1u << MAC_RSRC_REQ_TIMER_FORCE_HT_SHIFT) | \ | |
3860 | (1u << MAC_RSRC_REQ_TIMER_FORCE_HQ_SHIFT) | \ | |
3861 | (0u << MAC_RSRC_REQ_TIMER_CLKREQ_GRP_SEL_SHIFT)) | |
3862 | ||
3863 | /* 4369 related: 4369 parameters | |
3864 | * http://www.sj.broadcom.com/projects/BCM4369/gallery_backend.RC6.0/design/backplane/pmu_params.xls | |
3865 | */ | |
3866 | #define RES4369_DUMMY 0 | |
3867 | #define RES4369_ABUCK 1 | |
3868 | #define RES4369_PMU_SLEEP 2 | |
3869 | #define RES4369_MISCLDO_PU 3 | |
3870 | #define RES4369_LDO3P3_PU 4 | |
3871 | #define RES4369_FAST_LPO_AVAIL 5 | |
3872 | #define RES4369_XTAL_PU 6 | |
3873 | #define RES4369_XTAL_STABLE 7 | |
3874 | #define RES4369_PWRSW_DIG 8 | |
3875 | #define RES4369_SR_DIG 9 | |
3876 | #define RES4369_SLEEP_DIG 10 | |
3877 | #define RES4369_PWRSW_AUX 11 | |
3878 | #define RES4369_SR_AUX 12 | |
3879 | #define RES4369_SLEEP_AUX 13 | |
3880 | #define RES4369_PWRSW_MAIN 14 | |
3881 | #define RES4369_SR_MAIN 15 | |
3882 | #define RES4369_SLEEP_MAIN 16 | |
3883 | #define RES4369_DIG_CORE_RDY 17 | |
3884 | #define RES4369_CORE_RDY_AUX 18 | |
3885 | #define RES4369_ALP_AVAIL 19 | |
3886 | #define RES4369_RADIO_AUX_PU 20 | |
3887 | #define RES4369_MINIPMU_AUX_PU 21 | |
3888 | #define RES4369_CORE_RDY_MAIN 22 | |
3889 | #define RES4369_RADIO_MAIN_PU 23 | |
3890 | #define RES4369_MINIPMU_MAIN_PU 24 | |
3891 | #define RES4369_PCIE_EP_PU 25 | |
3892 | #define RES4369_COLD_START_WAIT 26 | |
3893 | #define RES4369_ARMHTAVAIL 27 | |
3894 | #define RES4369_HT_AVAIL 28 | |
3895 | #define RES4369_MACPHY_AUX_CLK_AVAIL 29 | |
3896 | #define RES4369_MACPHY_MAIN_CLK_AVAIL 30 | |
3897 | #define RES4369_RESERVED_31 31 | |
3898 | ||
3899 | #define CST4369_CHIPMODE_SDIOD(cs) (((cs) & (1 << 6)) != 0) /* SDIO */ | |
3900 | #define CST4369_CHIPMODE_PCIE(cs) (((cs) & (1 << 7)) != 0) /* PCIE */ | |
3901 | #define CST4369_SPROM_PRESENT 0x00000010 | |
3902 | ||
3903 | #define PMU_4369_MACCORE_0_RES_REQ_MASK 0x3FCBF7FF | |
3904 | #define PMU_4369_MACCORE_1_RES_REQ_MASK 0x7FFB3647 | |
3905 | ||
3906 | /* 4362 related */ | |
3907 | /* 4362 resource_table | |
3908 | * http://www.sj.broadcom.com/projects/BCM4362/gallery_backend.RC1.mar_15_2017/design/backplane/ | |
3909 | * pmu_params.xls | |
3910 | */ | |
3911 | #define RES4362_DUMMY (0u) | |
3912 | #define RES4362_ABUCK (1u) | |
3913 | #define RES4362_PMU_SLEEP (2u) | |
3914 | #define RES4362_MISCLDO_PU (3u) | |
3915 | #define RES4362_LDO3P3_PU (4u) | |
3916 | #define RES4362_FAST_LPO_AVAIL (5u) | |
3917 | #define RES4362_XTAL_PU (6u) | |
3918 | #define RES4362_XTAL_STABLE (7u) | |
3919 | #define RES4362_PWRSW_DIG (8u) | |
3920 | #define RES4362_SR_DIG (9u) | |
3921 | #define RES4362_SLEEP_DIG (10u) | |
3922 | #define RES4362_PWRSW_AUX (11u) | |
3923 | #define RES4362_SR_AUX (12u) | |
3924 | #define RES4362_SLEEP_AUX (13u) | |
3925 | #define RES4362_PWRSW_MAIN (14u) | |
3926 | #define RES4362_SR_MAIN (15u) | |
3927 | #define RES4362_SLEEP_MAIN (16u) | |
3928 | #define RES4362_DIG_CORE_RDY (17u) | |
3929 | #define RES4362_CORE_RDY_AUX (18u) | |
3930 | #define RES4362_ALP_AVAIL (19u) | |
3931 | #define RES4362_RADIO_AUX_PU (20u) | |
3932 | #define RES4362_MINIPMU_AUX_PU (21u) | |
3933 | #define RES4362_CORE_RDY_MAIN (22u) | |
3934 | #define RES4362_RADIO_MAIN_PU (23u) | |
3935 | #define RES4362_MINIPMU_MAIN_PU (24u) | |
3936 | #define RES4362_PCIE_EP_PU (25u) | |
3937 | #define RES4362_COLD_START_WAIT (26u) | |
3938 | #define RES4362_ARMHTAVAIL (27u) | |
3939 | #define RES4362_HT_AVAIL (28u) | |
3940 | #define RES4362_MACPHY_AUX_CLK_AVAIL (29u) | |
3941 | #define RES4362_MACPHY_MAIN_CLK_AVAIL (30u) | |
3942 | #define RES4362_RESERVED_31 (31u) | |
3943 | ||
3944 | #define CST4362_CHIPMODE_SDIOD(cs) (((cs) & (1 << 6)) != 0) /* SDIO */ | |
3945 | #define CST4362_CHIPMODE_PCIE(cs) (((cs) & (1 << 7)) != 0) /* PCIE */ | |
3946 | #define CST4362_SPROM_PRESENT (0x00000010u) | |
3947 | ||
3948 | #define PMU_4362_MACCORE_0_RES_REQ_MASK (0x3FCBF7FFu) | |
3949 | #define PMU_4362_MACCORE_1_RES_REQ_MASK (0x7FFB3647u) | |
3950 | ||
3951 | /* 4368 related */ | |
3952 | #define RES4368_ABUCK 0 | |
3953 | #define RES4368_CBUCK 1 | |
3954 | #define RES4368_MISCLDO_PU 2 | |
3955 | #define RES4368_VBOOST 3 | |
3956 | #define RES4368_LDO3P3_PU 4 | |
3957 | #define RES4368_FAST_LPO_AVAIL 5 | |
3958 | #define RES4368_XTAL_PU 6 | |
3959 | #define RES4368_XTAL_STABLE 7 | |
3960 | #define RES4368_PWRSW_DIG 8 | |
3961 | #define RES4368_SR_DIG 9 | |
3962 | #define RES4368_SPARE10 10 | |
3963 | #define RES4368_PWRSW_AUX 11 | |
3964 | #define RES4368_SR_AUX 12 | |
3965 | #define RES4368_SPARE2 13 | |
3966 | #define RES4368_PWRSW_MAIN 14 | |
3967 | #define RES4368_SR_MAIN 15 | |
3968 | #define RES4368_ARMPLL_PWRUP 16 | |
3969 | #define RES4368_CORE_RDY_DIG 17 | |
3970 | #define RES4368_CORE_RDY_AUX 18 | |
3971 | #define RES4368_ALP_AVAIL 19 | |
3972 | #define RES4368_RADIO_AUX_PU 20 | |
3973 | #define RES4368_MINIPMU_AUX_PU 21 | |
3974 | #define RES4368_CORE_RDY_MAIN 22 | |
3975 | #define RES4368_RADIO_MAIN_PU 23 | |
3976 | #define RES4368_MINIPMU_MAIN_PU 24 | |
3977 | #define RES4368_PWRSW_CB 25 | |
3978 | #define RES4368_CORE_RDY_CB 26 | |
3979 | #define RES4368_ARMHTAVAIL 27 | |
3980 | #define RES4368_HT_AVAIL 28 | |
3981 | #define RES4368_MACPHY_AUX_CLK_AVAIL 29 | |
3982 | #define RES4368_MACPHY_MAIN_CLK_AVAIL 30 | |
3983 | #define RES4368_RESERVED_31 31 | |
3984 | ||
3985 | #define PMU_MACCORE_0_RES_REQ_TIMER 0x1d000000 | |
3986 | #define PMU_MACCORE_0_RES_REQ_MASK 0x5FF2364F | |
3987 | ||
3988 | #define PMU43012_MAC_RES_REQ_TIMER 0x1D000000 | |
3989 | #define PMU43012_MAC_RES_REQ_MASK 0x3FBBF7FF | |
3990 | ||
3991 | #define PMU_MACCORE_1_RES_REQ_TIMER 0x1d000000 | |
3992 | #define PMU_MACCORE_1_RES_REQ_MASK 0x5FF2364F | |
3993 | ||
3994 | /* defines to detect active host interface in use */ | |
3995 | #define CHIP_HOSTIF_PCIEMODE 0x1 | |
3996 | #define CHIP_HOSTIF_USBMODE 0x2 | |
3997 | #define CHIP_HOSTIF_SDIOMODE 0x4 | |
3998 | #define CHIP_HOSTIF_PCIE(sih) (si_chip_hostif(sih) == CHIP_HOSTIF_PCIEMODE) | |
3999 | #define CHIP_HOSTIF_USB(sih) (si_chip_hostif(sih) == CHIP_HOSTIF_USBMODE) | |
4000 | #define CHIP_HOSTIF_SDIO(sih) (si_chip_hostif(sih) == CHIP_HOSTIF_SDIOMODE) | |
4001 | ||
4002 | #define PATCHTBL_SIZE (0x800) | |
4003 | #define CR4_4335_RAM_BASE (0x180000) | |
4004 | #define CR4_4345_LT_C0_RAM_BASE (0x1b0000) | |
4005 | #define CR4_4345_GE_C0_RAM_BASE (0x198000) | |
4006 | #define CR4_4349_RAM_BASE (0x180000) | |
4007 | #define CR4_4349_RAM_BASE_FROM_REV_9 (0x160000) | |
4008 | #define CR4_4350_RAM_BASE (0x180000) | |
4009 | #define CR4_4360_RAM_BASE (0x0) | |
4010 | #define CR4_43602_RAM_BASE (0x180000) | |
4011 | ||
4012 | #define CR4_4347_RAM_BASE (0x170000) | |
4013 | #define CR4_4362_RAM_BASE (0x170000) | |
4014 | #define CR4_4364_RAM_BASE (0x160000) | |
4015 | #define CR4_4369_RAM_BASE (0x170000) | |
4016 | #define CR4_4377_RAM_BASE (0x170000) | |
4017 | #define CR4_43751_RAM_BASE (0x170000) | |
4018 | #define CR4_43752_RAM_BASE (0x170000) | |
4019 | #define CR4_4376_RAM_BASE (0x352000) | |
4020 | #define CR4_4378_RAM_BASE (0x352000) | |
4021 | #define CR4_4387_RAM_BASE (0x740000) | |
4022 | #define CR4_4385_RAM_BASE (0x740000) | |
4023 | #define CA7_4368_RAM_BASE (0x200000) | |
4024 | #define CA7_4389_RAM_BASE (0x200000) | |
4025 | #define CA7_4385_RAM_BASE (0x200000) | |
4026 | ||
4027 | /* 43012 PMU resources based on pmu_params.xls - Start */ | |
4028 | #define RES43012_MEMLPLDO_PU 0 | |
4029 | #define RES43012_PMU_SLEEP 1 | |
4030 | #define RES43012_FAST_LPO 2 | |
4031 | #define RES43012_BTLPO_3P3 3 | |
4032 | #define RES43012_SR_POK 4 | |
4033 | #define RES43012_DUMMY_PWRSW 5 | |
4034 | #define RES43012_DUMMY_LDO3P3 6 | |
4035 | #define RES43012_DUMMY_BT_LDO3P3 7 | |
4036 | #define RES43012_DUMMY_RADIO 8 | |
4037 | #define RES43012_VDDB_VDDRET 9 | |
4038 | #define RES43012_HV_LDO3P3 10 | |
4039 | #define RES43012_OTP_PU 11 | |
4040 | #define RES43012_XTAL_PU 12 | |
4041 | #define RES43012_SR_CLK_START 13 | |
4042 | #define RES43012_XTAL_STABLE 14 | |
4043 | #define RES43012_FCBS 15 | |
4044 | #define RES43012_CBUCK_MODE 16 | |
4045 | #define RES43012_CORE_READY 17 | |
4046 | #define RES43012_ILP_REQ 18 | |
4047 | #define RES43012_ALP_AVAIL 19 | |
4048 | #define RES43012_RADIOLDO_1P8 20 | |
4049 | #define RES43012_MINI_PMU 21 | |
4050 | #define RES43012_UNUSED 22 | |
4051 | #define RES43012_SR_SAVE_RESTORE 23 | |
4052 | #define RES43012_PHY_PWRSW 24 | |
4053 | #define RES43012_VDDB_CLDO 25 | |
4054 | #define RES43012_SUBCORE_PWRSW 26 | |
4055 | #define RES43012_SR_SLEEP 27 | |
4056 | #define RES43012_HT_START 28 | |
4057 | #define RES43012_HT_AVAIL 29 | |
4058 | #define RES43012_MACPHY_CLK_AVAIL 30 | |
4059 | #define CST43012_SPROM_PRESENT 0x00000010 | |
4060 | ||
4061 | /* SR Control0 bits */ | |
4062 | #define SR0_43012_SR_ENG_EN_MASK 0x1 | |
4063 | #define SR0_43012_SR_ENG_EN_SHIFT 0 | |
4064 | #define SR0_43012_SR_ENG_CLK_EN (1 << 1) | |
4065 | #define SR0_43012_SR_RSRC_TRIGGER (0xC << 2) | |
4066 | #define SR0_43012_SR_WD_MEM_MIN_DIV (0x3 << 6) | |
4067 | #define SR0_43012_SR_MEM_STBY_ALLOW_MSK (1 << 16) | |
4068 | #define SR0_43012_SR_MEM_STBY_ALLOW_SHIFT 16 | |
4069 | #define SR0_43012_SR_ENABLE_ILP (1 << 17) | |
4070 | #define SR0_43012_SR_ENABLE_ALP (1 << 18) | |
4071 | #define SR0_43012_SR_ENABLE_HT (1 << 19) | |
4072 | #define SR0_43012_SR_ALLOW_PIC (3 << 20) | |
4073 | #define SR0_43012_SR_PMU_MEM_DISABLE (1 << 30) | |
4074 | #define CC_43012_VDDM_PWRSW_EN_MASK (1 << 20) | |
4075 | #define CC_43012_VDDM_PWRSW_EN_SHIFT (20) | |
4076 | #define CC_43012_SDIO_AOS_WAKEUP_MASK (1 << 24) | |
4077 | #define CC_43012_SDIO_AOS_WAKEUP_SHIFT (24) | |
4078 | ||
4079 | /* 43012 - offset at 5K */ | |
4080 | #define SR1_43012_SR_INIT_ADDR_MASK 0x3ff | |
4081 | #define SR1_43012_SR_ASM_ADDR 0xA | |
4082 | ||
4083 | /* PLL usage in 43012 */ | |
4084 | #define PMU43012_PLL0_PC0_NDIV_INT_MASK 0x0000003f | |
4085 | #define PMU43012_PLL0_PC0_NDIV_INT_SHIFT 0 | |
4086 | #define PMU43012_PLL0_PC0_NDIV_FRAC_MASK 0xfffffc00 | |
4087 | #define PMU43012_PLL0_PC0_NDIV_FRAC_SHIFT 10 | |
4088 | #define PMU43012_PLL0_PC3_PDIV_MASK 0x00003c00 | |
4089 | #define PMU43012_PLL0_PC3_PDIV_SHIFT 10 | |
4090 | #define PMU43012_PLL_NDIV_FRAC_BITS 20 | |
4091 | #define PMU43012_PLL_P_DIV_SCALE_BITS 10 | |
4092 | ||
4093 | #define CCTL_43012_ARM_OFFCOUNT_MASK 0x00000003 | |
4094 | #define CCTL_43012_ARM_OFFCOUNT_SHIFT 0 | |
4095 | #define CCTL_43012_ARM_ONCOUNT_MASK 0x0000000c | |
4096 | #define CCTL_43012_ARM_ONCOUNT_SHIFT 2 | |
4097 | ||
4098 | /* PMU Rev >= 30 */ | |
4099 | #define PMU30_ALPCLK_ONEMHZ_ENAB 0x80000000 | |
4100 | ||
4101 | /* 43012 PMU Chip Control Registers */ | |
4102 | #define PMUCCTL02_43012_SUBCORE_PWRSW_FORCE_ON 0x00000010 | |
4103 | #define PMUCCTL02_43012_PHY_PWRSW_FORCE_ON 0x00000040 | |
4104 | #define PMUCCTL02_43012_LHL_TIMER_SELECT 0x00000800 | |
4105 | #define PMUCCTL02_43012_RFLDO3P3_PU_FORCE_ON 0x00008000 | |
4106 | #define PMUCCTL02_43012_WL2CDIG_I_PMU_SLEEP_ENAB 0x00010000 | |
4107 | #define PMUCCTL02_43012_BTLDO3P3_PU_FORCE_OFF (1 << 12) | |
4108 | ||
4109 | #define PMUCCTL04_43012_BBPLL_ENABLE_PWRDN 0x00100000 | |
4110 | #define PMUCCTL04_43012_BBPLL_ENABLE_PWROFF 0x00200000 | |
4111 | #define PMUCCTL04_43012_FORCE_BBPLL_ARESET 0x00400000 | |
4112 | #define PMUCCTL04_43012_FORCE_BBPLL_DRESET 0x00800000 | |
4113 | #define PMUCCTL04_43012_FORCE_BBPLL_PWRDN 0x01000000 | |
4114 | #define PMUCCTL04_43012_FORCE_BBPLL_ISOONHIGH 0x02000000 | |
4115 | #define PMUCCTL04_43012_FORCE_BBPLL_PWROFF 0x04000000 | |
4116 | #define PMUCCTL04_43012_DISABLE_LQ_AVAIL 0x08000000 | |
4117 | #define PMUCCTL04_43012_DISABLE_HT_AVAIL 0x10000000 | |
4118 | #define PMUCCTL04_43012_USE_LOCK 0x20000000 | |
4119 | #define PMUCCTL04_43012_OPEN_LOOP_ENABLE 0x40000000 | |
4120 | #define PMUCCTL04_43012_FORCE_OPEN_LOOP 0x80000000 | |
4121 | #define PMUCCTL05_43012_DISABLE_SPM_CLK (1 << 8) | |
4122 | #define PMUCCTL05_43012_RADIO_DIG_CLK_GATING_EN (1 << 14) | |
4123 | #define PMUCCTL06_43012_GCI2RDIG_USE_ASYNCAPB (1 << 31) | |
4124 | #define PMUCCTL08_43012_XTAL_CORE_SIZE_PMOS_NORMAL_MASK 0x00000FC0 | |
4125 | #define PMUCCTL08_43012_XTAL_CORE_SIZE_PMOS_NORMAL_SHIFT 6 | |
4126 | #define PMUCCTL08_43012_XTAL_CORE_SIZE_NMOS_NORMAL_MASK 0x00FC0000 | |
4127 | #define PMUCCTL08_43012_XTAL_CORE_SIZE_NMOS_NORMAL_SHIFT 18 | |
4128 | #define PMUCCTL08_43012_XTAL_SEL_BIAS_RES_NORMAL_MASK 0x07000000 | |
4129 | #define PMUCCTL08_43012_XTAL_SEL_BIAS_RES_NORMAL_SHIFT 24 | |
4130 | #define PMUCCTL09_43012_XTAL_CORESIZE_BIAS_ADJ_NORMAL_MASK 0x0003F000 | |
4131 | #define PMUCCTL09_43012_XTAL_CORESIZE_BIAS_ADJ_NORMAL_SHIFT 12 | |
4132 | #define PMUCCTL09_43012_XTAL_CORESIZE_RES_BYPASS_NORMAL_MASK 0x00000038 | |
4133 | #define PMUCCTL09_43012_XTAL_CORESIZE_RES_BYPASS_NORMAL_SHIFT 3 | |
4134 | ||
4135 | #define PMUCCTL09_43012_XTAL_CORESIZE_BIAS_ADJ_STARTUP_MASK 0x00000FC0 | |
4136 | #define PMUCCTL09_43012_XTAL_CORESIZE_BIAS_ADJ_STARTUP_SHIFT 6 | |
4137 | /* during normal operation normal value is reduced for optimized power */ | |
4138 | #define PMUCCTL09_43012_XTAL_CORESIZE_BIAS_ADJ_STARTUP_VAL 0x1F | |
4139 | ||
4140 | #define PMUCCTL13_43012_FCBS_UP_TRIG_EN 0x00000400 | |
4141 | ||
4142 | #define PMUCCTL14_43012_ARMCM3_RESET_INITVAL 0x00000001 | |
4143 | #define PMUCCTL14_43012_DOT11MAC_CLKEN_INITVAL 0x00000020 | |
4144 | #define PMUCCTL14_43012_DOT11MAC_PHY_CLK_EN_INITVAL 0x00000080 | |
4145 | #define PMUCCTL14_43012_DOT11MAC_PHY_CNTL_EN_INITVAL 0x00000200 | |
4146 | #define PMUCCTL14_43012_SDIOD_RESET_INIVAL 0x00000400 | |
4147 | #define PMUCCTL14_43012_SDIO_CLK_DMN_RESET_INITVAL 0x00001000 | |
4148 | #define PMUCCTL14_43012_SOCRAM_CLKEN_INITVAL 0x00004000 | |
4149 | #define PMUCCTL14_43012_M2MDMA_RESET_INITVAL 0x00008000 | |
4150 | #define PMUCCTL14_43012_DISABLE_LQ_AVAIL 0x08000000 | |
4151 | ||
4152 | #define VREG6_43012_MEMLPLDO_ADJ_MASK 0x0000F000 | |
4153 | #define VREG6_43012_MEMLPLDO_ADJ_SHIFT 12 | |
4154 | ||
4155 | #define VREG6_43012_LPLDO_ADJ_MASK 0x000000F0 | |
4156 | #define VREG6_43012_LPLDO_ADJ_SHIFT 4 | |
4157 | ||
4158 | #define VREG7_43012_PWRSW_1P8_PU_MASK 0x00400000 | |
4159 | #define VREG7_43012_PWRSW_1P8_PU_SHIFT 22 | |
4160 | ||
4161 | /* 4378 PMU Chip Control Registers */ | |
4162 | #define PMUCCTL03_4378_XTAL_CORESIZE_PMOS_NORMAL_MASK 0x001F8000 | |
4163 | #define PMUCCTL03_4378_XTAL_CORESIZE_PMOS_NORMAL_SHIFT 15 | |
4164 | #define PMUCCTL03_4378_XTAL_CORESIZE_PMOS_NORMAL_VAL 0x3F | |
4165 | ||
4166 | #define PMUCCTL03_4378_XTAL_CORESIZE_NMOS_NORMAL_MASK 0x07E00000 | |
4167 | #define PMUCCTL03_4378_XTAL_CORESIZE_NMOS_NORMAL_SHIFT 21 | |
4168 | #define PMUCCTL03_4378_XTAL_CORESIZE_NMOS_NORMAL_VAL 0x3F | |
4169 | ||
4170 | #define PMUCCTL03_4378_XTAL_SEL_BIAS_RES_NORMAL_MASK 0x38000000 | |
4171 | #define PMUCCTL03_4378_XTAL_SEL_BIAS_RES_NORMAL_SHIFT 27 | |
4172 | #define PMUCCTL03_4378_XTAL_SEL_BIAS_RES_NORMAL_VAL 0x0 | |
4173 | ||
4174 | #define PMUCCTL00_4378_XTAL_CORESIZE_BIAS_ADJ_NORMAL_MASK 0x00000FC0 | |
4175 | #define PMUCCTL00_4378_XTAL_CORESIZE_BIAS_ADJ_NORMAL_SHIFT 6 | |
4176 | #define PMUCCTL00_4378_XTAL_CORESIZE_BIAS_ADJ_NORMAL_VAL 0x5 | |
4177 | ||
4178 | #define PMUCCTL00_4378_XTAL_RES_BYPASS_NORMAL_MASK 0x00038000 | |
4179 | #define PMUCCTL00_4378_XTAL_RES_BYPASS_NORMAL_SHIFT 15 | |
4180 | #define PMUCCTL00_4378_XTAL_RES_BYPASS_NORMAL_VAL 0x7 | |
4181 | ||
4182 | /* 4387 PMU Chip Control Registers */ | |
4183 | #define PMUCCTL03_4387_XTAL_CORESIZE_PMOS_NORMAL_MASK 0x001F8000 | |
4184 | #define PMUCCTL03_4387_XTAL_CORESIZE_PMOS_NORMAL_SHIFT 15 | |
4185 | #define PMUCCTL03_4387_XTAL_CORESIZE_PMOS_NORMAL_VAL 0x3F | |
4186 | ||
4187 | #define PMUCCTL03_4387_XTAL_CORESIZE_NMOS_NORMAL_MASK 0x07E00000 | |
4188 | #define PMUCCTL03_4387_XTAL_CORESIZE_NMOS_NORMAL_SHIFT 21 | |
4189 | #define PMUCCTL03_4387_XTAL_CORESIZE_NMOS_NORMAL_VAL 0x3F | |
4190 | ||
4191 | #define PMUCCTL03_4387_XTAL_SEL_BIAS_RES_NORMAL_MASK 0x38000000 | |
4192 | #define PMUCCTL03_4387_XTAL_SEL_BIAS_RES_NORMAL_SHIFT 27 | |
4193 | #define PMUCCTL03_4387_XTAL_SEL_BIAS_RES_NORMAL_VAL 0x0 | |
4194 | ||
4195 | #define PMUCCTL00_4387_XTAL_CORESIZE_BIAS_ADJ_NORMAL_MASK 0x00000FC0 | |
4196 | #define PMUCCTL00_4387_XTAL_CORESIZE_BIAS_ADJ_NORMAL_SHIFT 6 | |
4197 | #define PMUCCTL00_4387_XTAL_CORESIZE_BIAS_ADJ_NORMAL_VAL 0x5 | |
4198 | ||
4199 | #define PMUCCTL00_4387_XTAL_RES_BYPASS_NORMAL_MASK 0x00038000 | |
4200 | #define PMUCCTL00_4387_XTAL_RES_BYPASS_NORMAL_SHIFT 15 | |
4201 | #define PMUCCTL00_4387_XTAL_RES_BYPASS_NORMAL_VAL 0x7 | |
4202 | ||
4203 | /* GPIO pins */ | |
4204 | #define CC_PIN_GPIO_00 (0u) | |
4205 | #define CC_PIN_GPIO_01 (1u) | |
4206 | #define CC_PIN_GPIO_02 (2u) | |
4207 | #define CC_PIN_GPIO_03 (3u) | |
4208 | #define CC_PIN_GPIO_04 (4u) | |
4209 | #define CC_PIN_GPIO_05 (5u) | |
4210 | #define CC_PIN_GPIO_06 (6u) | |
4211 | #define CC_PIN_GPIO_07 (7u) | |
4212 | #define CC_PIN_GPIO_08 (8u) | |
4213 | #define CC_PIN_GPIO_09 (9u) | |
4214 | #define CC_PIN_GPIO_10 (10u) | |
4215 | #define CC_PIN_GPIO_11 (11u) | |
4216 | #define CC_PIN_GPIO_12 (12u) | |
4217 | #define CC_PIN_GPIO_13 (13u) | |
4218 | #define CC_PIN_GPIO_14 (14u) | |
4219 | #define CC_PIN_GPIO_15 (15u) | |
4220 | #define CC_PIN_GPIO_16 (16u) | |
4221 | #define CC_PIN_GPIO_17 (17u) | |
4222 | #define CC_PIN_GPIO_18 (18u) | |
4223 | #define CC_PIN_GPIO_19 (19u) | |
4224 | ||
4225 | /* Last GPIO Pad */ | |
4226 | #define CC_PIN_GPIO_LAST (31u) | |
4227 | ||
4228 | /* GCI chipcontrol register indices */ | |
4229 | #define CC_GCI_CHIPCTRL_00 (0) | |
4230 | #define CC_GCI_CHIPCTRL_01 (1) | |
4231 | #define CC_GCI_CHIPCTRL_02 (2) | |
4232 | #define CC_GCI_CHIPCTRL_03 (3) | |
4233 | #define CC_GCI_CHIPCTRL_04 (4) | |
4234 | #define CC_GCI_CHIPCTRL_05 (5) | |
4235 | #define CC_GCI_CHIPCTRL_06 (6) | |
4236 | #define CC_GCI_CHIPCTRL_07 (7) | |
4237 | #define CC_GCI_CHIPCTRL_08 (8) | |
4238 | #define CC_GCI_CHIPCTRL_09 (9) | |
4239 | #define CC_GCI_CHIPCTRL_10 (10) | |
4240 | #define CC_GCI_CHIPCTRL_10 (10) | |
4241 | #define CC_GCI_CHIPCTRL_11 (11) | |
4242 | #define CC_GCI_CHIPCTRL_12 (12) | |
4243 | #define CC_GCI_CHIPCTRL_13 (13) | |
4244 | #define CC_GCI_CHIPCTRL_14 (14) | |
4245 | #define CC_GCI_CHIPCTRL_15 (15) | |
4246 | #define CC_GCI_CHIPCTRL_16 (16) | |
4247 | #define CC_GCI_CHIPCTRL_17 (17) | |
4248 | #define CC_GCI_CHIPCTRL_18 (18) | |
4249 | #define CC_GCI_CHIPCTRL_19 (19) | |
4250 | #define CC_GCI_CHIPCTRL_20 (20) | |
4251 | #define CC_GCI_CHIPCTRL_21 (21) | |
4252 | #define CC_GCI_CHIPCTRL_22 (22) | |
4253 | #define CC_GCI_CHIPCTRL_23 (23) | |
4254 | #define CC_GCI_CHIPCTRL_24 (24) | |
4255 | #define CC_GCI_CHIPCTRL_25 (25) | |
4256 | #define CC_GCI_CHIPCTRL_26 (26) | |
4257 | #define CC_GCI_CHIPCTRL_27 (27) | |
4258 | #define CC_GCI_CHIPCTRL_28 (28) | |
4259 | ||
4260 | /* GCI chip ctrl SDTC Soft reset */ | |
4261 | #define GCI_CHIP_CTRL_SDTC_SOFT_RESET (1 << 31) | |
4262 | ||
4263 | #define CC_GCI_XTAL_BUFSTRG_NFC (0xff << 12) | |
4264 | ||
4265 | #define CC_GCI_04_SDIO_DRVSTR_SHIFT 15 | |
4266 | #define CC_GCI_04_SDIO_DRVSTR_MASK (0x0f << CC_GCI_04_SDIO_DRVSTR_SHIFT) /* 0x00078000 */ | |
4267 | #define CC_GCI_04_SDIO_DRVSTR_OVERRIDE_BIT (1 << 18) | |
4268 | #define CC_GCI_04_SDIO_DRVSTR_DEFAULT_MA 14 | |
4269 | #define CC_GCI_04_SDIO_DRVSTR_MIN_MA 2 | |
4270 | #define CC_GCI_04_SDIO_DRVSTR_MAX_MA 16 | |
4271 | ||
4272 | #define CC_GCI_04_4387C0_XTAL_PM_CLK (1u << 20u) | |
4273 | ||
4274 | #define CC_GCI_CHIPCTRL_07_BTDEFLO_ANT0_NBIT 2u | |
4275 | #define CC_GCI_CHIPCTRL_07_BTDEFLO_ANT0_MASK 0xFu | |
4276 | #define CC_GCI_CHIPCTRL_07_BTDEFHI_ANT0_NBIT 11u | |
4277 | #define CC_GCI_CHIPCTRL_07_BTDEFHI_ANT0_MASK 1u | |
4278 | ||
4279 | #define CC_GCI_CHIPCTRL_18_BTDEF_ANT0_NBIT 10u | |
4280 | #define CC_GCI_CHIPCTRL_18_BTDEF_ANT0_MASK 0x1Fu | |
4281 | #define CC_GCI_CHIPCTRL_18_BTDEFLO_ANT1_NBIT 15u | |
4282 | #define CC_GCI_CHIPCTRL_18_BTDEFLO_ANT1_MASK 1u | |
4283 | #define CC_GCI_CHIPCTRL_18_BTDEFHI_ANT1_NBIT 26u | |
4284 | #define CC_GCI_CHIPCTRL_18_BTDEFHI_ANT1_MASK 0x3Fu | |
4285 | ||
4286 | #define CC_GCI_CHIPCTRL_19_BTDEF_ANT1_NBIT 10u | |
4287 | #define CC_GCI_CHIPCTRL_19_BTDEF_ANT1_MASK 0x7u | |
4288 | ||
4289 | #define CC_GCI_CHIPCTRL_23_MAIN_WLSC_PRISEL_FORCE_NBIT 16u | |
4290 | #define CC_GCI_CHIPCTRL_23_MAIN_WLSC_PRISEL_VAL_NBIT 17u | |
4291 | #define CC_GCI_CHIPCTRL_23_AUX_WLSC_PRISEL_FORCE_NBIT 18u | |
4292 | #define CC_GCI_CHIPCTRL_23_AUX_WLSC_PRISEL_VAL_NBIT 19u | |
4293 | #define CC_GCI_CHIPCTRL_23_WLSC_BTSC_PRISEL_FORCE_NBIT 20u | |
4294 | #define CC_GCI_CHIPCTRL_23_WLSC_BTSC_PRISEL_VAL_NBIT 21u | |
4295 | #define CC_GCI_CHIPCTRL_23_WLSC_BTMAIN_PRISEL_FORCE_NBIT 22u | |
4296 | #define CC_GCI_CHIPCTRL_23_WLSC_BTMAIN_PRISEL_VAL_NBIT 23u | |
4297 | #define CC_GCI_CHIPCTRL_23_BTMAIN_BTSC_PRISEL_FORCE_NBIT 24u | |
4298 | #define CC_GCI_CHIPCTRL_23_BTMAIN_BTSC_PRISEL_VAL_NBIT 25u | |
4299 | ||
4300 | #define CC_GCI_CHIPCTRL_23_MAIN_WLSC_PRISEL_FORCE_MASK (1u <<\ | |
4301 | CC_GCI_CHIPCTRL_23_MAIN_WLSC_PRISEL_FORCE_NBIT) | |
4302 | #define CC_GCI_CHIPCTRL_23_MAIN_WLSC_PRISEL_VAL_MASK (1u <<\ | |
4303 | CC_GCI_CHIPCTRL_23_MAIN_WLSC_PRISEL_VAL_NBIT) | |
4304 | #define CC_GCI_CHIPCTRL_23_AUX_WLSC_PRISEL_FORCE_MASK (1u <<\ | |
4305 | CC_GCI_CHIPCTRL_23_AUX_WLSC_PRISEL_FORCE_NBIT) | |
4306 | #define CC_GCI_CHIPCTRL_23_AUX_WLSC_PRISEL_VAL_MASK (1u <<\ | |
4307 | CC_GCI_CHIPCTRL_23_AUX_WLSC_PRISEL_VAL_NBIT) | |
4308 | #define CC_GCI_CHIPCTRL_23_WLSC_BTSC_PRISEL_FORCE_MASK (1u <<\ | |
4309 | CC_GCI_CHIPCTRL_23_WLSC_BTSC_PRISEL_FORCE_NBIT) | |
4310 | #define CC_GCI_CHIPCTRL_23_WLSC_BTSC_PRISEL_VAL_MASK (1u <<\ | |
4311 | CC_GCI_CHIPCTRL_23_WLSC_BTSC_PRISEL_VAL_NBIT) | |
4312 | #define CC_GCI_CHIPCTRL_23_WLSC_BTMAIN_PRISEL_FORCE_MASK (1u <<\ | |
4313 | CC_GCI_CHIPCTRL_23_WLSC_BTMAIN_PRISEL_FORCE_NBIT) | |
4314 | #define CC_GCI_CHIPCTRL_23_WLSC_BTMAIN_PRISEL_VAL_MASK (1u <<\ | |
4315 | CC_GCI_CHIPCTRL_23_WLSC_BTMAIN_PRISEL_VAL_NBIT) | |
4316 | #define CC_GCI_CHIPCTRL_23_BTMAIN_BTSC_PRISEL_FORCE_MASK (1u <<\ | |
4317 | CC_GCI_CHIPCTRL_23_BTMAIN_BTSC_PRISEL_FORCE_NBIT) | |
4318 | #define CC_GCI_CHIPCTRL_23_BTMAIN_BTSC_PRISEL_VAL_MASK (1u <<\ | |
4319 | CC_GCI_CHIPCTRL_23_BTMAIN_BTSC_PRISEL_VAL_NBIT) | |
4320 | ||
4321 | /* 2G core0/core1 Pulse width register (offset : 0x47C) | |
4322 | * wl_rx_long_pulse_width_2g_core0 [4:0]; | |
4323 | * wl_rx_short_pulse_width_2g_core0 [9:5]; | |
4324 | * wl_rx_long_pulse_width_2g_core1 [20:16]; | |
4325 | * wl_rx_short_pulse_width_2g_core1 [25:21]; | |
4326 | */ | |
4327 | #define CC_GCI_CNCB_RESET_PULSE_WIDTH_2G_CORE1_NBIT (16u) | |
4328 | #define CC_GCI_CNCB_RESET_PULSE_WIDTH_2G_CORE0_MASK (0x1Fu) | |
4329 | #define CC_GCI_CNCB_RESET_PULSE_WIDTH_2G_CORE1_MASK (0x1Fu <<\ | |
4330 | CC_GCI_CNCB_RESET_PULSE_WIDTH_2G_CORE1_NBIT) | |
4331 | ||
4332 | #define CC_GCI_CNCB_SHORT_RESET_PULSE_WIDTH_2G_CORE0_NBIT (5u) | |
4333 | #define CC_GCI_CNCB_LONG_RESET_PULSE_WIDTH_2G_CORE1_NBIT (16u) | |
4334 | #define CC_GCI_CNCB_SHORT_RESET_PULSE_WIDTH_2G_CORE1_NBIT (21u) | |
4335 | ||
4336 | #define CC_GCI_CNCB_LONG_RESET_PULSE_WIDTH_2G_CORE0_MASK (0x1Fu) | |
4337 | #define CC_GCI_CNCB_LONG_RESET_PULSE_WIDTH_2G_CORE1_MASK (0x1Fu <<\ | |
4338 | CC_GCI_CNCB_LONG_RESET_PULSE_WIDTH_2G_CORE1_NBIT) | |
4339 | #define CC_GCI_CNCB_SHORT_RESET_PULSE_WIDTH_2G_CORE0_MASK (0x1Fu <<\ | |
4340 | CC_GCI_CNCB_SHORT_RESET_PULSE_WIDTH_2G_CORE0_NBIT) | |
4341 | #define CC_GCI_CNCB_SHORT_RESET_PULSE_WIDTH_2G_CORE1_MASK (0x1Fu <<\ | |
4342 | CC_GCI_CNCB_SHORT_RESET_PULSE_WIDTH_2G_CORE1_NBIT) | |
4343 | ||
4344 | /* 5G core0/Core1 (offset : 0x480) | |
4345 | * wl_rx_long_pulse_width_5g[4:0]; | |
4346 | * wl_rx_short_pulse_width_5g[9:5] | |
4347 | */ | |
4348 | ||
4349 | #define CC_GCI_CNCB_SHORT_RESET_PULSE_WIDTH_5G_NBIT (5u) | |
4350 | ||
4351 | #define CC_GCI_CNCB_LONG_RESET_PULSE_WIDTH_5G_MASK (0x1Fu) | |
4352 | #define CC_GCI_CNCB_SHORT_RESET_PULSE_WIDTH_5G_MASK (0x1Fu <<\ | |
4353 | CC_GCI_CNCB_SHORT_RESET_PULSE_WIDTH_5G_NBIT) | |
4354 | ||
4355 | #define CC_GCI_CNCB_GLITCH_FILTER_WIDTH_MASK (0xFFu) | |
4356 | ||
4357 | #define CC_GCI_06_JTAG_SEL_SHIFT 4 | |
4358 | #define CC_GCI_06_JTAG_SEL_MASK (1 << 4) | |
4359 | ||
4360 | #define CC_GCI_NUMCHIPCTRLREGS(cap1) ((cap1 & 0xF00) >> 8) | |
4361 | ||
4362 | #define CC_GCI_03_LPFLAGS_SFLASH_MASK (0xFFFFFF << 8) | |
4363 | #define CC_GCI_03_LPFLAGS_SFLASH_VAL (0xCCCCCC << 8) | |
4364 | ||
4365 | #define CC_GCI_13_INSUFF_TREFUP_FIX_SHIFT 31 | |
4366 | /* Note: For 4368 B0 onwards, the shift offset remains the same, | |
4367 | * but the Chip Common Ctrl GCI register is 16 | |
4368 | */ | |
4369 | #define CC_GCI_16_INSUFF_TREFUP_FIX_SHIFT 31u | |
4370 | ||
4371 | #define GPIO_CTRL_REG_DISABLE_INTERRUPT (3 << 9) | |
4372 | #define GPIO_CTRL_REG_COUNT 40 | |
4373 | ||
4374 | #define XTAL_HQ_SETTING_4387 (0xFFF94D30u) | |
4375 | #define XTAL_LQ_SETTING_4387 (0xFFF94380u) | |
4376 | ||
4377 | #define CC_GCI_16_BBPLL_CH_CTRL_GRP_PD_TRIG_1_MASK (0x00000200u) | |
4378 | #define CC_GCI_16_BBPLL_CH_CTRL_GRP_PD_TRIG_1_SHIFT (9u) | |
4379 | #define CC_GCI_16_BBPLL_CH_CTRL_GRP_PD_TRIG_24_3_MASK (0xFFFFFC00u) | |
4380 | #define CC_GCI_16_BBPLL_CH_CTRL_GRP_PD_TRIG_24_3_SHIFT (10u) | |
4381 | ||
4382 | #define CC_GCI_17_BBPLL_CH_CTRL_GRP_PD_TRIG_30_25_MASK (0x0000FC00u) | |
4383 | #define CC_GCI_17_BBPLL_CH_CTRL_GRP_PD_TRIG_30_25_SHIFT (10u) | |
4384 | #define CC_GCI_17_BBPLL_CH_CTRL_EN_MASK (0x04000000u) | |
4385 | ||
4386 | #define CC_GCI_20_BBPLL_CH_CTRL_GRP_MASK (0xFC000000u) | |
4387 | #define CC_GCI_20_BBPLL_CH_CTRL_GRP_SHIFT (26u) | |
4388 | ||
4389 | /* GCI Chip Ctrl Regs */ | |
4390 | #define GCI_CC28_IHRP_SEL_MASK (7 << 24) | |
4391 | #define GCI_CC28_IHRP_SEL_SHIFT (24u) | |
4392 | ||
4393 | /* 30=MACPHY_CLK_MAIN, 29=MACPHY_CLK_AUX, 23=RADIO_PU_MAIN, 22=CORE_RDY_MAIN | |
4394 | * 20=RADIO_PU_AUX, 18=CORE_RDY_AUX, 14=PWRSW_MAIN, 11=PWRSW_AUX | |
4395 | */ | |
4396 | #define GRP_PD_TRIGGER_MASK_4387 (0x60d44800u) | |
4397 | ||
4398 | /* power down ch0=MAIN/AUX PHY_clk, ch2=MAIN/AUX MAC_clk, ch5=RFFE_clk */ | |
4399 | #define GRP_PD_MASK_4387 (0x25u) | |
4400 | ||
4401 | #define CC_GCI_CHIPCTRL_11_2x2_ANT_MASK 0x03 | |
4402 | #define CC_GCI_CHIPCTRL_11_SHIFT_ANT_MASK 26 | |
4403 | ||
4404 | /* GCI chipstatus register indices */ | |
4405 | #define GCI_CHIPSTATUS_00 (0) | |
4406 | #define GCI_CHIPSTATUS_01 (1) | |
4407 | #define GCI_CHIPSTATUS_02 (2) | |
4408 | #define GCI_CHIPSTATUS_03 (3) | |
4409 | #define GCI_CHIPSTATUS_04 (4) | |
4410 | #define GCI_CHIPSTATUS_05 (5) | |
4411 | #define GCI_CHIPSTATUS_06 (6) | |
4412 | #define GCI_CHIPSTATUS_07 (7) | |
4413 | #define GCI_CHIPSTATUS_08 (8) | |
4414 | #define GCI_CHIPSTATUS_09 (9) | |
4415 | #define GCI_CHIPSTATUS_10 (10) | |
4416 | #define GCI_CHIPSTATUS_11 (11) | |
4417 | #define GCI_CHIPSTATUS_12 (12) | |
4418 | #define GCI_CHIPSTATUS_13 (13) | |
4419 | #define GCI_CHIPSTATUS_15 (15) | |
4420 | ||
4421 | /* 43021 GCI chipstatus registers */ | |
4422 | #define GCI43012_CHIPSTATUS_07_BBPLL_LOCK_MASK (1 << 3) | |
4423 | ||
4424 | /* GCI Core Control Reg */ | |
4425 | #define GCI_CORECTRL_SR_MASK (1 << 0) /**< SECI block Reset */ | |
4426 | #define GCI_CORECTRL_RSL_MASK (1 << 1) /**< ResetSECILogic */ | |
4427 | #define GCI_CORECTRL_ES_MASK (1 << 2) /**< EnableSECI */ | |
4428 | #define GCI_CORECTRL_FSL_MASK (1 << 3) /**< Force SECI Out Low */ | |
4429 | #define GCI_CORECTRL_SOM_MASK (7 << 4) /**< SECI Op Mode */ | |
4430 | #define GCI_CORECTRL_US_MASK (1 << 7) /**< Update SECI */ | |
4431 | #define GCI_CORECTRL_BOS_MASK (1 << 8) /**< Break On Sleep */ | |
4432 | #define GCI_CORECTRL_FORCEREGCLK_MASK (1 << 18) /* ForceRegClk */ | |
4433 | ||
4434 | /* 4378 & 4387 GCI AVS function */ | |
4435 | #define GCI6_AVS_ENAB 1u | |
4436 | #define GCI6_AVS_ENAB_SHIFT 31u | |
4437 | #define GCI6_AVS_ENAB_MASK (1u << GCI6_AVS_ENAB_SHIFT) | |
4438 | #define GCI6_AVS_CBUCK_VOLT_SHIFT 25u | |
4439 | #define GCI6_AVS_CBUCK_VOLT_MASK (0x1Fu << GCI6_AVS_CBUCK_VOLT_SHIFT) | |
4440 | ||
4441 | /* GCI GPIO for function sel GCI-0/GCI-1 */ | |
4442 | #define CC_GCI_GPIO_0 (0) | |
4443 | #define CC_GCI_GPIO_1 (1) | |
4444 | #define CC_GCI_GPIO_2 (2) | |
4445 | #define CC_GCI_GPIO_3 (3) | |
4446 | #define CC_GCI_GPIO_4 (4) | |
4447 | #define CC_GCI_GPIO_5 (5) | |
4448 | #define CC_GCI_GPIO_6 (6) | |
4449 | #define CC_GCI_GPIO_7 (7) | |
4450 | #define CC_GCI_GPIO_8 (8) | |
4451 | #define CC_GCI_GPIO_9 (9) | |
4452 | #define CC_GCI_GPIO_10 (10) | |
4453 | #define CC_GCI_GPIO_11 (11) | |
4454 | #define CC_GCI_GPIO_12 (12) | |
4455 | #define CC_GCI_GPIO_13 (13) | |
4456 | #define CC_GCI_GPIO_14 (14) | |
4457 | #define CC_GCI_GPIO_15 (15) | |
4458 | ||
4459 | /* indicates Invalid GPIO, e.g. when PAD GPIO doesn't map to GCI GPIO */ | |
4460 | #define CC_GCI_GPIO_INVALID 0xFF | |
4461 | ||
4462 | /* 4378 LHL GPIO configuration */ | |
4463 | #define LHL_IOCFG_P_ADDR_LHL_GPIO_DOUT_SEL_SHIFT (3u) | |
4464 | #define LHL_IOCFG_P_ADDR_LHL_GPIO_DOUT_SEL_MASK (1u << LHL_IOCFG_P_ADDR_LHL_GPIO_DOUT_SEL_SHIFT) | |
4465 | ||
4466 | /* 4378 LHL SPMI bit definitions */ | |
4467 | #define LHL_LP_CTL5_SPMI_DATA_SEL_SHIFT (8u) | |
4468 | #define LHL_LP_CTL5_SPMI_DATA_SEL_MASK (0x3u << LHL_LP_CTL5_SPMI_CLK_DATA_SHIFT) | |
4469 | #define LHL_LP_CTL5_SPMI_CLK_SEL_SHIFT (6u) | |
4470 | #define LHL_LP_CTL5_SPMI_CLK_SEL_MASK (0x3u << LHL_LP_CTL5_SPMI_CLK_SEL_SHIFT) | |
4471 | #define LHL_LP_CTL5_SPMI_CLK_DATA_GPIO0 (0u) | |
4472 | #define LHL_LP_CTL5_SPMI_CLK_DATA_GPIO1 (1u) | |
4473 | #define LHL_LP_CTL5_SPMI_CLK_DATA_GPIO2 (2u) | |
4474 | ||
4475 | /* Plese do not these following defines */ | |
4476 | /* find the 4 bit mask given the bit position */ | |
4477 | #define GCIMASK(pos) (((uint32)0xF) << pos) | |
4478 | /* get the value which can be used to directly OR with chipcontrol reg */ | |
4479 | #define GCIPOSVAL(val, pos) ((((uint32)val) << pos) & GCIMASK(pos)) | |
4480 | /* Extract nibble from a given position */ | |
4481 | #define GCIGETNBL(val, pos) ((val >> pos) & 0xF) | |
4482 | ||
4483 | /* find the 8 bit mask given the bit position */ | |
4484 | #define GCIMASK_8B(pos) (((uint32)0xFF) << pos) | |
4485 | /* get the value which can be used to directly OR with chipcontrol reg */ | |
4486 | #define GCIPOSVAL_8B(val, pos) ((((uint32)val) << pos) & GCIMASK_8B(pos)) | |
4487 | /* Extract nibble from a given position */ | |
4488 | #define GCIGETNBL_8B(val, pos) ((val >> pos) & 0xFF) | |
4489 | ||
4490 | /* find the 4 bit mask given the bit position */ | |
4491 | #define GCIMASK_4B(pos) (((uint32)0xF) << pos) | |
4492 | /* get the value which can be used to directly OR with chipcontrol reg */ | |
4493 | #define GCIPOSVAL_4B(val, pos) ((((uint32)val) << pos) & GCIMASK_4B(pos)) | |
4494 | /* Extract nibble from a given position */ | |
4495 | #define GCIGETNBL_4B(val, pos) ((val >> pos) & 0xF) | |
4496 | ||
4497 | /* GCI Intstatus(Mask)/WakeMask Register bits. */ | |
4498 | #define GCI_INTSTATUS_RBI (1 << 0) /**< Rx Break Interrupt */ | |
4499 | #define GCI_INTSTATUS_UB (1 << 1) /**< UART Break Interrupt */ | |
4500 | #define GCI_INTSTATUS_SPE (1 << 2) /**< SECI Parity Error Interrupt */ | |
4501 | #define GCI_INTSTATUS_SFE (1 << 3) /**< SECI Framing Error Interrupt */ | |
4502 | #define GCI_INTSTATUS_SRITI (1 << 9) /**< SECI Rx Idle Timer Interrupt */ | |
4503 | #define GCI_INTSTATUS_STFF (1 << 10) /**< SECI Tx FIFO Full Interrupt */ | |
4504 | #define GCI_INTSTATUS_STFAE (1 << 11) /**< SECI Tx FIFO Almost Empty Intr */ | |
4505 | #define GCI_INTSTATUS_SRFAF (1 << 12) /**< SECI Rx FIFO Almost Full */ | |
4506 | #define GCI_INTSTATUS_SRFNE (1 << 14) /**< SECI Rx FIFO Not Empty */ | |
4507 | #define GCI_INTSTATUS_SRFOF (1 << 15) /**< SECI Rx FIFO Not Empty Timeout */ | |
4508 | #define GCI_INTSTATUS_EVENT (1 << 21) /* GCI Event Interrupt */ | |
4509 | #define GCI_INTSTATUS_LEVELWAKE (1 << 22) /* GCI Wake Level Interrupt */ | |
4510 | #define GCI_INTSTATUS_EVENTWAKE (1 << 23) /* GCI Wake Event Interrupt */ | |
4511 | #define GCI_INTSTATUS_GPIOINT (1 << 25) /**< GCIGpioInt */ | |
4512 | #define GCI_INTSTATUS_GPIOWAKE (1 << 26) /**< GCIGpioWake */ | |
4513 | #define GCI_INTSTATUS_LHLWLWAKE (1 << 30) /* LHL WL wake */ | |
4514 | ||
4515 | /* GCI IntMask Register bits. */ | |
4516 | #define GCI_INTMASK_RBI (1 << 0) /**< Rx Break Interrupt */ | |
4517 | #define GCI_INTMASK_UB (1 << 1) /**< UART Break Interrupt */ | |
4518 | #define GCI_INTMASK_SPE (1 << 2) /**< SECI Parity Error Interrupt */ | |
4519 | #define GCI_INTMASK_SFE (1 << 3) /**< SECI Framing Error Interrupt */ | |
4520 | #define GCI_INTMASK_SRITI (1 << 9) /**< SECI Rx Idle Timer Interrupt */ | |
4521 | #define GCI_INTMASK_STFF (1 << 10) /**< SECI Tx FIFO Full Interrupt */ | |
4522 | #define GCI_INTMASK_STFAE (1 << 11) /**< SECI Tx FIFO Almost Empty Intr */ | |
4523 | #define GCI_INTMASK_SRFAF (1 << 12) /**< SECI Rx FIFO Almost Full */ | |
4524 | #define GCI_INTMASK_SRFNE (1 << 14) /**< SECI Rx FIFO Not Empty */ | |
4525 | #define GCI_INTMASK_SRFOF (1 << 15) /**< SECI Rx FIFO Not Empty Timeout */ | |
4526 | #define GCI_INTMASK_EVENT (1 << 21) /* GCI Event Interrupt */ | |
4527 | #define GCI_INTMASK_LEVELWAKE (1 << 22) /* GCI Wake Level Interrupt */ | |
4528 | #define GCI_INTMASK_EVENTWAKE (1 << 23) /* GCI Wake Event Interrupt */ | |
4529 | #define GCI_INTMASK_GPIOINT (1 << 25) /**< GCIGpioInt */ | |
4530 | #define GCI_INTMASK_GPIOWAKE (1 << 26) /**< GCIGpioWake */ | |
4531 | #define GCI_INTMASK_LHLWLWAKE (1 << 30) /* LHL WL wake */ | |
4532 | ||
4533 | /* GCI WakeMask Register bits. */ | |
4534 | #define GCI_WAKEMASK_RBI (1 << 0) /**< Rx Break Interrupt */ | |
4535 | #define GCI_WAKEMASK_UB (1 << 1) /**< UART Break Interrupt */ | |
4536 | #define GCI_WAKEMASK_SPE (1 << 2) /**< SECI Parity Error Interrupt */ | |
4537 | #define GCI_WAKEMASK_SFE (1 << 3) /**< SECI Framing Error Interrupt */ | |
4538 | #define GCI_WAKE_SRITI (1 << 9) /**< SECI Rx Idle Timer Interrupt */ | |
4539 | #define GCI_WAKEMASK_STFF (1 << 10) /**< SECI Tx FIFO Full Interrupt */ | |
4540 | #define GCI_WAKEMASK_STFAE (1 << 11) /**< SECI Tx FIFO Almost Empty Intr */ | |
4541 | #define GCI_WAKEMASK_SRFAF (1 << 12) /**< SECI Rx FIFO Almost Full */ | |
4542 | #define GCI_WAKEMASK_SRFNE (1 << 14) /**< SECI Rx FIFO Not Empty */ | |
4543 | #define GCI_WAKEMASK_SRFOF (1 << 15) /**< SECI Rx FIFO Not Empty Timeout */ | |
4544 | #define GCI_WAKEMASK_EVENT (1 << 21) /* GCI Event Interrupt */ | |
4545 | #define GCI_WAKEMASK_LEVELWAKE (1 << 22) /* GCI Wake Level Interrupt */ | |
4546 | #define GCI_WAKEMASK_EVENTWAKE (1 << 23) /* GCI Wake Event Interrupt */ | |
4547 | #define GCI_WAKEMASK_GPIOINT (1 << 25) /**< GCIGpioInt */ | |
4548 | #define GCI_WAKEMASK_GPIOWAKE (1 << 26) /**< GCIGpioWake */ | |
4549 | #define GCI_WAKEMASK_LHLWLWAKE (1 << 30) /* LHL WL wake */ | |
4550 | ||
4551 | #define GCI_WAKE_ON_GCI_GPIO1 1 | |
4552 | #define GCI_WAKE_ON_GCI_GPIO2 2 | |
4553 | #define GCI_WAKE_ON_GCI_GPIO3 3 | |
4554 | #define GCI_WAKE_ON_GCI_GPIO4 4 | |
4555 | #define GCI_WAKE_ON_GCI_GPIO5 5 | |
4556 | #define GCI_WAKE_ON_GCI_GPIO6 6 | |
4557 | #define GCI_WAKE_ON_GCI_GPIO7 7 | |
4558 | #define GCI_WAKE_ON_GCI_GPIO8 8 | |
4559 | #define GCI_WAKE_ON_GCI_SECI_IN 9 | |
4560 | ||
4561 | #define PMU_EXT_WAKE_MASK_0_SDIO (1u << 2u) | |
4562 | #define PMU_EXT_WAKE_MASK_0_PCIE_PERST (1u << 5u) | |
4563 | ||
4564 | #define PMU_4362_EXT_WAKE_MASK_0_SDIO (1u << 1u | 1u << 2u) | |
4565 | ||
4566 | /* =========== LHL regs =========== */ | |
4567 | #define LHL_PWRSEQCTL_SLEEP_EN (1 << 0) | |
4568 | #define LHL_PWRSEQCTL_PMU_SLEEP_MODE (1 << 1) | |
4569 | #define LHL_PWRSEQCTL_PMU_FINAL_PMU_SLEEP_EN (1 << 2) | |
4570 | #define LHL_PWRSEQCTL_PMU_TOP_ISO_EN (1 << 3) | |
4571 | #define LHL_PWRSEQCTL_PMU_TOP_SLB_EN (1 << 4) | |
4572 | #define LHL_PWRSEQCTL_PMU_TOP_PWRSW_EN (1 << 5) | |
4573 | #define LHL_PWRSEQCTL_PMU_CLDO_PD (1 << 6) | |
4574 | #define LHL_PWRSEQCTL_PMU_LPLDO_PD (1 << 7) | |
4575 | #define LHL_PWRSEQCTL_PMU_RSRC6_EN (1 << 8) | |
4576 | ||
4577 | #define PMU_SLEEP_MODE_0 (LHL_PWRSEQCTL_SLEEP_EN |\ | |
4578 | LHL_PWRSEQCTL_PMU_FINAL_PMU_SLEEP_EN) | |
4579 | ||
4580 | #define PMU_SLEEP_MODE_1 (LHL_PWRSEQCTL_SLEEP_EN |\ | |
4581 | LHL_PWRSEQCTL_PMU_SLEEP_MODE |\ | |
4582 | LHL_PWRSEQCTL_PMU_FINAL_PMU_SLEEP_EN |\ | |
4583 | LHL_PWRSEQCTL_PMU_TOP_ISO_EN |\ | |
4584 | LHL_PWRSEQCTL_PMU_TOP_SLB_EN |\ | |
4585 | LHL_PWRSEQCTL_PMU_TOP_PWRSW_EN |\ | |
4586 | LHL_PWRSEQCTL_PMU_CLDO_PD |\ | |
4587 | LHL_PWRSEQCTL_PMU_RSRC6_EN) | |
4588 | ||
4589 | #define PMU_SLEEP_MODE_2 (LHL_PWRSEQCTL_SLEEP_EN |\ | |
4590 | LHL_PWRSEQCTL_PMU_SLEEP_MODE |\ | |
4591 | LHL_PWRSEQCTL_PMU_FINAL_PMU_SLEEP_EN |\ | |
4592 | LHL_PWRSEQCTL_PMU_TOP_ISO_EN |\ | |
4593 | LHL_PWRSEQCTL_PMU_TOP_SLB_EN |\ | |
4594 | LHL_PWRSEQCTL_PMU_TOP_PWRSW_EN |\ | |
4595 | LHL_PWRSEQCTL_PMU_CLDO_PD |\ | |
4596 | LHL_PWRSEQCTL_PMU_LPLDO_PD |\ | |
4597 | LHL_PWRSEQCTL_PMU_RSRC6_EN) | |
4598 | ||
4599 | #define LHL_PWRSEQ_CTL (0x000000ff) | |
4600 | ||
4601 | /* LHL Top Level Power Up Control Register (lhl_top_pwrup_ctl_adr, Offset 0xE78) | |
4602 | * Top Level Counter values for isolation, retention, Power Switch control | |
4603 | */ | |
4604 | #define LHL_PWRUP_ISOLATION_CNT (0x6 << 8) | |
4605 | #define LHL_PWRUP_RETENTION_CNT (0x5 << 16) | |
4606 | #define LHL_PWRUP_PWRSW_CNT (0x7 << 24) | |
4607 | /* Mask is taken only for isolation 8:13 , Retention 16:21 , | |
4608 | * Power Switch control 24:29 | |
4609 | */ | |
4610 | #define LHL_PWRUP_CTL_MASK (0x3F3F3F00) | |
4611 | #define LHL_PWRUP_CTL (LHL_PWRUP_ISOLATION_CNT |\ | |
4612 | LHL_PWRUP_RETENTION_CNT |\ | |
4613 | LHL_PWRUP_PWRSW_CNT) | |
4614 | ||
4615 | #define LHL_PWRUP2_CLDO_DN_CNT (0x0) | |
4616 | #define LHL_PWRUP2_LPLDO_DN_CNT (0x0 << 8) | |
4617 | #define LHL_PWRUP2_RSRC6_DN_CN (0x4 << 16) | |
4618 | #define LHL_PWRUP2_RSRC7_DN_CN (0x0 << 24) | |
4619 | #define LHL_PWRUP2_CTL_MASK (0x3F3F3F3F) | |
4620 | #define LHL_PWRUP2_CTL (LHL_PWRUP2_CLDO_DN_CNT |\ | |
4621 | LHL_PWRUP2_LPLDO_DN_CNT |\ | |
4622 | LHL_PWRUP2_RSRC6_DN_CN |\ | |
4623 | LHL_PWRUP2_RSRC7_DN_CN) | |
4624 | ||
4625 | /* LHL Top Level Power Down Control Register (lhl_top_pwrdn_ctl_adr, Offset 0xE74) */ | |
4626 | #define LHL_PWRDN_SLEEP_CNT (0x4) | |
4627 | #define LHL_PWRDN_CTL_MASK (0x3F) | |
4628 | ||
4629 | /* LHL Top Level Power Down Control 2 Register (lhl_top_pwrdn2_ctl_adr, Offset 0xE80) */ | |
4630 | #define LHL_PWRDN2_CLDO_DN_CNT (0x4) | |
4631 | #define LHL_PWRDN2_LPLDO_DN_CNT (0x4 << 8) | |
4632 | #define LHL_PWRDN2_RSRC6_DN_CN (0x3 << 16) | |
4633 | #define LHL_PWRDN2_RSRC7_DN_CN (0x0 << 24) | |
4634 | #define LHL_PWRDN2_CTL (LHL_PWRDN2_CLDO_DN_CNT |\ | |
4635 | LHL_PWRDN2_LPLDO_DN_CNT |\ | |
4636 | LHL_PWRDN2_RSRC6_DN_CN |\ | |
4637 | LHL_PWRDN2_RSRC7_DN_CN) | |
4638 | #define LHL_PWRDN2_CTL_MASK (0x3F3F3F3F) | |
4639 | ||
4640 | #define LHL_FAST_WRITE_EN (1 << 14) | |
4641 | ||
4642 | #define LHL_WL_MACTIMER_MASK 0xFFFFFFFF | |
4643 | ||
4644 | /* WL ARM Timer0 Interrupt Mask (lhl_wl_armtim0_intrp_adr) */ | |
4645 | #define LHL_WL_ARMTIM0_INTRP_EN 0x00000001 | |
4646 | #define LHL_WL_ARMTIM0_INTRP_EDGE_TRIGGER 0x00000002 | |
4647 | ||
4648 | /* WL ARM Timer0 Interrupt Status (lhl_wl_armtim0_st_adr) */ | |
4649 | #define LHL_WL_ARMTIM0_ST_WL_ARMTIM_INT_ST 0x00000001 | |
4650 | ||
4651 | /* WL MAC TimerX Interrupt Mask (lhl_wl_mactimX_intrp_adr) */ | |
4652 | #define LHL_WL_MACTIM_INTRP_EN 0x00000001 | |
4653 | #define LHL_WL_MACTIM_INTRP_EDGE_TRIGGER 0x00000002 | |
4654 | ||
4655 | /* WL MAC TimerX Interrupt Status (lhl_wl_mactimX_st_adr) */ | |
4656 | #define LHL_WL_MACTIM_ST_WL_MACTIM_INT_ST 0x00000001 | |
4657 | ||
4658 | /* LHL Wakeup Status (lhl_wkup_status_adr) */ | |
4659 | #define LHL_WKUP_STATUS_WR_PENDING_ARMTIM0 0x00100000 | |
4660 | ||
4661 | #define LHL_PS_MODE_0 0 | |
4662 | #define LHL_PS_MODE_1 1 | |
4663 | ||
4664 | /* GCI EventIntMask Register SW bits */ | |
4665 | #define GCI_MAILBOXDATA_TOWLAN (1 << 0) | |
4666 | #define GCI_MAILBOXDATA_TOBT (1 << 1) | |
4667 | #define GCI_MAILBOXDATA_TONFC (1 << 2) | |
4668 | #define GCI_MAILBOXDATA_TOGPS (1 << 3) | |
4669 | #define GCI_MAILBOXDATA_TOLTE (1 << 4) | |
4670 | #define GCI_MAILBOXACK_TOWLAN (1 << 8) | |
4671 | #define GCI_MAILBOXACK_TOBT (1 << 9) | |
4672 | #define GCI_MAILBOXACK_TONFC (1 << 10) | |
4673 | #define GCI_MAILBOXACK_TOGPS (1 << 11) | |
4674 | #define GCI_MAILBOXACK_TOLTE (1 << 12) | |
4675 | #define GCI_WAKE_TOWLAN (1 << 16) | |
4676 | #define GCI_WAKE_TOBT (1 << 17) | |
4677 | #define GCI_WAKE_TONFC (1 << 18) | |
4678 | #define GCI_WAKE_TOGPS (1 << 19) | |
4679 | #define GCI_WAKE_TOLTE (1 << 20) | |
4680 | #define GCI_SWREADY (1 << 24) | |
4681 | ||
4682 | /* GCI SECI_OUT TX Status Regiser bits */ | |
4683 | #define GCI_SECIOUT_TXSTATUS_TXHALT (1 << 0) | |
4684 | #define GCI_SECIOUT_TXSTATUS_TI (1 << 16) | |
4685 | ||
4686 | /* 43012 MUX options */ | |
4687 | #define MUXENAB43012_HOSTWAKE_MASK (0x00000001) | |
4688 | #define MUXENAB43012_GETIX(val, name) (val - 1) | |
4689 | ||
4690 | /* | |
4691 | * Maximum delay for the PMU state transition in us. | |
4692 | * This is an upper bound intended for spinwaits etc. | |
4693 | */ | |
4694 | #define PMU_MAX_TRANSITION_DLY 15000 | |
4695 | ||
4696 | /* PMU resource up transition time in ILP cycles */ | |
4697 | #define PMURES_UP_TRANSITION 2 | |
4698 | ||
4699 | /* SECI Status (0x134) & Mask (0x138) bits - Rev 35 */ | |
4700 | #define SECI_STAT_BI (1 << 0) /* Break Interrupt */ | |
4701 | #define SECI_STAT_SPE (1 << 1) /* Parity Error */ | |
4702 | #define SECI_STAT_SFE (1 << 2) /* Parity Error */ | |
4703 | #define SECI_STAT_SDU (1 << 3) /* Data Updated */ | |
4704 | #define SECI_STAT_SADU (1 << 4) /* Auxiliary Data Updated */ | |
4705 | #define SECI_STAT_SAS (1 << 6) /* AUX State */ | |
4706 | #define SECI_STAT_SAS2 (1 << 7) /* AUX2 State */ | |
4707 | #define SECI_STAT_SRITI (1 << 8) /* Idle Timer Interrupt */ | |
4708 | #define SECI_STAT_STFF (1 << 9) /* Tx FIFO Full */ | |
4709 | #define SECI_STAT_STFAE (1 << 10) /* Tx FIFO Almost Empty */ | |
4710 | #define SECI_STAT_SRFE (1 << 11) /* Rx FIFO Empty */ | |
4711 | #define SECI_STAT_SRFAF (1 << 12) /* Rx FIFO Almost Full */ | |
4712 | #define SECI_STAT_SFCE (1 << 13) /* Flow Control Event */ | |
4713 | ||
4714 | /* SECI configuration */ | |
4715 | #define SECI_MODE_UART 0x0 | |
4716 | #define SECI_MODE_SECI 0x1 | |
4717 | #define SECI_MODE_LEGACY_3WIRE_BT 0x2 | |
4718 | #define SECI_MODE_LEGACY_3WIRE_WLAN 0x3 | |
4719 | #define SECI_MODE_HALF_SECI 0x4 | |
4720 | ||
4721 | #define SECI_RESET (1 << 0) | |
4722 | #define SECI_RESET_BAR_UART (1 << 1) | |
4723 | #define SECI_ENAB_SECI_ECI (1 << 2) | |
4724 | #define SECI_ENAB_SECIOUT_DIS (1 << 3) | |
4725 | #define SECI_MODE_MASK 0x7 | |
4726 | #define SECI_MODE_SHIFT 4 /* (bits 5, 6, 7) */ | |
4727 | #define SECI_UPD_SECI (1 << 7) | |
4728 | ||
4729 | #define SECI_AUX_TX_START (1 << 31) | |
4730 | #define SECI_SLIP_ESC_CHAR 0xDB | |
4731 | #define SECI_SIGNOFF_0 SECI_SLIP_ESC_CHAR | |
4732 | #define SECI_SIGNOFF_1 0 | |
4733 | #define SECI_REFRESH_REQ 0xDA | |
4734 | ||
4735 | /* seci clk_ctl_st bits */ | |
4736 | #define CLKCTL_STS_HT_AVAIL_REQ (1 << 4) | |
4737 | #define CLKCTL_STS_SECI_CLK_REQ (1 << 8) | |
4738 | #define CLKCTL_STS_SECI_CLK_AVAIL (1 << 24) | |
4739 | ||
4740 | #define SECI_UART_MSR_CTS_STATE (1 << 0) | |
4741 | #define SECI_UART_MSR_RTS_STATE (1 << 1) | |
4742 | #define SECI_UART_SECI_IN_STATE (1 << 2) | |
4743 | #define SECI_UART_SECI_IN2_STATE (1 << 3) | |
4744 | ||
4745 | /* GCI RX FIFO Control Register */ | |
4746 | #define GCI_RXF_LVL_MASK (0xFF << 0) | |
4747 | #define GCI_RXF_TIMEOUT_MASK (0xFF << 8) | |
4748 | ||
4749 | /* GCI UART Registers' Bit definitions */ | |
4750 | /* Seci Fifo Level Register */ | |
4751 | #define SECI_TXF_LVL_MASK (0x3F << 8) | |
4752 | #define TXF_AE_LVL_DEFAULT 0x4 | |
4753 | #define SECI_RXF_LVL_FC_MASK (0x3F << 16) | |
4754 | ||
4755 | /* SeciUARTFCR Bit definitions */ | |
4756 | #define SECI_UART_FCR_RFR (1 << 0) | |
4757 | #define SECI_UART_FCR_TFR (1 << 1) | |
4758 | #define SECI_UART_FCR_SR (1 << 2) | |
4759 | #define SECI_UART_FCR_THP (1 << 3) | |
4760 | #define SECI_UART_FCR_AB (1 << 4) | |
4761 | #define SECI_UART_FCR_ATOE (1 << 5) | |
4762 | #define SECI_UART_FCR_ARTSOE (1 << 6) | |
4763 | #define SECI_UART_FCR_ABV (1 << 7) | |
4764 | #define SECI_UART_FCR_ALM (1 << 8) | |
4765 | ||
4766 | /* SECI UART LCR register bits */ | |
4767 | #define SECI_UART_LCR_STOP_BITS (1 << 0) /* 0 - 1bit, 1 - 2bits */ | |
4768 | #define SECI_UART_LCR_PARITY_EN (1 << 1) | |
4769 | #define SECI_UART_LCR_PARITY (1 << 2) /* 0 - odd, 1 - even */ | |
4770 | #define SECI_UART_LCR_RX_EN (1 << 3) | |
4771 | #define SECI_UART_LCR_LBRK_CTRL (1 << 4) /* 1 => SECI_OUT held low */ | |
4772 | #define SECI_UART_LCR_TXO_EN (1 << 5) | |
4773 | #define SECI_UART_LCR_RTSO_EN (1 << 6) | |
4774 | #define SECI_UART_LCR_SLIPMODE_EN (1 << 7) | |
4775 | #define SECI_UART_LCR_RXCRC_CHK (1 << 8) | |
4776 | #define SECI_UART_LCR_TXCRC_INV (1 << 9) | |
4777 | #define SECI_UART_LCR_TXCRC_LSBF (1 << 10) | |
4778 | #define SECI_UART_LCR_TXCRC_EN (1 << 11) | |
4779 | #define SECI_UART_LCR_RXSYNC_EN (1 << 12) | |
4780 | ||
4781 | #define SECI_UART_MCR_TX_EN (1 << 0) | |
4782 | #define SECI_UART_MCR_PRTS (1 << 1) | |
4783 | #define SECI_UART_MCR_SWFLCTRL_EN (1 << 2) | |
4784 | #define SECI_UART_MCR_HIGHRATE_EN (1 << 3) | |
4785 | #define SECI_UART_MCR_LOOPBK_EN (1 << 4) | |
4786 | #define SECI_UART_MCR_AUTO_RTS (1 << 5) | |
4787 | #define SECI_UART_MCR_AUTO_TX_DIS (1 << 6) | |
4788 | #define SECI_UART_MCR_BAUD_ADJ_EN (1 << 7) | |
4789 | #define SECI_UART_MCR_XONOFF_RPT (1 << 9) | |
4790 | ||
4791 | /* SeciUARTLSR Bit Mask */ | |
4792 | #define SECI_UART_LSR_RXOVR_MASK (1 << 0) | |
4793 | #define SECI_UART_LSR_RFF_MASK (1 << 1) | |
4794 | #define SECI_UART_LSR_TFNE_MASK (1 << 2) | |
4795 | #define SECI_UART_LSR_TI_MASK (1 << 3) | |
4796 | #define SECI_UART_LSR_TPR_MASK (1 << 4) | |
4797 | #define SECI_UART_LSR_TXHALT_MASK (1 << 5) | |
4798 | ||
4799 | /* SeciUARTMSR Bit Mask */ | |
4800 | #define SECI_UART_MSR_CTSS_MASK (1 << 0) | |
4801 | #define SECI_UART_MSR_RTSS_MASK (1 << 1) | |
4802 | #define SECI_UART_MSR_SIS_MASK (1 << 2) | |
4803 | #define SECI_UART_MSR_SIS2_MASK (1 << 3) | |
4804 | ||
4805 | /* SeciUARTData Bits */ | |
4806 | #define SECI_UART_DATA_RF_NOT_EMPTY_BIT (1 << 12) | |
4807 | #define SECI_UART_DATA_RF_FULL_BIT (1 << 13) | |
4808 | #define SECI_UART_DATA_RF_OVRFLOW_BIT (1 << 14) | |
4809 | #define SECI_UART_DATA_FIFO_PTR_MASK 0xFF | |
4810 | #define SECI_UART_DATA_RF_RD_PTR_SHIFT 16 | |
4811 | #define SECI_UART_DATA_RF_WR_PTR_SHIFT 24 | |
4812 | ||
4813 | /* LTECX: ltecxmux */ | |
4814 | #define LTECX_EXTRACT_MUX(val, idx) (getbit4(&(val), (idx))) | |
4815 | ||
4816 | /* LTECX: ltecxmux MODE */ | |
4817 | #define LTECX_MUX_MODE_IDX 0 | |
4818 | #define LTECX_MUX_MODE_WCI2 0x0 | |
4819 | #define LTECX_MUX_MODE_GPIO 0x1 | |
4820 | ||
4821 | /* LTECX GPIO Information Index */ | |
4822 | #define LTECX_NVRAM_FSYNC_IDX 0 | |
4823 | #define LTECX_NVRAM_LTERX_IDX 1 | |
4824 | #define LTECX_NVRAM_LTETX_IDX 2 | |
4825 | #define LTECX_NVRAM_WLPRIO_IDX 3 | |
4826 | ||
4827 | /* LTECX WCI2 Information Index */ | |
4828 | #define LTECX_NVRAM_WCI2IN_IDX 0 | |
4829 | #define LTECX_NVRAM_WCI2OUT_IDX 1 | |
4830 | ||
4831 | /* LTECX: Macros to get GPIO/FNSEL/GCIGPIO */ | |
4832 | #define LTECX_EXTRACT_PADNUM(val, idx) (getbit8(&(val), (idx))) | |
4833 | #define LTECX_EXTRACT_FNSEL(val, idx) (getbit4(&(val), (idx))) | |
4834 | #define LTECX_EXTRACT_GCIGPIO(val, idx) (getbit4(&(val), (idx))) | |
4835 | ||
4836 | /* WLAN channel numbers - used from wifi.h */ | |
4837 | ||
4838 | /* WLAN BW */ | |
4839 | #define ECI_BW_20 0x0 | |
4840 | #define ECI_BW_25 0x1 | |
4841 | #define ECI_BW_30 0x2 | |
4842 | #define ECI_BW_35 0x3 | |
4843 | #define ECI_BW_40 0x4 | |
4844 | #define ECI_BW_45 0x5 | |
4845 | #define ECI_BW_50 0x6 | |
4846 | #define ECI_BW_ALL 0x7 | |
4847 | ||
4848 | /* WLAN - number of antenna */ | |
4849 | #define WLAN_NUM_ANT1 TXANT_0 | |
4850 | #define WLAN_NUM_ANT2 TXANT_1 | |
4851 | ||
4852 | /* otpctrl1 0xF4 */ | |
4853 | #define OTPC_FORCE_PWR_OFF 0x02000000 | |
4854 | /* chipcommon s/r registers introduced with cc rev >= 48 */ | |
4855 | #define CC_SR_CTL0_ENABLE_MASK 0x1 | |
4856 | #define CC_SR_CTL0_ENABLE_SHIFT 0 | |
4857 | #define CC_SR_CTL0_EN_SR_ENG_CLK_SHIFT 1 /* sr_clk to sr_memory enable */ | |
4858 | #define CC_SR_CTL0_RSRC_TRIGGER_SHIFT 2 /* Rising edge resource trigger 0 to sr_engine */ | |
4859 | #define CC_SR_CTL0_MIN_DIV_SHIFT 6 /* Min division value for fast clk in sr_engine */ | |
4860 | #define CC_SR_CTL0_EN_SBC_STBY_SHIFT 16 /* Allow Subcore mem StandBy? */ | |
4861 | #define CC_SR_CTL0_EN_SR_ALP_CLK_MASK_SHIFT 18 | |
4862 | #define CC_SR_CTL0_EN_SR_HT_CLK_SHIFT 19 | |
4863 | #define CC_SR_CTL0_ALLOW_PIC_SHIFT 20 /* Allow pic to separate power domains */ | |
4864 | #define CC_SR_CTL0_MAX_SR_LQ_CLK_CNT_SHIFT 25 | |
4865 | #define CC_SR_CTL0_EN_MEM_DISABLE_FOR_SLEEP 30 | |
4866 | ||
4867 | #define CC_SR_CTL1_SR_INIT_MASK 0x3FF | |
4868 | #define CC_SR_CTL1_SR_INIT_SHIFT 0 | |
4869 | ||
4870 | #define ECI_INLO_PKTDUR_MASK 0x000000f0 /* [7:4] - 4 bits */ | |
4871 | #define ECI_INLO_PKTDUR_SHIFT 4 | |
4872 | ||
4873 | /* gci chip control bits */ | |
4874 | #define GCI_GPIO_CHIPCTRL_ENAB_IN_BIT 0 | |
4875 | #define GCI_GPIO_CHIPCTRL_ENAB_OP_BIT 1 | |
4876 | #define GCI_GPIO_CHIPCTRL_INVERT_BIT 2 | |
4877 | #define GCI_GPIO_CHIPCTRL_PULLUP_BIT 3 | |
4878 | #define GCI_GPIO_CHIPCTRL_PULLDN_BIT 4 | |
4879 | #define GCI_GPIO_CHIPCTRL_ENAB_BTSIG_BIT 5 | |
4880 | #define GCI_GPIO_CHIPCTRL_ENAB_OD_OP_BIT 6 | |
4881 | #define GCI_GPIO_CHIPCTRL_ENAB_EXT_GPIO_BIT 7 | |
4882 | ||
4883 | /* gci GPIO input status bits */ | |
4884 | #define GCI_GPIO_STS_VALUE_BIT 0 | |
4885 | #define GCI_GPIO_STS_POS_EDGE_BIT 1 | |
4886 | #define GCI_GPIO_STS_NEG_EDGE_BIT 2 | |
4887 | #define GCI_GPIO_STS_FAST_EDGE_BIT 3 | |
4888 | #define GCI_GPIO_STS_CLEAR 0xF | |
4889 | ||
4890 | #define GCI_GPIO_STS_EDGE_TRIG_BIT 0 | |
4891 | #define GCI_GPIO_STS_NEG_EDGE_TRIG_BIT 1 | |
4892 | #define GCI_GPIO_STS_DUAL_EDGE_TRIG_BIT 2 | |
4893 | #define GCI_GPIO_STS_WL_DIN_SELECT 6 | |
4894 | ||
4895 | #define GCI_GPIO_STS_VALUE (1 << GCI_GPIO_STS_VALUE_BIT) | |
4896 | ||
4897 | /* SR Power Control */ | |
4898 | #define SRPWR_DMN0_PCIE (0) /* PCIE */ | |
4899 | #define SRPWR_DMN0_PCIE_SHIFT (SRPWR_DMN0_PCIE) /* PCIE */ | |
4900 | #define SRPWR_DMN0_PCIE_MASK (1 << SRPWR_DMN0_PCIE_SHIFT) /* PCIE */ | |
4901 | #define SRPWR_DMN1_ARMBPSD (1) /* ARM/BP/SDIO */ | |
4902 | #define SRPWR_DMN1_ARMBPSD_SHIFT (SRPWR_DMN1_ARMBPSD) /* ARM/BP/SDIO */ | |
4903 | #define SRPWR_DMN1_ARMBPSD_MASK (1 << SRPWR_DMN1_ARMBPSD_SHIFT) /* ARM/BP/SDIO */ | |
4904 | #define SRPWR_DMN2_MACAUX (2) /* MAC/Phy Aux */ | |
4905 | #define SRPWR_DMN2_MACAUX_SHIFT (SRPWR_DMN2_MACAUX) /* MAC/Phy Aux */ | |
4906 | #define SRPWR_DMN2_MACAUX_MASK (1 << SRPWR_DMN2_MACAUX_SHIFT) /* MAC/Phy Aux */ | |
4907 | #define SRPWR_DMN3_MACMAIN (3) /* MAC/Phy Main */ | |
4908 | #define SRPWR_DMN3_MACMAIN_SHIFT (SRPWR_DMN3_MACMAIN) /* MAC/Phy Main */ | |
4909 | #define SRPWR_DMN3_MACMAIN_MASK (1 << SRPWR_DMN3_MACMAIN_SHIFT) /* MAC/Phy Main */ | |
4910 | ||
4911 | #define SRPWR_DMN4_MACSCAN (4) /* MAC/Phy Scan */ | |
4912 | #define SRPWR_DMN4_MACSCAN_SHIFT (SRPWR_DMN4_MACSCAN) /* MAC/Phy Scan */ | |
4913 | #define SRPWR_DMN4_MACSCAN_MASK (1 << SRPWR_DMN4_MACSCAN_SHIFT) /* MAC/Phy Scan */ | |
4914 | ||
4915 | #define SRPWR_DMN_MAX (5) | |
4916 | /* all power domain mask */ | |
4917 | #define SRPWR_DMN_ALL_MASK(sih) si_srpwr_domain_all_mask(sih) | |
4918 | ||
4919 | #define SRPWR_REQON_SHIFT (8) /* PowerOnRequest[11:8] */ | |
4920 | #define SRPWR_REQON_MASK(sih) (SRPWR_DMN_ALL_MASK(sih) << SRPWR_REQON_SHIFT) | |
4921 | ||
4922 | #define SRPWR_STATUS_SHIFT (16) /* ExtPwrStatus[19:16], RO */ | |
4923 | #define SRPWR_STATUS_MASK(sih) (SRPWR_DMN_ALL_MASK(sih) << SRPWR_STATUS_SHIFT) | |
4924 | ||
4925 | #define SRPWR_BT_STATUS_SHIFT (20) /* PowerDomain[20:21], RO */ | |
4926 | #define SRPWR_BT_STATUS_MASK (0x3) | |
4927 | ||
4928 | #define SRPWR_DMN_ID_SHIFT (28) /* PowerDomain[31:28], RO */ | |
4929 | #define SRPWR_DMN_ID_MASK (0xF) | |
4930 | ||
4931 | #define SRPWR_UP_DOWN_DELAY 100 /* more than 3 ILP clocks */ | |
4932 | ||
4933 | /* PMU Precision Usec Timer */ | |
4934 | #define PMU_PREC_USEC_TIMER_ENABLE 0x1 | |
4935 | ||
4936 | /* Random Number/Bit Generator defines */ | |
4937 | #define MASK_1BIT(offset) (0x1u << offset) | |
4938 | ||
4939 | #define CC_RNG_CTRL_0_RBG_EN_SHIFT (0u) | |
4940 | #define CC_RNG_CTRL_0_RBG_EN_MASK (0x1FFFu << CC_RNG_CTRL_0_RBG_EN_SHIFT) | |
4941 | #define CC_RNG_CTRL_0_RBG_EN (0x1FFFu) | |
4942 | #define CC_RNG_CTRL_0_RBG_DEV_CTRL_SHIFT (12u) | |
4943 | #define CC_RNG_CTRL_0_RBG_DEV_CTRL_MASK (0x3u << CC_RNG_CTRL_0_RBG_DEV_CTRL_SHIFT) | |
4944 | #define CC_RNG_CTRL_0_RBG_DEV_CTRL_1MHz (0x3u << CC_RNG_CTRL_0_RBG_DEV_CTRL_SHIFT) | |
4945 | #define CC_RNG_CTRL_0_RBG_DEV_CTRL_2MHz (0x2u << CC_RNG_CTRL_0_RBG_DEV_CTRL_SHIFT) | |
4946 | #define CC_RNG_CTRL_0_RBG_DEV_CTRL_4MHz (0x1u << CC_RNG_CTRL_0_RBG_DEV_CTRL_SHIFT) | |
4947 | #define CC_RNG_CTRL_0_RBG_DEV_CTRL_8MHz (0x0u << CC_RNG_CTRL_0_RBG_DEV_CTRL_SHIFT) | |
4948 | ||
4949 | /* RNG_FIFO_COUNT */ | |
4950 | /* RFC - RNG FIFO COUNT */ | |
4951 | #define CC_RNG_FIFO_COUNT_RFC_SHIFT (0u) | |
4952 | #define CC_RNG_FIFO_COUNT_RFC_MASK (0xFFu << CC_RNG_FIFO_COUNT_RFC_SHIFT) | |
4953 | ||
4954 | /* RNG interrupt */ | |
4955 | #define CC_RNG_TOT_BITS_CNT_IRQ_SHIFT (0u) | |
4956 | #define CC_RNG_TOT_BITS_CNT_IRQ_MASK (0x1u << CC_RNG_TOT_BITS_CNT_IRQ_SHIFT) | |
4957 | #define CC_RNG_TOT_BITS_MAX_IRQ_SHIFT (1u) | |
4958 | #define CC_RNG_TOT_BITS_MAX_IRQ_MASK (0x1u << CC_RNG_TOT_BITS_MAX_IRQ_SHIFT) | |
4959 | #define CC_RNG_FIFO_FULL_IRQ_SHIFT (2u) | |
4960 | #define CC_RNG_FIFO_FULL_IRQ_MASK (0x1u << CC_RNG_FIFO_FULL_IRQ_SHIFT) | |
4961 | #define CC_RNG_FIFO_OVER_RUN_IRQ_SHIFT (3u) | |
4962 | #define CC_RNG_FIFO_OVER_RUN_IRQ_MASK (0x1u << CC_RNG_FIFO_OVER_RUN_IRQ_SHIFT) | |
4963 | #define CC_RNG_FIFO_UNDER_RUN_IRQ_SHIFT (4u) | |
4964 | #define CC_RNG_FIFO_UNDER_RUN_IRQ_MASK (0x1u << CC_RNG_FIFO_UNDER_RUN_IRQ_SHIFT) | |
4965 | #define CC_RNG_NIST_FAIL_IRQ_SHIFT (5u) | |
4966 | #define CC_RNG_NIST_FAIL_IRQ_MASK (0x1u << CC_RNG_NIST_FAIL_IRQ_SHIFT) | |
4967 | #define CC_RNG_STARTUP_TRANSITION_MET_IRQ_SHIFT (17u) | |
4968 | #define CC_RNG_STARTUP_TRANSITION_MET_IRQ_MASK (0x1u << \ | |
4969 | CC_RNG_STARTUP_TRANSITION_MET_IRQ_SHIFT) | |
4970 | #define CC_RNG_MASTER_FAIL_LOCKOUT_IRQ_SHIFT (31u) | |
4971 | #define CC_RNG_MASTER_FAIL_LOCKOUT_IRQ_MASK (0x1u << \ | |
4972 | CC_RNG_MASTER_FAIL_LOCKOUT_IRQ_SHIFT) | |
4973 | ||
4974 | /* FISCtrlStatus */ | |
4975 | #define PMU_CLEAR_FIS_DONE_SHIFT 1u | |
4976 | #define PMU_CLEAR_FIS_DONE_MASK (1u << PMU_CLEAR_FIS_DONE_SHIFT) | |
4977 | ||
4978 | #define PMU_FIS_FORCEON_ALL_SHIFT 4u | |
4979 | #define PMU_FIS_FORCEON_ALL_MASK (1u << PMU_FIS_FORCEON_ALL_SHIFT) | |
4980 | ||
4981 | #define PMU_FIS_DN_TIMER_VAL_SHIFT 16u | |
4982 | #define PMU_FIS_DN_TIMER_VAL_MASK 0x7FFF0000u | |
4983 | ||
4984 | #define PMU_FIS_DN_TIMER_VAL_4378 0x2f80u /* micro second */ | |
4985 | #define PMU_FIS_DN_TIMER_VAL_4389 0x3f80u /* micro second */ | |
4986 | ||
4987 | #define PMU_FIS_PCIE_SAVE_EN_SHIFT 5u | |
4988 | #define PMU_FIS_PCIE_SAVE_EN_VALUE (1u << PMU_FIS_PCIE_SAVE_EN_SHIFT) | |
4989 | ||
4990 | #define PMU_REG6_RFLDO_CTRL 0x000000E0 | |
4991 | #define PMU_REG6_RFLDO_CTRL_SHFT 5 | |
4992 | ||
4993 | #define PMU_REG6_BTLDO_CTRL 0x0000E000 | |
4994 | #define PMU_REG6_BTLDO_CTRL_SHFT 13 | |
4995 | #endif /* _SBCHIPC_H */ |