xref: /openbmc/u-boot/arch/arm/include/asm/arch-am33xx/cpu.h (revision 83d290c56fab2d38cd1ab4c4cc7099559c1d5046)
1  /* SPDX-License-Identifier: GPL-2.0+ */
2  /*
3   * cpu.h
4   *
5   * AM33xx specific header file
6   *
7   * Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/
8   */
9  
10  #ifndef _AM33XX_CPU_H
11  #define _AM33XX_CPU_H
12  
13  #if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
14  #include <asm/types.h>
15  #endif /* !(__KERNEL_STRICT_NAMES || __ASSEMBLY__) */
16  
17  #include <asm/arch/hardware.h>
18  
19  #define CL_BIT(x)			(0 << x)
20  
21  /* Timer register bits */
22  #define TCLR_ST				BIT(0)	/* Start=1 Stop=0 */
23  #define TCLR_AR				BIT(1)	/* Auto reload */
24  #define TCLR_PRE			BIT(5)	/* Pre-scaler enable */
25  #define TCLR_PTV_SHIFT			(2)	/* Pre-scaler shift value */
26  #define TCLR_PRE_DISABLE		CL_BIT(5) /* Pre-scalar disable */
27  #define TCLR_CE				BIT(6)	/* compare mode enable */
28  #define TCLR_SCPWM			BIT(7)	/* pwm outpin behaviour */
29  #define TCLR_TCM			BIT(8)	/* edge detection of input pin*/
30  #define TCLR_TRG_SHIFT			(10)	/* trigmode on pwm outpin */
31  #define TCLR_PT				BIT(12)	/* pulse/toggle mode of outpin*/
32  #define TCLR_CAPTMODE			BIT(13) /* capture mode */
33  #define TCLR_GPOCFG			BIT(14)	/* 0=output,1=input */
34  
35  #define TCFG_RESET			BIT(0)	/* software reset */
36  #define TCFG_EMUFREE			BIT(1)	/* behaviour of tmr on debug */
37  #define TCFG_IDLEMOD_SHIFT		(2)	/* power management */
38  
39  /* cpu-id for AM43XX AM33XX and TI81XX family */
40  #define AM437X				0xB98C
41  #define AM335X				0xB944
42  #define TI81XX				0xB81E
43  #define DEVICE_ID			(CTRL_BASE + 0x0600)
44  #define DEVICE_ID_MASK			0x1FFF
45  #define PACKAGE_TYPE_SHIFT		16
46  #define PACKAGE_TYPE_MASK		(3 << 16)
47  
48  /* Package Type */
49  #define PACKAGE_TYPE_UNDEFINED		0x0
50  #define PACKAGE_TYPE_ZCZ		0x1
51  #define PACKAGE_TYPE_ZCE		0x2
52  #define PACKAGE_TYPE_RESERVED		0x3
53  
54  /* MPU max frequencies */
55  #define AM335X_ZCZ_300			0x1FEF
56  #define AM335X_ZCZ_600			0x1FAF
57  #define AM335X_ZCZ_720			0x1F2F
58  #define AM335X_ZCZ_800			0x1E2F
59  #define AM335X_ZCZ_1000			0x1C2F
60  #define AM335X_ZCE_300			0x1FDF
61  #define AM335X_ZCE_600			0x1F9F
62  
63  /* This gives the status of the boot mode pins on the evm */
64  #define SYSBOOT_MASK			(BIT(0) | BIT(1) | BIT(2)\
65  					| BIT(3) | BIT(4))
66  
67  #define PRM_RSTCTRL_RESET		0x01
68  #define PRM_RSTST_WARM_RESET_MASK	0x232
69  
70  /* EMIF Control register bits */
71  #define EMIF_CTRL_DEVOFF	BIT(0)
72  
73  #ifndef __KERNEL_STRICT_NAMES
74  #ifndef __ASSEMBLY__
75  #include <asm/ti-common/omap_wdt.h>
76  
77  #ifndef CONFIG_AM43XX
78  /* Encapsulating core pll registers */
79  struct cm_wkuppll {
80  	unsigned int wkclkstctrl;	/* offset 0x00 */
81  	unsigned int wkctrlclkctrl;	/* offset 0x04 */
82  	unsigned int wkgpio0clkctrl;	/* offset 0x08 */
83  	unsigned int wkl4wkclkctrl;	/* offset 0x0c */
84  	unsigned int timer0clkctrl;	/* offset 0x10 */
85  	unsigned int resv2[3];
86  	unsigned int idlestdpllmpu;	/* offset 0x20 */
87  	unsigned int sscdeltamstepdllmpu; /* off  0x24 */
88  	unsigned int sscmodfreqdivdpllmpu; /* off 0x28 */
89  	unsigned int clkseldpllmpu;	/* offset 0x2c */
90  	unsigned int resv4[1];
91  	unsigned int idlestdpllddr;	/* offset 0x34 */
92  	unsigned int resv5[2];
93  	unsigned int clkseldpllddr;	/* offset 0x40 */
94  	unsigned int resv6[4];
95  	unsigned int clkseldplldisp;	/* offset 0x54 */
96  	unsigned int resv7[1];
97  	unsigned int idlestdpllcore;	/* offset 0x5c */
98  	unsigned int resv8[2];
99  	unsigned int clkseldpllcore;	/* offset 0x68 */
100  	unsigned int resv9[1];
101  	unsigned int idlestdpllper;	/* offset 0x70 */
102  	unsigned int resv10[2];
103  	unsigned int clkdcoldodpllper;	/* offset 0x7c */
104  	unsigned int divm4dpllcore;	/* offset 0x80 */
105  	unsigned int divm5dpllcore;	/* offset 0x84 */
106  	unsigned int clkmoddpllmpu;	/* offset 0x88 */
107  	unsigned int clkmoddpllper;	/* offset 0x8c */
108  	unsigned int clkmoddpllcore;	/* offset 0x90 */
109  	unsigned int clkmoddpllddr;	/* offset 0x94 */
110  	unsigned int clkmoddplldisp;	/* offset 0x98 */
111  	unsigned int clkseldpllper;	/* offset 0x9c */
112  	unsigned int divm2dpllddr;	/* offset 0xA0 */
113  	unsigned int divm2dplldisp;	/* offset 0xA4 */
114  	unsigned int divm2dpllmpu;	/* offset 0xA8 */
115  	unsigned int divm2dpllper;	/* offset 0xAC */
116  	unsigned int resv11[1];
117  	unsigned int wkup_uart0ctrl;	/* offset 0xB4 */
118  	unsigned int wkup_i2c0ctrl;	/* offset 0xB8 */
119  	unsigned int wkup_adctscctrl;	/* offset 0xBC */
120  	unsigned int resv12;
121  	unsigned int timer1clkctrl;	/* offset 0xC4 */
122  	unsigned int resv13[4];
123  	unsigned int divm6dpllcore;	/* offset 0xD8 */
124  };
125  
126  /**
127   * Encapsulating peripheral functional clocks
128   * pll registers
129   */
130  struct cm_perpll {
131  	unsigned int l4lsclkstctrl;	/* offset 0x00 */
132  	unsigned int l3sclkstctrl;	/* offset 0x04 */
133  	unsigned int l4fwclkstctrl;	/* offset 0x08 */
134  	unsigned int l3clkstctrl;	/* offset 0x0c */
135  	unsigned int resv1;
136  	unsigned int cpgmac0clkctrl;	/* offset 0x14 */
137  	unsigned int lcdclkctrl;	/* offset 0x18 */
138  	unsigned int usb0clkctrl;	/* offset 0x1C */
139  	unsigned int resv2;
140  	unsigned int tptc0clkctrl;	/* offset 0x24 */
141  	unsigned int emifclkctrl;	/* offset 0x28 */
142  	unsigned int ocmcramclkctrl;	/* offset 0x2c */
143  	unsigned int gpmcclkctrl;	/* offset 0x30 */
144  	unsigned int mcasp0clkctrl;	/* offset 0x34 */
145  	unsigned int uart5clkctrl;	/* offset 0x38 */
146  	unsigned int mmc0clkctrl;	/* offset 0x3C */
147  	unsigned int elmclkctrl;	/* offset 0x40 */
148  	unsigned int i2c2clkctrl;	/* offset 0x44 */
149  	unsigned int i2c1clkctrl;	/* offset 0x48 */
150  	unsigned int spi0clkctrl;	/* offset 0x4C */
151  	unsigned int spi1clkctrl;	/* offset 0x50 */
152  	unsigned int resv3[3];
153  	unsigned int l4lsclkctrl;	/* offset 0x60 */
154  	unsigned int l4fwclkctrl;	/* offset 0x64 */
155  	unsigned int mcasp1clkctrl;	/* offset 0x68 */
156  	unsigned int uart1clkctrl;	/* offset 0x6C */
157  	unsigned int uart2clkctrl;	/* offset 0x70 */
158  	unsigned int uart3clkctrl;	/* offset 0x74 */
159  	unsigned int uart4clkctrl;	/* offset 0x78 */
160  	unsigned int timer7clkctrl;	/* offset 0x7C */
161  	unsigned int timer2clkctrl;	/* offset 0x80 */
162  	unsigned int timer3clkctrl;	/* offset 0x84 */
163  	unsigned int timer4clkctrl;	/* offset 0x88 */
164  	unsigned int resv4[8];
165  	unsigned int gpio1clkctrl;	/* offset 0xAC */
166  	unsigned int gpio2clkctrl;	/* offset 0xB0 */
167  	unsigned int gpio3clkctrl;	/* offset 0xB4 */
168  	unsigned int resv5;
169  	unsigned int tpccclkctrl;	/* offset 0xBC */
170  	unsigned int dcan0clkctrl;	/* offset 0xC0 */
171  	unsigned int dcan1clkctrl;	/* offset 0xC4 */
172  	unsigned int resv6;
173  	unsigned int epwmss1clkctrl;	/* offset 0xCC */
174  	unsigned int emiffwclkctrl;	/* offset 0xD0 */
175  	unsigned int epwmss0clkctrl;	/* offset 0xD4 */
176  	unsigned int epwmss2clkctrl;	/* offset 0xD8 */
177  	unsigned int l3instrclkctrl;	/* offset 0xDC */
178  	unsigned int l3clkctrl;		/* Offset 0xE0 */
179  	unsigned int resv8[2];
180  	unsigned int timer5clkctrl;	/* offset 0xEC */
181  	unsigned int timer6clkctrl;	/* offset 0xF0 */
182  	unsigned int mmc1clkctrl;	/* offset 0xF4 */
183  	unsigned int mmc2clkctrl;	/* offset 0xF8 */
184  	unsigned int resv9[8];
185  	unsigned int l4hsclkstctrl;	/* offset 0x11C */
186  	unsigned int l4hsclkctrl;	/* offset 0x120 */
187  	unsigned int resv10[8];
188  	unsigned int cpswclkstctrl;	/* offset 0x144 */
189  	unsigned int lcdcclkstctrl;	/* offset 0x148 */
190  };
191  
192  /* Encapsulating Display pll registers */
193  struct cm_dpll {
194  	unsigned int resv1;
195  	unsigned int clktimer7clk;	/* offset 0x04 */
196  	unsigned int clktimer2clk;	/* offset 0x08 */
197  	unsigned int clktimer3clk;	/* offset 0x0C */
198  	unsigned int clktimer4clk;	/* offset 0x10 */
199  	unsigned int resv2;
200  	unsigned int clktimer5clk;	/* offset 0x18 */
201  	unsigned int clktimer6clk;	/* offset 0x1C */
202  	unsigned int resv3[2];
203  	unsigned int clktimer1clk;	/* offset 0x28 */
204  	unsigned int resv4[2];
205  	unsigned int clklcdcpixelclk;	/* offset 0x34 */
206  };
207  
208  struct prm_device_inst {
209  	unsigned int prm_rstctrl;
210  	unsigned int prm_rsttime;
211  	unsigned int prm_rstst;
212  };
213  #else
214  /* Encapsulating core pll registers */
215  struct cm_wkuppll {
216  	unsigned int resv0[136];
217  	unsigned int wkl4wkclkctrl;	/* offset 0x220 */
218  	unsigned int resv1[7];
219  	unsigned int usbphy0clkctrl;	/* offset 0x240 */
220  	unsigned int resv112;
221  	unsigned int usbphy1clkctrl;	/* offset 0x248 */
222  	unsigned int resv113[45];
223  	unsigned int wkclkstctrl;	/* offset 0x300 */
224  	unsigned int resv2[15];
225  	unsigned int wkup_i2c0ctrl;	/* offset 0x340 */
226  	unsigned int resv3;
227  	unsigned int wkup_uart0ctrl;	/* offset 0x348 */
228  	unsigned int resv4[5];
229  	unsigned int wkctrlclkctrl;	/* offset 0x360 */
230  	unsigned int resv5;
231  	unsigned int wkgpio0clkctrl;	/* offset 0x368 */
232  
233  	unsigned int resv6[109];
234  	unsigned int clkmoddpllcore;	/* offset 0x520 */
235  	unsigned int idlestdpllcore;	/* offset 0x524 */
236  	unsigned int resv61;
237  	unsigned int clkseldpllcore;	/* offset 0x52C */
238  	unsigned int resv7[2];
239  	unsigned int divm4dpllcore;	/* offset 0x538 */
240  	unsigned int divm5dpllcore;	/* offset 0x53C */
241  	unsigned int divm6dpllcore;	/* offset 0x540 */
242  
243  	unsigned int resv8[7];
244  	unsigned int clkmoddpllmpu;	/* offset 0x560 */
245  	unsigned int idlestdpllmpu;	/* offset 0x564 */
246  	unsigned int resv9;
247  	unsigned int clkseldpllmpu;	/* offset 0x56c */
248  	unsigned int divm2dpllmpu;	/* offset 0x570 */
249  
250  	unsigned int resv10[11];
251  	unsigned int clkmoddpllddr;	/* offset 0x5A0 */
252  	unsigned int idlestdpllddr;	/* offset 0x5A4 */
253  	unsigned int resv11;
254  	unsigned int clkseldpllddr;	/* offset 0x5AC */
255  	unsigned int divm2dpllddr;	/* offset 0x5B0 */
256  
257  	unsigned int resv12[11];
258  	unsigned int clkmoddpllper;	/* offset 0x5E0 */
259  	unsigned int idlestdpllper;	/* offset 0x5E4 */
260  	unsigned int resv13;
261  	unsigned int clkseldpllper;	/* offset 0x5EC */
262  	unsigned int divm2dpllper;	/* offset 0x5F0 */
263  	unsigned int resv14[8];
264  	unsigned int clkdcoldodpllper;	/* offset 0x614 */
265  
266  	unsigned int resv15[2];
267  	unsigned int clkmoddplldisp;	/* offset 0x620 */
268  	unsigned int resv16[2];
269  	unsigned int clkseldplldisp;	/* offset 0x62C */
270  	unsigned int divm2dplldisp;	/* offset 0x630 */
271  };
272  
273  /*
274   * Encapsulating peripheral functional clocks
275   * pll registers
276   */
277  struct cm_perpll {
278  	unsigned int l3clkstctrl;	/* offset 0x00 */
279  	unsigned int resv0[7];
280  	unsigned int l3clkctrl;		/* Offset 0x20 */
281  	unsigned int resv112[7];
282  	unsigned int l3instrclkctrl;	/* offset 0x40 */
283  	unsigned int resv2[3];
284  	unsigned int ocmcramclkctrl;	/* offset 0x50 */
285  	unsigned int resv3[9];
286  	unsigned int tpccclkctrl;	/* offset 0x78 */
287  	unsigned int resv4;
288  	unsigned int tptc0clkctrl;	/* offset 0x80 */
289  
290  	unsigned int resv5[7];
291  	unsigned int l4hsclkctrl;	/* offset 0x0A0 */
292  	unsigned int resv6;
293  	unsigned int l4fwclkctrl;	/* offset 0x0A8 */
294  	unsigned int resv7[85];
295  	unsigned int l3sclkstctrl;	/* offset 0x200 */
296  	unsigned int resv8[7];
297  	unsigned int gpmcclkctrl;	/* offset 0x220 */
298  	unsigned int resv9[5];
299  	unsigned int mcasp0clkctrl;	/* offset 0x238 */
300  	unsigned int resv10;
301  	unsigned int mcasp1clkctrl;	/* offset 0x240 */
302  	unsigned int resv11;
303  	unsigned int mmc2clkctrl;	/* offset 0x248 */
304  	unsigned int resv12[3];
305  	unsigned int qspiclkctrl;       /* offset 0x258 */
306  	unsigned int resv121;
307  	unsigned int usb0clkctrl;	/* offset 0x260 */
308  	unsigned int resv122;
309  	unsigned int usb1clkctrl;	/* offset 0x268 */
310  	unsigned int resv13[101];
311  	unsigned int l4lsclkstctrl;	/* offset 0x400 */
312  	unsigned int resv14[7];
313  	unsigned int l4lsclkctrl;	/* offset 0x420 */
314  	unsigned int resv15;
315  	unsigned int dcan0clkctrl;	/* offset 0x428 */
316  	unsigned int resv16;
317  	unsigned int dcan1clkctrl;	/* offset 0x430 */
318  	unsigned int resv17[13];
319  	unsigned int elmclkctrl;	/* offset 0x468 */
320  
321  	unsigned int resv18[3];
322  	unsigned int gpio1clkctrl;	/* offset 0x478 */
323  	unsigned int resv19;
324  	unsigned int gpio2clkctrl;	/* offset 0x480 */
325  	unsigned int resv20;
326  	unsigned int gpio3clkctrl;	/* offset 0x488 */
327  	unsigned int resv41;
328  	unsigned int gpio4clkctrl;	/* offset 0x490 */
329  	unsigned int resv42;
330  	unsigned int gpio5clkctrl;	/* offset 0x498 */
331  	unsigned int resv21[3];
332  
333  	unsigned int i2c1clkctrl;	/* offset 0x4A8 */
334  	unsigned int resv22;
335  	unsigned int i2c2clkctrl;	/* offset 0x4B0 */
336  	unsigned int resv23[3];
337  	unsigned int mmc0clkctrl;	/* offset 0x4C0 */
338  	unsigned int resv24;
339  	unsigned int mmc1clkctrl;	/* offset 0x4C8 */
340  
341  	unsigned int resv25[13];
342  	unsigned int spi0clkctrl;	/* offset 0x500 */
343  	unsigned int resv26;
344  	unsigned int spi1clkctrl;	/* offset 0x508 */
345  	unsigned int resv27[9];
346  	unsigned int timer2clkctrl;	/* offset 0x530 */
347  	unsigned int resv28;
348  	unsigned int timer3clkctrl;	/* offset 0x538 */
349  	unsigned int resv29;
350  	unsigned int timer4clkctrl;	/* offset 0x540 */
351  	unsigned int resv30[5];
352  	unsigned int timer7clkctrl;	/* offset 0x558 */
353  
354  	unsigned int resv31[9];
355  	unsigned int uart1clkctrl;	/* offset 0x580 */
356  	unsigned int resv32;
357  	unsigned int uart2clkctrl;	/* offset 0x588 */
358  	unsigned int resv33;
359  	unsigned int uart3clkctrl;	/* offset 0x590 */
360  	unsigned int resv34;
361  	unsigned int uart4clkctrl;	/* offset 0x598 */
362  	unsigned int resv35;
363  	unsigned int uart5clkctrl;	/* offset 0x5A0 */
364  	unsigned int resv36[5];
365  	unsigned int usbphyocp2scp0clkctrl;	/* offset 0x5B8 */
366  	unsigned int resv361;
367  	unsigned int usbphyocp2scp1clkctrl;	/* offset 0x5C0 */
368  	unsigned int resv3611[79];
369  
370  	unsigned int emifclkstctrl;	/* offset 0x700 */
371  	unsigned int resv362[7];
372  	unsigned int emifclkctrl;	/* offset 0x720 */
373  	unsigned int resv37[3];
374  	unsigned int emiffwclkctrl;	/* offset 0x730 */
375  	unsigned int resv371;
376  	unsigned int otfaemifclkctrl;	/* offset 0x738 */
377  	unsigned int resv38[57];
378  	unsigned int lcdclkctrl;	/* offset 0x820 */
379  	unsigned int resv39[183];
380  	unsigned int cpswclkstctrl;	/* offset 0xB00 */
381  	unsigned int resv40[7];
382  	unsigned int cpgmac0clkctrl;	/* offset 0xB20 */
383  };
384  
385  struct cm_device_inst {
386  	unsigned int cm_clkout1_ctrl;
387  	unsigned int cm_dll_ctrl;
388  };
389  
390  struct prm_device_inst {
391  	unsigned int rstctrl;
392  	unsigned int rstst;
393  	unsigned int rsttime;
394  	unsigned int sram_count;
395  	unsigned int ldo_sram_core_set;	/* offset 0x10 */
396  	unsigned int ldo_sram_core_ctr;
397  	unsigned int ldo_sram_mpu_setu;
398  	unsigned int ldo_sram_mpu_ctrl;
399  	unsigned int io_count;		/* offset 0x20 */
400  	unsigned int io_pmctrl;
401  	unsigned int vc_val_bypass;
402  	unsigned int resv1;
403  	unsigned int emif_ctrl;		/* offset 0x30 */
404  };
405  
406  struct cm_dpll {
407  	unsigned int resv1;
408  	unsigned int clktimer2clk;	/* offset 0x04 */
409  	unsigned int resv2[11];
410  	unsigned int clkselmacclk;	/* offset 0x34 */
411  };
412  #endif /* CONFIG_AM43XX */
413  
414  /* Control Module RTC registers */
415  struct cm_rtc {
416  	unsigned int rtcclkctrl;	/* offset 0x0 */
417  	unsigned int clkstctrl;		/* offset 0x4 */
418  };
419  
420  /* Timer 32 bit registers */
421  struct gptimer {
422  	unsigned int tidr;		/* offset 0x00 */
423  	unsigned char res1[12];
424  	unsigned int tiocp_cfg;		/* offset 0x10 */
425  	unsigned char res2[12];
426  	unsigned int tier;		/* offset 0x20 */
427  	unsigned int tistatr;		/* offset 0x24 */
428  	unsigned int tistat;		/* offset 0x28 */
429  	unsigned int tisr;		/* offset 0x2c */
430  	unsigned int tcicr;		/* offset 0x30 */
431  	unsigned int twer;		/* offset 0x34 */
432  	unsigned int tclr;		/* offset 0x38 */
433  	unsigned int tcrr;		/* offset 0x3c */
434  	unsigned int tldr;		/* offset 0x40 */
435  	unsigned int ttgr;		/* offset 0x44 */
436  	unsigned int twpc;		/* offset 0x48 */
437  	unsigned int tmar;		/* offset 0x4c */
438  	unsigned int tcar1;		/* offset 0x50 */
439  	unsigned int tscir;		/* offset 0x54 */
440  	unsigned int tcar2;		/* offset 0x58 */
441  };
442  
443  /* UART Registers */
444  struct uart_sys {
445  	unsigned int resv1[21];
446  	unsigned int uartsyscfg;	/* offset 0x54 */
447  	unsigned int uartsyssts;	/* offset 0x58 */
448  };
449  
450  /* VTP Registers */
451  struct vtp_reg {
452  	unsigned int vtp0ctrlreg;
453  };
454  
455  /* Control Status Register */
456  struct ctrl_stat {
457  	unsigned int resv1[16];
458  	unsigned int statusreg;		/* ofset 0x40 */
459  	unsigned int resv2[51];
460  	unsigned int secure_emif_sdram_config;	/* offset 0x0110 */
461  	unsigned int resv3[319];
462  	unsigned int dev_attr;
463  };
464  
465  /* AM33XX GPIO registers */
466  #define OMAP_GPIO_REVISION		0x0000
467  #define OMAP_GPIO_SYSCONFIG		0x0010
468  #define OMAP_GPIO_SYSSTATUS		0x0114
469  #define OMAP_GPIO_IRQSTATUS1		0x002c
470  #define OMAP_GPIO_IRQSTATUS2		0x0030
471  #define OMAP_GPIO_IRQSTATUS_SET_0	0x0034
472  #define OMAP_GPIO_IRQSTATUS_SET_1	0x0038
473  #define OMAP_GPIO_CTRL			0x0130
474  #define OMAP_GPIO_OE			0x0134
475  #define OMAP_GPIO_DATAIN		0x0138
476  #define OMAP_GPIO_DATAOUT		0x013c
477  #define OMAP_GPIO_LEVELDETECT0		0x0140
478  #define OMAP_GPIO_LEVELDETECT1		0x0144
479  #define OMAP_GPIO_RISINGDETECT		0x0148
480  #define OMAP_GPIO_FALLINGDETECT		0x014c
481  #define OMAP_GPIO_DEBOUNCE_EN		0x0150
482  #define OMAP_GPIO_DEBOUNCE_VAL		0x0154
483  #define OMAP_GPIO_CLEARDATAOUT		0x0190
484  #define OMAP_GPIO_SETDATAOUT		0x0194
485  
486  /* Control Device Register */
487  
488   /* Control Device Register */
489  #define MREQPRIO_0_SAB_INIT1_MASK	0xFFFFFF8F
490  #define MREQPRIO_0_SAB_INIT0_MASK	0xFFFFFFF8
491  #define MREQPRIO_1_DSS_MASK		0xFFFFFF8F
492  
493  struct ctrl_dev {
494  	unsigned int deviceid;		/* offset 0x00 */
495  	unsigned int resv1[7];
496  	unsigned int usb_ctrl0;		/* offset 0x20 */
497  	unsigned int resv2;
498  	unsigned int usb_ctrl1;		/* offset 0x28 */
499  	unsigned int resv3;
500  	unsigned int macid0l;		/* offset 0x30 */
501  	unsigned int macid0h;		/* offset 0x34 */
502  	unsigned int macid1l;		/* offset 0x38 */
503  	unsigned int macid1h;		/* offset 0x3c */
504  	unsigned int resv4[4];
505  	unsigned int miisel;		/* offset 0x50 */
506  	unsigned int resv5[7];
507  	unsigned int mreqprio_0;	/* offset 0x70 */
508  	unsigned int mreqprio_1;	/* offset 0x74 */
509  	unsigned int resv6[97];
510  	unsigned int efuse_sma;		/* offset 0x1FC */
511  };
512  
513  /* Bandwidth Limiter Portion of the L3Fast Configuration Register */
514  #define BW_LIMITER_BW_FRAC_MASK         0xFFFFFFE0
515  #define BW_LIMITER_BW_INT_MASK          0xFFFFFFF0
516  #define BW_LIMITER_BW_WATERMARK_MASK    0xFFFFF800
517  
518  struct l3f_cfg_bwlimiter {
519  	u32 padding0[2];
520  	u32 modena_init0_bw_fractional;
521  	u32 modena_init0_bw_integer;
522  	u32 modena_init0_watermark_0;
523  };
524  
525  /* gmii_sel register defines */
526  #define GMII1_SEL_MII		0x0
527  #define GMII1_SEL_RMII		0x1
528  #define GMII1_SEL_RGMII		0x2
529  #define GMII2_SEL_MII		0x0
530  #define GMII2_SEL_RMII		0x4
531  #define GMII2_SEL_RGMII		0x8
532  #define RGMII1_IDMODE		BIT(4)
533  #define RGMII2_IDMODE		BIT(5)
534  #define RMII1_IO_CLK_EN		BIT(6)
535  #define RMII2_IO_CLK_EN		BIT(7)
536  
537  #define MII_MODE_ENABLE		(GMII1_SEL_MII | GMII2_SEL_MII)
538  #define RMII_MODE_ENABLE        (GMII1_SEL_RMII | GMII2_SEL_RMII)
539  #define RGMII_MODE_ENABLE	(GMII1_SEL_RGMII | GMII2_SEL_RGMII)
540  #define RGMII_INT_DELAY		(RGMII1_IDMODE | RGMII2_IDMODE)
541  #define RMII_CHIPCKL_ENABLE     (RMII1_IO_CLK_EN | RMII2_IO_CLK_EN)
542  
543  /* PWMSS */
544  struct pwmss_regs {
545  	unsigned int idver;
546  	unsigned int sysconfig;
547  	unsigned int clkconfig;
548  	unsigned int clkstatus;
549  };
550  #define ECAP_CLK_EN		BIT(0)
551  #define ECAP_CLK_STOP_REQ	BIT(1)
552  #define EPWM_CLK_EN		BIT(8)
553  #define EPWM_CLK_STOP_REQ	BIT(9)
554  
555  struct pwmss_ecap_regs {
556  	unsigned int tsctr;
557  	unsigned int ctrphs;
558  	unsigned int cap1;
559  	unsigned int cap2;
560  	unsigned int cap3;
561  	unsigned int cap4;
562  	unsigned int resv1[4];
563  	unsigned short ecctl1;
564  	unsigned short ecctl2;
565  };
566  
567  struct pwmss_epwm_regs {
568  	unsigned short tbctl;
569  	unsigned short tbsts;
570  	unsigned short tbphshr;
571  	unsigned short tbphs;
572  	unsigned short tbcnt;
573  	unsigned short tbprd;
574  	unsigned short res1;
575  	unsigned short cmpctl;
576  	unsigned short cmpahr;
577  	unsigned short cmpa;
578  	unsigned short cmpb;
579  	unsigned short aqctla;
580  	unsigned short aqctlb;
581  	unsigned short aqsfrc;
582  	unsigned short aqcsfrc;
583  	unsigned short dbctl;
584  	unsigned short dbred;
585  	unsigned short dbfed;
586  	unsigned short tzsel;
587  	unsigned short tzctl;
588  	unsigned short tzflg;
589  	unsigned short tzclr;
590  	unsigned short tzfrc;
591  	unsigned short etsel;
592  	unsigned short etps;
593  	unsigned short etflg;
594  	unsigned short etclr;
595  	unsigned short etfrc;
596  	unsigned short pcctl;
597  	unsigned int res2[66];
598  	unsigned short hrcnfg;
599  };
600  
601  /* Capture Control register 2 */
602  #define ECTRL2_SYNCOSEL_MASK	(0x03 << 6)
603  #define ECTRL2_MDSL_ECAP	BIT(9)
604  #define ECTRL2_CTRSTP_FREERUN	BIT(4)
605  #define ECTRL2_PLSL_LOW		BIT(10)
606  #define ECTRL2_SYNC_EN		BIT(5)
607  
608  #endif /* __ASSEMBLY__ */
609  #endif /* __KERNEL_STRICT_NAMES */
610  
611  #endif /* _AM33XX_CPU_H */
612