1
2
3
4
5
6
7
8
9
10
11#ifndef _AM33XX_CPU_H
12#define _AM33XX_CPU_H
13
14#if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
15#include <asm/types.h>
16#endif
17
18#include <asm/arch/hardware.h>
19
20#define CL_BIT(x) (0 << x)
21
22
23#define TCLR_ST BIT(0)
24#define TCLR_AR BIT(1)
25#define TCLR_PRE BIT(5)
26#define TCLR_PTV_SHIFT (2)
27#define TCLR_PRE_DISABLE CL_BIT(5)
28#define TCLR_CE BIT(6)
29#define TCLR_SCPWM BIT(7)
30#define TCLR_TCM BIT(8)
31#define TCLR_TRG_SHIFT (10)
32#define TCLR_PT BIT(12)
33#define TCLR_CAPTMODE BIT(13)
34#define TCLR_GPOCFG BIT(14)
35
36#define TCFG_RESET BIT(0)
37#define TCFG_EMUFREE BIT(1)
38#define TCFG_IDLEMOD_SHIFT (2)
39
40#define DEVICE_MASK (BIT(8) | BIT(9) | BIT(10))
41#define TST_DEVICE 0x0
42#define EMU_DEVICE 0x1
43#define HS_DEVICE 0x2
44#define GP_DEVICE 0x3
45
46
47#define AM335X 0xB944
48#define TI81XX 0xB81E
49#define DEVICE_ID (CTRL_BASE + 0x0600)
50#define DEVICE_ID_MASK 0x1FFF
51
52
53#define AM335X_ZCZ_300 0x1FEF
54#define AM335X_ZCZ_600 0x1FAF
55#define AM335X_ZCZ_720 0x1F2F
56#define AM335X_ZCZ_800 0x1E2F
57#define AM335X_ZCZ_1000 0x1C2F
58#define AM335X_ZCE_300 0x1FDF
59#define AM335X_ZCE_600 0x1F9F
60
61
62#define SYSBOOT_MASK (BIT(0) | BIT(1) | BIT(2)\
63 | BIT(3) | BIT(4))
64
65#define PRM_RSTCTRL_RESET 0x01
66#define PRM_RSTST_WARM_RESET_MASK 0x232
67
68
69
70
71
72
73
74#define TIMER_MARGIN_MAX (24 * 60 * 60)
75#define TIMER_MARGIN_DEFAULT 60
76#define TIMER_MARGIN_MIN 1
77
78#define PTV 0
79#define GET_WLDR_VAL(secs) (0xffffffff - ((secs) * (32768/(1<<PTV))) + 1)
80#define WDT_WWPS_PEND_WCLR BIT(0)
81#define WDT_WWPS_PEND_WLDR BIT(2)
82#define WDT_WWPS_PEND_WTGR BIT(3)
83#define WDT_WWPS_PEND_WSPR BIT(4)
84
85#define WDT_WCLR_PRE BIT(5)
86#define WDT_WCLR_PTV_OFF 2
87
88#ifndef __KERNEL_STRICT_NAMES
89#ifndef __ASSEMBLY__
90
91
92#ifndef CONFIG_AM43XX
93
94struct cm_wkuppll {
95 unsigned int wkclkstctrl;
96 unsigned int wkctrlclkctrl;
97 unsigned int wkgpio0clkctrl;
98 unsigned int wkl4wkclkctrl;
99 unsigned int timer0clkctrl;
100 unsigned int resv2[3];
101 unsigned int idlestdpllmpu;
102 unsigned int sscdeltamstepdllmpu;
103 unsigned int sscmodfreqdivdpllmpu;
104 unsigned int clkseldpllmpu;
105 unsigned int resv4[1];
106 unsigned int idlestdpllddr;
107 unsigned int resv5[2];
108 unsigned int clkseldpllddr;
109 unsigned int resv6[4];
110 unsigned int clkseldplldisp;
111 unsigned int resv7[1];
112 unsigned int idlestdpllcore;
113 unsigned int resv8[2];
114 unsigned int clkseldpllcore;
115 unsigned int resv9[1];
116 unsigned int idlestdpllper;
117 unsigned int resv10[2];
118 unsigned int clkdcoldodpllper;
119 unsigned int divm4dpllcore;
120 unsigned int divm5dpllcore;
121 unsigned int clkmoddpllmpu;
122 unsigned int clkmoddpllper;
123 unsigned int clkmoddpllcore;
124 unsigned int clkmoddpllddr;
125 unsigned int clkmoddplldisp;
126 unsigned int clkseldpllper;
127 unsigned int divm2dpllddr;
128 unsigned int divm2dplldisp;
129 unsigned int divm2dpllmpu;
130 unsigned int divm2dpllper;
131 unsigned int resv11[1];
132 unsigned int wkup_uart0ctrl;
133 unsigned int wkup_i2c0ctrl;
134 unsigned int wkup_adctscctrl;
135 unsigned int resv12;
136 unsigned int timer1clkctrl;
137 unsigned int resv13[4];
138 unsigned int divm6dpllcore;
139};
140
141
142
143
144
145struct cm_perpll {
146 unsigned int l4lsclkstctrl;
147 unsigned int l3sclkstctrl;
148 unsigned int l4fwclkstctrl;
149 unsigned int l3clkstctrl;
150 unsigned int resv1;
151 unsigned int cpgmac0clkctrl;
152 unsigned int lcdclkctrl;
153 unsigned int usb0clkctrl;
154 unsigned int resv2;
155 unsigned int tptc0clkctrl;
156 unsigned int emifclkctrl;
157 unsigned int ocmcramclkctrl;
158 unsigned int gpmcclkctrl;
159 unsigned int mcasp0clkctrl;
160 unsigned int uart5clkctrl;
161 unsigned int mmc0clkctrl;
162 unsigned int elmclkctrl;
163 unsigned int i2c2clkctrl;
164 unsigned int i2c1clkctrl;
165 unsigned int spi0clkctrl;
166 unsigned int spi1clkctrl;
167 unsigned int resv3[3];
168 unsigned int l4lsclkctrl;
169 unsigned int l4fwclkctrl;
170 unsigned int mcasp1clkctrl;
171 unsigned int uart1clkctrl;
172 unsigned int uart2clkctrl;
173 unsigned int uart3clkctrl;
174 unsigned int uart4clkctrl;
175 unsigned int timer7clkctrl;
176 unsigned int timer2clkctrl;
177 unsigned int timer3clkctrl;
178 unsigned int timer4clkctrl;
179 unsigned int resv4[8];
180 unsigned int gpio1clkctrl;
181 unsigned int gpio2clkctrl;
182 unsigned int gpio3clkctrl;
183 unsigned int resv5;
184 unsigned int tpccclkctrl;
185 unsigned int dcan0clkctrl;
186 unsigned int dcan1clkctrl;
187 unsigned int resv6;
188 unsigned int epwmss1clkctrl;
189 unsigned int emiffwclkctrl;
190 unsigned int epwmss0clkctrl;
191 unsigned int epwmss2clkctrl;
192 unsigned int l3instrclkctrl;
193 unsigned int l3clkctrl;
194 unsigned int resv8[2];
195 unsigned int timer5clkctrl;
196 unsigned int timer6clkctrl;
197 unsigned int mmc1clkctrl;
198 unsigned int mmc2clkctrl;
199 unsigned int resv9[8];
200 unsigned int l4hsclkstctrl;
201 unsigned int l4hsclkctrl;
202 unsigned int resv10[8];
203 unsigned int cpswclkstctrl;
204 unsigned int lcdcclkstctrl;
205};
206
207
208struct cm_dpll {
209 unsigned int resv1;
210 unsigned int clktimer7clk;
211 unsigned int clktimer2clk;
212 unsigned int clktimer3clk;
213 unsigned int clktimer4clk;
214 unsigned int resv2;
215 unsigned int clktimer5clk;
216 unsigned int clktimer6clk;
217 unsigned int resv3[2];
218 unsigned int clktimer1clk;
219 unsigned int resv4[2];
220 unsigned int clklcdcpixelclk;
221};
222
223struct prm_device_inst {
224 unsigned int prm_rstctrl;
225 unsigned int prm_rsttime;
226 unsigned int prm_rstst;
227};
228#else
229
230struct cm_wkuppll {
231 unsigned int resv0[136];
232 unsigned int wkl4wkclkctrl;
233 unsigned int resv1[7];
234 unsigned int usbphy0clkctrl;
235 unsigned int resv112;
236 unsigned int usbphy1clkctrl;
237 unsigned int resv113[45];
238 unsigned int wkclkstctrl;
239 unsigned int resv2[15];
240 unsigned int wkup_i2c0ctrl;
241 unsigned int resv3;
242 unsigned int wkup_uart0ctrl;
243 unsigned int resv4[5];
244 unsigned int wkctrlclkctrl;
245 unsigned int resv5;
246 unsigned int wkgpio0clkctrl;
247
248 unsigned int resv6[109];
249 unsigned int clkmoddpllcore;
250 unsigned int idlestdpllcore;
251 unsigned int resv61;
252 unsigned int clkseldpllcore;
253 unsigned int resv7[2];
254 unsigned int divm4dpllcore;
255 unsigned int divm5dpllcore;
256 unsigned int divm6dpllcore;
257
258 unsigned int resv8[7];
259 unsigned int clkmoddpllmpu;
260 unsigned int idlestdpllmpu;
261 unsigned int resv9;
262 unsigned int clkseldpllmpu;
263 unsigned int divm2dpllmpu;
264
265 unsigned int resv10[11];
266 unsigned int clkmoddpllddr;
267 unsigned int idlestdpllddr;
268 unsigned int resv11;
269 unsigned int clkseldpllddr;
270 unsigned int divm2dpllddr;
271
272 unsigned int resv12[11];
273 unsigned int clkmoddpllper;
274 unsigned int idlestdpllper;
275 unsigned int resv13;
276 unsigned int clkseldpllper;
277 unsigned int divm2dpllper;
278 unsigned int resv14[8];
279 unsigned int clkdcoldodpllper;
280
281 unsigned int resv15[2];
282 unsigned int clkmoddplldisp;
283 unsigned int resv16[2];
284 unsigned int clkseldplldisp;
285 unsigned int divm2dplldisp;
286};
287
288
289
290
291
292struct cm_perpll {
293 unsigned int l3clkstctrl;
294 unsigned int resv0[7];
295 unsigned int l3clkctrl;
296 unsigned int resv112[7];
297 unsigned int l3instrclkctrl;
298 unsigned int resv2[3];
299 unsigned int ocmcramclkctrl;
300 unsigned int resv3[9];
301 unsigned int tpccclkctrl;
302 unsigned int resv4;
303 unsigned int tptc0clkctrl;
304
305 unsigned int resv5[7];
306 unsigned int l4hsclkctrl;
307 unsigned int resv6;
308 unsigned int l4fwclkctrl;
309 unsigned int resv7[85];
310 unsigned int l3sclkstctrl;
311 unsigned int resv8[7];
312 unsigned int gpmcclkctrl;
313 unsigned int resv9[5];
314 unsigned int mcasp0clkctrl;
315 unsigned int resv10;
316 unsigned int mcasp1clkctrl;
317 unsigned int resv11;
318 unsigned int mmc2clkctrl;
319 unsigned int resv12[3];
320 unsigned int qspiclkctrl;
321 unsigned int resv121;
322 unsigned int usb0clkctrl;
323 unsigned int resv122;
324 unsigned int usb1clkctrl;
325 unsigned int resv13[101];
326 unsigned int l4lsclkstctrl;
327 unsigned int resv14[7];
328 unsigned int l4lsclkctrl;
329 unsigned int resv15;
330 unsigned int dcan0clkctrl;
331 unsigned int resv16;
332 unsigned int dcan1clkctrl;
333 unsigned int resv17[13];
334 unsigned int elmclkctrl;
335
336 unsigned int resv18[3];
337 unsigned int gpio1clkctrl;
338 unsigned int resv19;
339 unsigned int gpio2clkctrl;
340 unsigned int resv20;
341 unsigned int gpio3clkctrl;
342 unsigned int resv41;
343 unsigned int gpio4clkctrl;
344 unsigned int resv42;
345 unsigned int gpio5clkctrl;
346 unsigned int resv21[3];
347
348 unsigned int i2c1clkctrl;
349 unsigned int resv22;
350 unsigned int i2c2clkctrl;
351 unsigned int resv23[3];
352 unsigned int mmc0clkctrl;
353 unsigned int resv24;
354 unsigned int mmc1clkctrl;
355
356 unsigned int resv25[13];
357 unsigned int spi0clkctrl;
358 unsigned int resv26;
359 unsigned int spi1clkctrl;
360 unsigned int resv27[9];
361 unsigned int timer2clkctrl;
362 unsigned int resv28;
363 unsigned int timer3clkctrl;
364 unsigned int resv29;
365 unsigned int timer4clkctrl;
366 unsigned int resv30[5];
367 unsigned int timer7clkctrl;
368
369 unsigned int resv31[9];
370 unsigned int uart1clkctrl;
371 unsigned int resv32;
372 unsigned int uart2clkctrl;
373 unsigned int resv33;
374 unsigned int uart3clkctrl;
375 unsigned int resv34;
376 unsigned int uart4clkctrl;
377 unsigned int resv35;
378 unsigned int uart5clkctrl;
379 unsigned int resv36[5];
380 unsigned int usbphyocp2scp0clkctrl;
381 unsigned int resv361;
382 unsigned int usbphyocp2scp1clkctrl;
383 unsigned int resv3611[79];
384
385 unsigned int emifclkstctrl;
386 unsigned int resv362[7];
387 unsigned int emifclkctrl;
388 unsigned int resv37[3];
389 unsigned int emiffwclkctrl;
390 unsigned int resv371;
391 unsigned int otfaemifclkctrl;
392 unsigned int resv38[57];
393 unsigned int lcdclkctrl;
394 unsigned int resv39[183];
395 unsigned int cpswclkstctrl;
396 unsigned int resv40[7];
397 unsigned int cpgmac0clkctrl;
398};
399
400struct cm_device_inst {
401 unsigned int cm_clkout1_ctrl;
402 unsigned int cm_dll_ctrl;
403};
404
405struct prm_device_inst {
406 unsigned int prm_rstctrl;
407 unsigned int prm_rstst;
408};
409
410struct cm_dpll {
411 unsigned int resv1;
412 unsigned int clktimer2clk;
413 unsigned int resv2[11];
414 unsigned int clkselmacclk;
415};
416#endif
417
418
419struct cm_rtc {
420 unsigned int rtcclkctrl;
421 unsigned int clkstctrl;
422};
423
424
425struct wd_timer {
426 unsigned int resv1[4];
427 unsigned int wdtwdsc;
428 unsigned int wdtwdst;
429 unsigned int wdtwisr;
430 unsigned int wdtwier;
431 unsigned int wdtwwer;
432 unsigned int wdtwclr;
433 unsigned int wdtwcrr;
434 unsigned int wdtwldr;
435 unsigned int wdtwtgr;
436 unsigned int wdtwwps;
437 unsigned int resv2[3];
438 unsigned int wdtwdly;
439 unsigned int wdtwspr;
440 unsigned int resv3[1];
441 unsigned int wdtwqeoi;
442 unsigned int wdtwqstar;
443 unsigned int wdtwqsta;
444 unsigned int wdtwqens;
445 unsigned int wdtwqenc;
446 unsigned int resv4[39];
447 unsigned int wdt_unfr;
448};
449
450
451struct gptimer {
452 unsigned int tidr;
453 unsigned char res1[12];
454 unsigned int tiocp_cfg;
455 unsigned char res2[12];
456 unsigned int tier;
457 unsigned int tistatr;
458 unsigned int tistat;
459 unsigned int tisr;
460 unsigned int tcicr;
461 unsigned int twer;
462 unsigned int tclr;
463 unsigned int tcrr;
464 unsigned int tldr;
465 unsigned int ttgr;
466 unsigned int twpc;
467 unsigned int tmar;
468 unsigned int tcar1;
469 unsigned int tscir;
470 unsigned int tcar2;
471};
472
473
474struct uart_sys {
475 unsigned int resv1[21];
476 unsigned int uartsyscfg;
477 unsigned int uartsyssts;
478};
479
480
481struct vtp_reg {
482 unsigned int vtp0ctrlreg;
483};
484
485
486struct ctrl_stat {
487 unsigned int resv1[16];
488 unsigned int statusreg;
489 unsigned int resv2[51];
490 unsigned int secure_emif_sdram_config;
491 unsigned int resv3[319];
492 unsigned int dev_attr;
493};
494
495
496#define OMAP_GPIO_REVISION 0x0000
497#define OMAP_GPIO_SYSCONFIG 0x0010
498#define OMAP_GPIO_SYSSTATUS 0x0114
499#define OMAP_GPIO_IRQSTATUS1 0x002c
500#define OMAP_GPIO_IRQSTATUS2 0x0030
501#define OMAP_GPIO_IRQSTATUS_SET_0 0x0034
502#define OMAP_GPIO_IRQSTATUS_SET_1 0x0038
503#define OMAP_GPIO_CTRL 0x0130
504#define OMAP_GPIO_OE 0x0134
505#define OMAP_GPIO_DATAIN 0x0138
506#define OMAP_GPIO_DATAOUT 0x013c
507#define OMAP_GPIO_LEVELDETECT0 0x0140
508#define OMAP_GPIO_LEVELDETECT1 0x0144
509#define OMAP_GPIO_RISINGDETECT 0x0148
510#define OMAP_GPIO_FALLINGDETECT 0x014c
511#define OMAP_GPIO_DEBOUNCE_EN 0x0150
512#define OMAP_GPIO_DEBOUNCE_VAL 0x0154
513#define OMAP_GPIO_CLEARDATAOUT 0x0190
514#define OMAP_GPIO_SETDATAOUT 0x0194
515
516
517
518
519#define MREQPRIO_0_SAB_INIT1_MASK 0xFFFFFF8F
520#define MREQPRIO_0_SAB_INIT0_MASK 0xFFFFFFF8
521#define MREQPRIO_1_DSS_MASK 0xFFFFFF8F
522
523struct ctrl_dev {
524 unsigned int deviceid;
525 unsigned int resv1[7];
526 unsigned int usb_ctrl0;
527 unsigned int resv2;
528 unsigned int usb_ctrl1;
529 unsigned int resv3;
530 unsigned int macid0l;
531 unsigned int macid0h;
532 unsigned int macid1l;
533 unsigned int macid1h;
534 unsigned int resv4[4];
535 unsigned int miisel;
536 unsigned int resv5[7];
537 unsigned int mreqprio_0;
538 unsigned int mreqprio_1;
539 unsigned int resv6[97];
540 unsigned int efuse_sma;
541};
542
543
544#define BW_LIMITER_BW_FRAC_MASK 0xFFFFFFE0
545#define BW_LIMITER_BW_INT_MASK 0xFFFFFFF0
546#define BW_LIMITER_BW_WATERMARK_MASK 0xFFFFF800
547
548struct l3f_cfg_bwlimiter {
549 u32 padding0[2];
550 u32 modena_init0_bw_fractional;
551 u32 modena_init0_bw_integer;
552 u32 modena_init0_watermark_0;
553};
554
555
556#define GMII1_SEL_MII 0x0
557#define GMII1_SEL_RMII 0x1
558#define GMII1_SEL_RGMII 0x2
559#define GMII2_SEL_MII 0x0
560#define GMII2_SEL_RMII 0x4
561#define GMII2_SEL_RGMII 0x8
562#define RGMII1_IDMODE BIT(4)
563#define RGMII2_IDMODE BIT(5)
564#define RMII1_IO_CLK_EN BIT(6)
565#define RMII2_IO_CLK_EN BIT(7)
566
567#define MII_MODE_ENABLE (GMII1_SEL_MII | GMII2_SEL_MII)
568#define RMII_MODE_ENABLE (GMII1_SEL_RMII | GMII2_SEL_RMII)
569#define RGMII_MODE_ENABLE (GMII1_SEL_RGMII | GMII2_SEL_RGMII)
570#define RGMII_INT_DELAY (RGMII1_IDMODE | RGMII2_IDMODE)
571#define RMII_CHIPCKL_ENABLE (RMII1_IO_CLK_EN | RMII2_IO_CLK_EN)
572
573
574struct pwmss_regs {
575 unsigned int idver;
576 unsigned int sysconfig;
577 unsigned int clkconfig;
578 unsigned int clkstatus;
579};
580#define ECAP_CLK_EN BIT(0)
581#define ECAP_CLK_STOP_REQ BIT(1)
582
583struct pwmss_ecap_regs {
584 unsigned int tsctr;
585 unsigned int ctrphs;
586 unsigned int cap1;
587 unsigned int cap2;
588 unsigned int cap3;
589 unsigned int cap4;
590 unsigned int resv1[4];
591 unsigned short ecctl1;
592 unsigned short ecctl2;
593};
594
595
596#define ECTRL2_SYNCOSEL_MASK (0x03 << 6)
597#define ECTRL2_MDSL_ECAP BIT(9)
598#define ECTRL2_CTRSTP_FREERUN BIT(4)
599#define ECTRL2_PLSL_LOW BIT(10)
600#define ECTRL2_SYNC_EN BIT(5)
601
602#endif
603#endif
604
605#endif
606