xref: /rk3399_rockchip-uboot/arch/arm/include/asm/arch-am33xx/cpu.h (revision 00bbe96ebabbc83777cd8d6c6fd2791c5c8cf619)
15655108aSChandan Nath /*
25655108aSChandan Nath  * cpu.h
35655108aSChandan Nath  *
45655108aSChandan Nath  * AM33xx specific header file
55655108aSChandan Nath  *
65655108aSChandan Nath  * Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/
75655108aSChandan Nath  *
81a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
95655108aSChandan Nath  */
105655108aSChandan Nath 
115655108aSChandan Nath #ifndef _AM33XX_CPU_H
125655108aSChandan Nath #define _AM33XX_CPU_H
135655108aSChandan Nath 
145655108aSChandan Nath #if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
155655108aSChandan Nath #include <asm/types.h>
165655108aSChandan Nath #endif /* !(__KERNEL_STRICT_NAMES || __ASSEMBLY__) */
175655108aSChandan Nath 
185655108aSChandan Nath #include <asm/arch/hardware.h>
195655108aSChandan Nath 
205655108aSChandan Nath #define CL_BIT(x)			(0 << x)
215655108aSChandan Nath 
225655108aSChandan Nath /* Timer register bits */
235655108aSChandan Nath #define TCLR_ST				BIT(0)	/* Start=1 Stop=0 */
245655108aSChandan Nath #define TCLR_AR				BIT(1)	/* Auto reload */
255655108aSChandan Nath #define TCLR_PRE			BIT(5)	/* Pre-scaler enable */
265655108aSChandan Nath #define TCLR_PTV_SHIFT			(2)	/* Pre-scaler shift value */
275655108aSChandan Nath #define TCLR_PRE_DISABLE		CL_BIT(5) /* Pre-scalar disable */
2825b0a729SHannes Petermaier #define TCLR_CE				BIT(6)	/* compare mode enable */
2925b0a729SHannes Petermaier #define TCLR_SCPWM			BIT(7)	/* pwm outpin behaviour */
3025b0a729SHannes Petermaier #define TCLR_TCM			BIT(8)	/* edge detection of input pin*/
3125b0a729SHannes Petermaier #define TCLR_TRG_SHIFT			(10)	/* trigmode on pwm outpin */
3225b0a729SHannes Petermaier #define TCLR_PT				BIT(12)	/* pulse/toggle mode of outpin*/
3325b0a729SHannes Petermaier #define TCLR_CAPTMODE			BIT(13) /* capture mode */
3425b0a729SHannes Petermaier #define TCLR_GPOCFG			BIT(14)	/* 0=output,1=input */
355655108aSChandan Nath 
3625b0a729SHannes Petermaier #define TCFG_RESET			BIT(0)	/* software reset */
3725b0a729SHannes Petermaier #define TCFG_EMUFREE			BIT(1)	/* behaviour of tmr on debug */
3825b0a729SHannes Petermaier #define TCFG_IDLEMOD_SHIFT		(2)	/* power management */
395655108aSChandan Nath 
401f957708SLokesh Vutla /* cpu-id for AM43XX AM33XX and TI81XX family */
411f957708SLokesh Vutla #define AM437X				0xB98C
425655108aSChandan Nath #define AM335X				0xB944
438b029f22SMatt Porter #define TI81XX				0xB81E
448b029f22SMatt Porter #define DEVICE_ID			(CTRL_BASE + 0x0600)
455287946cSTom Rini #define DEVICE_ID_MASK			0x1FFF
46*59041a50SLokesh Vutla #define PACKAGE_TYPE_SHIFT		16
47*59041a50SLokesh Vutla #define PACKAGE_TYPE_MASK		(3 << 16)
48*59041a50SLokesh Vutla 
49*59041a50SLokesh Vutla /* Package Type */
50*59041a50SLokesh Vutla #define PACKAGE_TYPE_UNDEFINED		0x0
51*59041a50SLokesh Vutla #define PACKAGE_TYPE_ZCZ		0x1
52*59041a50SLokesh Vutla #define PACKAGE_TYPE_ZCE		0x2
53*59041a50SLokesh Vutla #define PACKAGE_TYPE_RESERVED		0x3
545287946cSTom Rini 
555287946cSTom Rini /* MPU max frequencies */
565287946cSTom Rini #define AM335X_ZCZ_300			0x1FEF
575287946cSTom Rini #define AM335X_ZCZ_600			0x1FAF
585287946cSTom Rini #define AM335X_ZCZ_720			0x1F2F
595287946cSTom Rini #define AM335X_ZCZ_800			0x1E2F
605287946cSTom Rini #define AM335X_ZCZ_1000			0x1C2F
615287946cSTom Rini #define AM335X_ZCE_300			0x1FDF
625287946cSTom Rini #define AM335X_ZCE_600			0x1F9F
635655108aSChandan Nath 
645655108aSChandan Nath /* This gives the status of the boot mode pins on the evm */
655655108aSChandan Nath #define SYSBOOT_MASK			(BIT(0) | BIT(1) | BIT(2)\
665655108aSChandan Nath 					| BIT(3) | BIT(4))
675655108aSChandan Nath 
685655108aSChandan Nath #define PRM_RSTCTRL_RESET		0x01
6970239507SLokesh Vutla #define PRM_RSTST_WARM_RESET_MASK	0x232
705655108aSChandan Nath 
715655108aSChandan Nath #ifndef __KERNEL_STRICT_NAMES
725655108aSChandan Nath #ifndef __ASSEMBLY__
73d7ebbe9dSLukasz Majewski #include <asm/ti-common/omap_wdt.h>
748eb16b7fSIlya Yanok 
75c06e498aSLokesh Vutla #ifndef CONFIG_AM43XX
765655108aSChandan Nath /* Encapsulating core pll registers */
775655108aSChandan Nath struct cm_wkuppll {
785655108aSChandan Nath 	unsigned int wkclkstctrl;	/* offset 0x00 */
795655108aSChandan Nath 	unsigned int wkctrlclkctrl;	/* offset 0x04 */
80d88bc042STom Rini 	unsigned int wkgpio0clkctrl;	/* offset 0x08 */
815655108aSChandan Nath 	unsigned int wkl4wkclkctrl;	/* offset 0x0c */
8225b0a729SHannes Petermaier 	unsigned int timer0clkctrl;	/* offset 0x10 */
8325b0a729SHannes Petermaier 	unsigned int resv2[3];
845655108aSChandan Nath 	unsigned int idlestdpllmpu;	/* offset 0x20 */
85694607b5SHeiko Schocher 	unsigned int sscdeltamstepdllmpu; /* off  0x24 */
86694607b5SHeiko Schocher 	unsigned int sscmodfreqdivdpllmpu; /* off 0x28 */
875655108aSChandan Nath 	unsigned int clkseldpllmpu;	/* offset 0x2c */
885655108aSChandan Nath 	unsigned int resv4[1];
895655108aSChandan Nath 	unsigned int idlestdpllddr;	/* offset 0x34 */
905655108aSChandan Nath 	unsigned int resv5[2];
915655108aSChandan Nath 	unsigned int clkseldpllddr;	/* offset 0x40 */
925655108aSChandan Nath 	unsigned int resv6[4];
935655108aSChandan Nath 	unsigned int clkseldplldisp;	/* offset 0x54 */
945655108aSChandan Nath 	unsigned int resv7[1];
955655108aSChandan Nath 	unsigned int idlestdpllcore;	/* offset 0x5c */
965655108aSChandan Nath 	unsigned int resv8[2];
975655108aSChandan Nath 	unsigned int clkseldpllcore;	/* offset 0x68 */
985655108aSChandan Nath 	unsigned int resv9[1];
995655108aSChandan Nath 	unsigned int idlestdpllper;	/* offset 0x70 */
1007df5cf35SIlya Yanok 	unsigned int resv10[2];
1017df5cf35SIlya Yanok 	unsigned int clkdcoldodpllper;	/* offset 0x7c */
1025655108aSChandan Nath 	unsigned int divm4dpllcore;	/* offset 0x80 */
1035655108aSChandan Nath 	unsigned int divm5dpllcore;	/* offset 0x84 */
1045655108aSChandan Nath 	unsigned int clkmoddpllmpu;	/* offset 0x88 */
1055655108aSChandan Nath 	unsigned int clkmoddpllper;	/* offset 0x8c */
1065655108aSChandan Nath 	unsigned int clkmoddpllcore;	/* offset 0x90 */
1075655108aSChandan Nath 	unsigned int clkmoddpllddr;	/* offset 0x94 */
1085655108aSChandan Nath 	unsigned int clkmoddplldisp;	/* offset 0x98 */
1095655108aSChandan Nath 	unsigned int clkseldpllper;	/* offset 0x9c */
1105655108aSChandan Nath 	unsigned int divm2dpllddr;	/* offset 0xA0 */
1115655108aSChandan Nath 	unsigned int divm2dplldisp;	/* offset 0xA4 */
1125655108aSChandan Nath 	unsigned int divm2dpllmpu;	/* offset 0xA8 */
1135655108aSChandan Nath 	unsigned int divm2dpllper;	/* offset 0xAC */
1145655108aSChandan Nath 	unsigned int resv11[1];
1155655108aSChandan Nath 	unsigned int wkup_uart0ctrl;	/* offset 0xB4 */
116b4116edeSPatil, Rachna 	unsigned int wkup_i2c0ctrl;	/* offset 0xB8 */
117072cefe0SHannes Petermaier 	unsigned int wkup_adctscctrl;	/* offset 0xBC */
11825b0a729SHannes Petermaier 	unsigned int resv12;
11925b0a729SHannes Petermaier 	unsigned int timer1clkctrl;	/* offset 0xC4 */
12025b0a729SHannes Petermaier 	unsigned int resv13[4];
1215655108aSChandan Nath 	unsigned int divm6dpllcore;	/* offset 0xD8 */
1225655108aSChandan Nath };
1235655108aSChandan Nath 
1245655108aSChandan Nath /**
1255655108aSChandan Nath  * Encapsulating peripheral functional clocks
1265655108aSChandan Nath  * pll registers
1275655108aSChandan Nath  */
1285655108aSChandan Nath struct cm_perpll {
1295655108aSChandan Nath 	unsigned int l4lsclkstctrl;	/* offset 0x00 */
1305655108aSChandan Nath 	unsigned int l3sclkstctrl;	/* offset 0x04 */
1315655108aSChandan Nath 	unsigned int l4fwclkstctrl;	/* offset 0x08 */
1325655108aSChandan Nath 	unsigned int l3clkstctrl;	/* offset 0x0c */
133fb072a3eSChandan Nath 	unsigned int resv1;
134fb072a3eSChandan Nath 	unsigned int cpgmac0clkctrl;	/* offset 0x14 */
135d88bc042STom Rini 	unsigned int lcdclkctrl;	/* offset 0x18 */
136d88bc042STom Rini 	unsigned int usb0clkctrl;	/* offset 0x1C */
137d88bc042STom Rini 	unsigned int resv2;
138d88bc042STom Rini 	unsigned int tptc0clkctrl;	/* offset 0x24 */
1395655108aSChandan Nath 	unsigned int emifclkctrl;	/* offset 0x28 */
1405655108aSChandan Nath 	unsigned int ocmcramclkctrl;	/* offset 0x2c */
141fb072a3eSChandan Nath 	unsigned int gpmcclkctrl;	/* offset 0x30 */
142d88bc042STom Rini 	unsigned int mcasp0clkctrl;	/* offset 0x34 */
143d88bc042STom Rini 	unsigned int uart5clkctrl;	/* offset 0x38 */
144fb072a3eSChandan Nath 	unsigned int mmc0clkctrl;	/* offset 0x3C */
145fb072a3eSChandan Nath 	unsigned int elmclkctrl;	/* offset 0x40 */
146fb072a3eSChandan Nath 	unsigned int i2c2clkctrl;	/* offset 0x44 */
147fb072a3eSChandan Nath 	unsigned int i2c1clkctrl;	/* offset 0x48 */
148fb072a3eSChandan Nath 	unsigned int spi0clkctrl;	/* offset 0x4C */
149fb072a3eSChandan Nath 	unsigned int spi1clkctrl;	/* offset 0x50 */
150d88bc042STom Rini 	unsigned int resv3[3];
1515655108aSChandan Nath 	unsigned int l4lsclkctrl;	/* offset 0x60 */
1525655108aSChandan Nath 	unsigned int l4fwclkctrl;	/* offset 0x64 */
153d88bc042STom Rini 	unsigned int mcasp1clkctrl;	/* offset 0x68 */
154d88bc042STom Rini 	unsigned int uart1clkctrl;	/* offset 0x6C */
155d88bc042STom Rini 	unsigned int uart2clkctrl;	/* offset 0x70 */
156d88bc042STom Rini 	unsigned int uart3clkctrl;	/* offset 0x74 */
157d88bc042STom Rini 	unsigned int uart4clkctrl;	/* offset 0x78 */
158d88bc042STom Rini 	unsigned int timer7clkctrl;	/* offset 0x7C */
1595655108aSChandan Nath 	unsigned int timer2clkctrl;	/* offset 0x80 */
160d88bc042STom Rini 	unsigned int timer3clkctrl;	/* offset 0x84 */
161d88bc042STom Rini 	unsigned int timer4clkctrl;	/* offset 0x88 */
162d88bc042STom Rini 	unsigned int resv4[8];
163d88bc042STom Rini 	unsigned int gpio1clkctrl;	/* offset 0xAC */
164fb072a3eSChandan Nath 	unsigned int gpio2clkctrl;	/* offset 0xB0 */
165d88bc042STom Rini 	unsigned int gpio3clkctrl;	/* offset 0xB4 */
166d88bc042STom Rini 	unsigned int resv5;
167d88bc042STom Rini 	unsigned int tpccclkctrl;	/* offset 0xBC */
168d88bc042STom Rini 	unsigned int dcan0clkctrl;	/* offset 0xC0 */
169d88bc042STom Rini 	unsigned int dcan1clkctrl;	/* offset 0xC4 */
170072cefe0SHannes Petermaier 	unsigned int resv6;
171072cefe0SHannes Petermaier 	unsigned int epwmss1clkctrl;	/* offset 0xCC */
1725655108aSChandan Nath 	unsigned int emiffwclkctrl;	/* offset 0xD0 */
17314c0158bSHeiko Schocher 	unsigned int epwmss0clkctrl;	/* offset 0xD4 */
17414c0158bSHeiko Schocher 	unsigned int epwmss2clkctrl;	/* offset 0xD8 */
1755655108aSChandan Nath 	unsigned int l3instrclkctrl;	/* offset 0xDC */
1765655108aSChandan Nath 	unsigned int l3clkctrl;		/* Offset 0xE0 */
17725b0a729SHannes Petermaier 	unsigned int resv8[2];
17825b0a729SHannes Petermaier 	unsigned int timer5clkctrl;	/* offset 0xEC */
17925b0a729SHannes Petermaier 	unsigned int timer6clkctrl;	/* offset 0xF0 */
180d88bc042STom Rini 	unsigned int mmc1clkctrl;	/* offset 0xF4 */
181d88bc042STom Rini 	unsigned int mmc2clkctrl;	/* offset 0xF8 */
182d88bc042STom Rini 	unsigned int resv9[8];
1835655108aSChandan Nath 	unsigned int l4hsclkstctrl;	/* offset 0x11C */
1845655108aSChandan Nath 	unsigned int l4hsclkctrl;	/* offset 0x120 */
185fb072a3eSChandan Nath 	unsigned int resv10[8];
186d88bc042STom Rini 	unsigned int cpswclkstctrl;	/* offset 0x144 */
18714c0158bSHeiko Schocher 	unsigned int lcdcclkstctrl;	/* offset 0x148 */
1885655108aSChandan Nath };
1897ca1b2a2SLokesh Vutla 
1907ca1b2a2SLokesh Vutla /* Encapsulating Display pll registers */
1917ca1b2a2SLokesh Vutla struct cm_dpll {
19225b0a729SHannes Petermaier 	unsigned int resv1;
19325b0a729SHannes Petermaier 	unsigned int clktimer7clk;	/* offset 0x04 */
1947ca1b2a2SLokesh Vutla 	unsigned int clktimer2clk;	/* offset 0x08 */
19525b0a729SHannes Petermaier 	unsigned int clktimer3clk;	/* offset 0x0C */
19625b0a729SHannes Petermaier 	unsigned int clktimer4clk;	/* offset 0x10 */
19725b0a729SHannes Petermaier 	unsigned int resv2;
19825b0a729SHannes Petermaier 	unsigned int clktimer5clk;	/* offset 0x18 */
19925b0a729SHannes Petermaier 	unsigned int clktimer6clk;	/* offset 0x1C */
20025b0a729SHannes Petermaier 	unsigned int resv3[2];
20125b0a729SHannes Petermaier 	unsigned int clktimer1clk;	/* offset 0x28 */
20225b0a729SHannes Petermaier 	unsigned int resv4[2];
2037ca1b2a2SLokesh Vutla 	unsigned int clklcdcpixelclk;	/* offset 0x34 */
2047ca1b2a2SLokesh Vutla };
205fc46bae2SJames Doublesin 
206fc46bae2SJames Doublesin struct prm_device_inst {
207fc46bae2SJames Doublesin 	unsigned int prm_rstctrl;
208fc46bae2SJames Doublesin 	unsigned int prm_rsttime;
209fc46bae2SJames Doublesin 	unsigned int prm_rstst;
210fc46bae2SJames Doublesin };
211c06e498aSLokesh Vutla #else
212c06e498aSLokesh Vutla /* Encapsulating core pll registers */
213c06e498aSLokesh Vutla struct cm_wkuppll {
214c06e498aSLokesh Vutla 	unsigned int resv0[136];
215c06e498aSLokesh Vutla 	unsigned int wkl4wkclkctrl;	/* offset 0x220 */
216fc2f15d2SKishon Vijay Abraham I 	unsigned int resv1[7];
217fc2f15d2SKishon Vijay Abraham I 	unsigned int usbphy0clkctrl;	/* offset 0x240 */
218fc2f15d2SKishon Vijay Abraham I 	unsigned int resv112;
219fc2f15d2SKishon Vijay Abraham I 	unsigned int usbphy1clkctrl;	/* offset 0x248 */
220fc2f15d2SKishon Vijay Abraham I 	unsigned int resv113[45];
221c06e498aSLokesh Vutla 	unsigned int wkclkstctrl;	/* offset 0x300 */
222c06e498aSLokesh Vutla 	unsigned int resv2[15];
223c06e498aSLokesh Vutla 	unsigned int wkup_i2c0ctrl;	/* offset 0x340 */
224c06e498aSLokesh Vutla 	unsigned int resv3;
225c06e498aSLokesh Vutla 	unsigned int wkup_uart0ctrl;	/* offset 0x348 */
226c06e498aSLokesh Vutla 	unsigned int resv4[5];
227c06e498aSLokesh Vutla 	unsigned int wkctrlclkctrl;	/* offset 0x360 */
228c06e498aSLokesh Vutla 	unsigned int resv5;
229c06e498aSLokesh Vutla 	unsigned int wkgpio0clkctrl;	/* offset 0x368 */
230c06e498aSLokesh Vutla 
231c06e498aSLokesh Vutla 	unsigned int resv6[109];
232c06e498aSLokesh Vutla 	unsigned int clkmoddpllcore;	/* offset 0x520 */
233c06e498aSLokesh Vutla 	unsigned int idlestdpllcore;	/* offset 0x524 */
234c06e498aSLokesh Vutla 	unsigned int resv61;
235c06e498aSLokesh Vutla 	unsigned int clkseldpllcore;	/* offset 0x52C */
236c06e498aSLokesh Vutla 	unsigned int resv7[2];
237c06e498aSLokesh Vutla 	unsigned int divm4dpllcore;	/* offset 0x538 */
238c06e498aSLokesh Vutla 	unsigned int divm5dpllcore;	/* offset 0x53C */
239c06e498aSLokesh Vutla 	unsigned int divm6dpllcore;	/* offset 0x540 */
240c06e498aSLokesh Vutla 
241c06e498aSLokesh Vutla 	unsigned int resv8[7];
242c06e498aSLokesh Vutla 	unsigned int clkmoddpllmpu;	/* offset 0x560 */
243c06e498aSLokesh Vutla 	unsigned int idlestdpllmpu;	/* offset 0x564 */
244c06e498aSLokesh Vutla 	unsigned int resv9;
245c06e498aSLokesh Vutla 	unsigned int clkseldpllmpu;	/* offset 0x56c */
246c06e498aSLokesh Vutla 	unsigned int divm2dpllmpu;	/* offset 0x570 */
247c06e498aSLokesh Vutla 
248c06e498aSLokesh Vutla 	unsigned int resv10[11];
249c06e498aSLokesh Vutla 	unsigned int clkmoddpllddr;	/* offset 0x5A0 */
250c06e498aSLokesh Vutla 	unsigned int idlestdpllddr;	/* offset 0x5A4 */
251c06e498aSLokesh Vutla 	unsigned int resv11;
252c06e498aSLokesh Vutla 	unsigned int clkseldpllddr;	/* offset 0x5AC */
253c06e498aSLokesh Vutla 	unsigned int divm2dpllddr;	/* offset 0x5B0 */
254c06e498aSLokesh Vutla 
255c06e498aSLokesh Vutla 	unsigned int resv12[11];
256c06e498aSLokesh Vutla 	unsigned int clkmoddpllper;	/* offset 0x5E0 */
257c06e498aSLokesh Vutla 	unsigned int idlestdpllper;	/* offset 0x5E4 */
258c06e498aSLokesh Vutla 	unsigned int resv13;
259c06e498aSLokesh Vutla 	unsigned int clkseldpllper;	/* offset 0x5EC */
260c06e498aSLokesh Vutla 	unsigned int divm2dpllper;	/* offset 0x5F0 */
261c06e498aSLokesh Vutla 	unsigned int resv14[8];
262c06e498aSLokesh Vutla 	unsigned int clkdcoldodpllper;	/* offset 0x614 */
263c06e498aSLokesh Vutla 
264c06e498aSLokesh Vutla 	unsigned int resv15[2];
265c06e498aSLokesh Vutla 	unsigned int clkmoddplldisp;	/* offset 0x620 */
266c06e498aSLokesh Vutla 	unsigned int resv16[2];
267c06e498aSLokesh Vutla 	unsigned int clkseldplldisp;	/* offset 0x62C */
268c06e498aSLokesh Vutla 	unsigned int divm2dplldisp;	/* offset 0x630 */
269c06e498aSLokesh Vutla };
270c06e498aSLokesh Vutla 
271c06e498aSLokesh Vutla /*
272c06e498aSLokesh Vutla  * Encapsulating peripheral functional clocks
273c06e498aSLokesh Vutla  * pll registers
274c06e498aSLokesh Vutla  */
275c06e498aSLokesh Vutla struct cm_perpll {
276c06e498aSLokesh Vutla 	unsigned int l3clkstctrl;	/* offset 0x00 */
277c06e498aSLokesh Vutla 	unsigned int resv0[7];
278c06e498aSLokesh Vutla 	unsigned int l3clkctrl;		/* Offset 0x20 */
279fc2f15d2SKishon Vijay Abraham I 	unsigned int resv112[7];
280c06e498aSLokesh Vutla 	unsigned int l3instrclkctrl;	/* offset 0x40 */
281c06e498aSLokesh Vutla 	unsigned int resv2[3];
282c06e498aSLokesh Vutla 	unsigned int ocmcramclkctrl;	/* offset 0x50 */
283c06e498aSLokesh Vutla 	unsigned int resv3[9];
284c06e498aSLokesh Vutla 	unsigned int tpccclkctrl;	/* offset 0x78 */
285c06e498aSLokesh Vutla 	unsigned int resv4;
286c06e498aSLokesh Vutla 	unsigned int tptc0clkctrl;	/* offset 0x80 */
287c06e498aSLokesh Vutla 
288c06e498aSLokesh Vutla 	unsigned int resv5[7];
289c06e498aSLokesh Vutla 	unsigned int l4hsclkctrl;	/* offset 0x0A0 */
290c06e498aSLokesh Vutla 	unsigned int resv6;
291c06e498aSLokesh Vutla 	unsigned int l4fwclkctrl;	/* offset 0x0A8 */
292c06e498aSLokesh Vutla 	unsigned int resv7[85];
293c06e498aSLokesh Vutla 	unsigned int l3sclkstctrl;	/* offset 0x200 */
294c06e498aSLokesh Vutla 	unsigned int resv8[7];
295c06e498aSLokesh Vutla 	unsigned int gpmcclkctrl;	/* offset 0x220 */
296c06e498aSLokesh Vutla 	unsigned int resv9[5];
297c06e498aSLokesh Vutla 	unsigned int mcasp0clkctrl;	/* offset 0x238 */
298c06e498aSLokesh Vutla 	unsigned int resv10;
299c06e498aSLokesh Vutla 	unsigned int mcasp1clkctrl;	/* offset 0x240 */
300c06e498aSLokesh Vutla 	unsigned int resv11;
301c06e498aSLokesh Vutla 	unsigned int mmc2clkctrl;	/* offset 0x248 */
302b56e71e2SSourav Poddar 	unsigned int resv12[3];
303b56e71e2SSourav Poddar 	unsigned int qspiclkctrl;       /* offset 0x258 */
304b56e71e2SSourav Poddar 	unsigned int resv121;
305c06e498aSLokesh Vutla 	unsigned int usb0clkctrl;	/* offset 0x260 */
306fc2f15d2SKishon Vijay Abraham I 	unsigned int resv122;
307fc2f15d2SKishon Vijay Abraham I 	unsigned int usb1clkctrl;	/* offset 0x268 */
308fc2f15d2SKishon Vijay Abraham I 	unsigned int resv13[101];
309c06e498aSLokesh Vutla 	unsigned int l4lsclkstctrl;	/* offset 0x400 */
310c06e498aSLokesh Vutla 	unsigned int resv14[7];
311c06e498aSLokesh Vutla 	unsigned int l4lsclkctrl;	/* offset 0x420 */
312c06e498aSLokesh Vutla 	unsigned int resv15;
313c06e498aSLokesh Vutla 	unsigned int dcan0clkctrl;	/* offset 0x428 */
314c06e498aSLokesh Vutla 	unsigned int resv16;
315c06e498aSLokesh Vutla 	unsigned int dcan1clkctrl;	/* offset 0x430 */
316c06e498aSLokesh Vutla 	unsigned int resv17[13];
317c06e498aSLokesh Vutla 	unsigned int elmclkctrl;	/* offset 0x468 */
318c06e498aSLokesh Vutla 
319c06e498aSLokesh Vutla 	unsigned int resv18[3];
320c06e498aSLokesh Vutla 	unsigned int gpio1clkctrl;	/* offset 0x478 */
321c06e498aSLokesh Vutla 	unsigned int resv19;
322c06e498aSLokesh Vutla 	unsigned int gpio2clkctrl;	/* offset 0x480 */
323c06e498aSLokesh Vutla 	unsigned int resv20;
324c06e498aSLokesh Vutla 	unsigned int gpio3clkctrl;	/* offset 0x488 */
325cd8341b7SDave Gerlach 	unsigned int resv41;
326cd8341b7SDave Gerlach 	unsigned int gpio4clkctrl;	/* offset 0x490 */
327cd8341b7SDave Gerlach 	unsigned int resv42;
328cd8341b7SDave Gerlach 	unsigned int gpio5clkctrl;	/* offset 0x498 */
329cd8341b7SDave Gerlach 	unsigned int resv21[3];
330c06e498aSLokesh Vutla 
331c06e498aSLokesh Vutla 	unsigned int i2c1clkctrl;	/* offset 0x4A8 */
332c06e498aSLokesh Vutla 	unsigned int resv22;
333c06e498aSLokesh Vutla 	unsigned int i2c2clkctrl;	/* offset 0x4B0 */
334c06e498aSLokesh Vutla 	unsigned int resv23[3];
335c06e498aSLokesh Vutla 	unsigned int mmc0clkctrl;	/* offset 0x4C0 */
336c06e498aSLokesh Vutla 	unsigned int resv24;
337c06e498aSLokesh Vutla 	unsigned int mmc1clkctrl;	/* offset 0x4C8 */
338c06e498aSLokesh Vutla 
339c06e498aSLokesh Vutla 	unsigned int resv25[13];
340c06e498aSLokesh Vutla 	unsigned int spi0clkctrl;	/* offset 0x500 */
341c06e498aSLokesh Vutla 	unsigned int resv26;
342c06e498aSLokesh Vutla 	unsigned int spi1clkctrl;	/* offset 0x508 */
343c06e498aSLokesh Vutla 	unsigned int resv27[9];
344c06e498aSLokesh Vutla 	unsigned int timer2clkctrl;	/* offset 0x530 */
345c06e498aSLokesh Vutla 	unsigned int resv28;
346c06e498aSLokesh Vutla 	unsigned int timer3clkctrl;	/* offset 0x538 */
347c06e498aSLokesh Vutla 	unsigned int resv29;
348c06e498aSLokesh Vutla 	unsigned int timer4clkctrl;	/* offset 0x540 */
349c06e498aSLokesh Vutla 	unsigned int resv30[5];
350c06e498aSLokesh Vutla 	unsigned int timer7clkctrl;	/* offset 0x558 */
351c06e498aSLokesh Vutla 
352c06e498aSLokesh Vutla 	unsigned int resv31[9];
353c06e498aSLokesh Vutla 	unsigned int uart1clkctrl;	/* offset 0x580 */
354c06e498aSLokesh Vutla 	unsigned int resv32;
355c06e498aSLokesh Vutla 	unsigned int uart2clkctrl;	/* offset 0x588 */
356c06e498aSLokesh Vutla 	unsigned int resv33;
357c06e498aSLokesh Vutla 	unsigned int uart3clkctrl;	/* offset 0x590 */
358c06e498aSLokesh Vutla 	unsigned int resv34;
359c06e498aSLokesh Vutla 	unsigned int uart4clkctrl;	/* offset 0x598 */
360c06e498aSLokesh Vutla 	unsigned int resv35;
361c06e498aSLokesh Vutla 	unsigned int uart5clkctrl;	/* offset 0x5A0 */
362fc2f15d2SKishon Vijay Abraham I 	unsigned int resv36[5];
363fc2f15d2SKishon Vijay Abraham I 	unsigned int usbphyocp2scp0clkctrl;	/* offset 0x5B8 */
364fc2f15d2SKishon Vijay Abraham I 	unsigned int resv361;
365fc2f15d2SKishon Vijay Abraham I 	unsigned int usbphyocp2scp1clkctrl;	/* offset 0x5C0 */
366fc2f15d2SKishon Vijay Abraham I 	unsigned int resv3611[79];
367c06e498aSLokesh Vutla 
368c06e498aSLokesh Vutla 	unsigned int emifclkstctrl;	/* offset 0x700 */
369fc2f15d2SKishon Vijay Abraham I 	unsigned int resv362[7];
370c06e498aSLokesh Vutla 	unsigned int emifclkctrl;	/* offset 0x720 */
371c06e498aSLokesh Vutla 	unsigned int resv37[3];
372c06e498aSLokesh Vutla 	unsigned int emiffwclkctrl;	/* offset 0x730 */
373c06e498aSLokesh Vutla 	unsigned int resv371;
374c06e498aSLokesh Vutla 	unsigned int otfaemifclkctrl;	/* offset 0x738 */
375c06e498aSLokesh Vutla 	unsigned int resv38[57];
376c06e498aSLokesh Vutla 	unsigned int lcdclkctrl;	/* offset 0x820 */
377c06e498aSLokesh Vutla 	unsigned int resv39[183];
378c06e498aSLokesh Vutla 	unsigned int cpswclkstctrl;	/* offset 0xB00 */
379c06e498aSLokesh Vutla 	unsigned int resv40[7];
380c06e498aSLokesh Vutla 	unsigned int cpgmac0clkctrl;	/* offset 0xB20 */
381c06e498aSLokesh Vutla };
3825655108aSChandan Nath 
383d3daba10SLokesh Vutla struct cm_device_inst {
384d3daba10SLokesh Vutla 	unsigned int cm_clkout1_ctrl;
385d3daba10SLokesh Vutla 	unsigned int cm_dll_ctrl;
386d3daba10SLokesh Vutla };
387d3daba10SLokesh Vutla 
388fc46bae2SJames Doublesin struct prm_device_inst {
389fc46bae2SJames Doublesin 	unsigned int prm_rstctrl;
390fc46bae2SJames Doublesin 	unsigned int prm_rstst;
391fc46bae2SJames Doublesin };
392fc46bae2SJames Doublesin 
3935655108aSChandan Nath struct cm_dpll {
3947ca1b2a2SLokesh Vutla 	unsigned int resv1;
3957ca1b2a2SLokesh Vutla 	unsigned int clktimer2clk;	/* offset 0x04 */
396bba379d4SSteve Kipisz 	unsigned int resv2[11];
397bba379d4SSteve Kipisz 	unsigned int clkselmacclk;	/* offset 0x34 */
3985655108aSChandan Nath };
3997ca1b2a2SLokesh Vutla #endif /* CONFIG_AM43XX */
4005655108aSChandan Nath 
401000820b5SVaibhav Hiremath /* Control Module RTC registers */
402000820b5SVaibhav Hiremath struct cm_rtc {
403000820b5SVaibhav Hiremath 	unsigned int rtcclkctrl;	/* offset 0x0 */
404000820b5SVaibhav Hiremath 	unsigned int clkstctrl;		/* offset 0x4 */
405000820b5SVaibhav Hiremath };
406000820b5SVaibhav Hiremath 
4075655108aSChandan Nath /* Timer 32 bit registers */
4085655108aSChandan Nath struct gptimer {
4095655108aSChandan Nath 	unsigned int tidr;		/* offset 0x00 */
410fb072a3eSChandan Nath 	unsigned char res1[12];
4115655108aSChandan Nath 	unsigned int tiocp_cfg;		/* offset 0x10 */
412fb072a3eSChandan Nath 	unsigned char res2[12];
4135655108aSChandan Nath 	unsigned int tier;		/* offset 0x20 */
4145655108aSChandan Nath 	unsigned int tistatr;		/* offset 0x24 */
4155655108aSChandan Nath 	unsigned int tistat;		/* offset 0x28 */
4165655108aSChandan Nath 	unsigned int tisr;		/* offset 0x2c */
4175655108aSChandan Nath 	unsigned int tcicr;		/* offset 0x30 */
4185655108aSChandan Nath 	unsigned int twer;		/* offset 0x34 */
4195655108aSChandan Nath 	unsigned int tclr;		/* offset 0x38 */
4205655108aSChandan Nath 	unsigned int tcrr;		/* offset 0x3c */
4215655108aSChandan Nath 	unsigned int tldr;		/* offset 0x40 */
4225655108aSChandan Nath 	unsigned int ttgr;		/* offset 0x44 */
4235655108aSChandan Nath 	unsigned int twpc;		/* offset 0x48 */
4245655108aSChandan Nath 	unsigned int tmar;		/* offset 0x4c */
4255655108aSChandan Nath 	unsigned int tcar1;		/* offset 0x50 */
4265655108aSChandan Nath 	unsigned int tscir;		/* offset 0x54 */
4275655108aSChandan Nath 	unsigned int tcar2;		/* offset 0x58 */
4285655108aSChandan Nath };
4295655108aSChandan Nath 
4305655108aSChandan Nath /* UART Registers */
4315655108aSChandan Nath struct uart_sys {
4325655108aSChandan Nath 	unsigned int resv1[21];
4335655108aSChandan Nath 	unsigned int uartsyscfg;	/* offset 0x54 */
4345655108aSChandan Nath 	unsigned int uartsyssts;	/* offset 0x58 */
4355655108aSChandan Nath };
4365655108aSChandan Nath 
4375655108aSChandan Nath /* VTP Registers */
4385655108aSChandan Nath struct vtp_reg {
4395655108aSChandan Nath 	unsigned int vtp0ctrlreg;
4405655108aSChandan Nath };
4415655108aSChandan Nath 
4425655108aSChandan Nath /* Control Status Register */
4435655108aSChandan Nath struct ctrl_stat {
4445655108aSChandan Nath 	unsigned int resv1[16];
4455655108aSChandan Nath 	unsigned int statusreg;		/* ofset 0x40 */
4466995a289SSatyanarayana, Sandhya 	unsigned int resv2[51];
4476995a289SSatyanarayana, Sandhya 	unsigned int secure_emif_sdram_config;	/* offset 0x0110 */
448cf04d032SLokesh Vutla 	unsigned int resv3[319];
449cf04d032SLokesh Vutla 	unsigned int dev_attr;
4505655108aSChandan Nath };
4513b97152bSSteve Sakoman 
4523b97152bSSteve Sakoman /* AM33XX GPIO registers */
4533b97152bSSteve Sakoman #define OMAP_GPIO_REVISION		0x0000
4543b97152bSSteve Sakoman #define OMAP_GPIO_SYSCONFIG		0x0010
4553b97152bSSteve Sakoman #define OMAP_GPIO_SYSSTATUS		0x0114
4563b97152bSSteve Sakoman #define OMAP_GPIO_IRQSTATUS1		0x002c
4573b97152bSSteve Sakoman #define OMAP_GPIO_IRQSTATUS2		0x0030
4589c410f7cSHeiko Schocher #define OMAP_GPIO_IRQSTATUS_SET_0	0x0034
4599c410f7cSHeiko Schocher #define OMAP_GPIO_IRQSTATUS_SET_1	0x0038
4603b97152bSSteve Sakoman #define OMAP_GPIO_CTRL			0x0130
4613b97152bSSteve Sakoman #define OMAP_GPIO_OE			0x0134
4623b97152bSSteve Sakoman #define OMAP_GPIO_DATAIN		0x0138
4633b97152bSSteve Sakoman #define OMAP_GPIO_DATAOUT		0x013c
4643b97152bSSteve Sakoman #define OMAP_GPIO_LEVELDETECT0		0x0140
4653b97152bSSteve Sakoman #define OMAP_GPIO_LEVELDETECT1		0x0144
4663b97152bSSteve Sakoman #define OMAP_GPIO_RISINGDETECT		0x0148
4673b97152bSSteve Sakoman #define OMAP_GPIO_FALLINGDETECT		0x014c
4683b97152bSSteve Sakoman #define OMAP_GPIO_DEBOUNCE_EN		0x0150
4693b97152bSSteve Sakoman #define OMAP_GPIO_DEBOUNCE_VAL		0x0154
4703b97152bSSteve Sakoman #define OMAP_GPIO_CLEARDATAOUT		0x0190
4713b97152bSSteve Sakoman #define OMAP_GPIO_SETDATAOUT		0x0194
4723b97152bSSteve Sakoman 
473e79cd8ebSChandan Nath /* Control Device Register */
4748038b497SCooper Jr., Franklin 
4758038b497SCooper Jr., Franklin  /* Control Device Register */
4768038b497SCooper Jr., Franklin #define MREQPRIO_0_SAB_INIT1_MASK	0xFFFFFF8F
4778038b497SCooper Jr., Franklin #define MREQPRIO_0_SAB_INIT0_MASK	0xFFFFFFF8
4788038b497SCooper Jr., Franklin #define MREQPRIO_1_DSS_MASK		0xFFFFFF8F
4798038b497SCooper Jr., Franklin 
480e79cd8ebSChandan Nath struct ctrl_dev {
481e79cd8ebSChandan Nath 	unsigned int deviceid;		/* offset 0x00 */
4827df5cf35SIlya Yanok 	unsigned int resv1[7];
4837df5cf35SIlya Yanok 	unsigned int usb_ctrl0;		/* offset 0x20 */
4847df5cf35SIlya Yanok 	unsigned int resv2;
4857df5cf35SIlya Yanok 	unsigned int usb_ctrl1;		/* offset 0x28 */
4867df5cf35SIlya Yanok 	unsigned int resv3;
487e79cd8ebSChandan Nath 	unsigned int macid0l;		/* offset 0x30 */
488e79cd8ebSChandan Nath 	unsigned int macid0h;		/* offset 0x34 */
489e79cd8ebSChandan Nath 	unsigned int macid1l;		/* offset 0x38 */
490e79cd8ebSChandan Nath 	unsigned int macid1h;		/* offset 0x3c */
4917df5cf35SIlya Yanok 	unsigned int resv4[4];
492e79cd8ebSChandan Nath 	unsigned int miisel;		/* offset 0x50 */
4938038b497SCooper Jr., Franklin 	unsigned int resv5[7];
4948038b497SCooper Jr., Franklin 	unsigned int mreqprio_0;	/* offset 0x70 */
4958038b497SCooper Jr., Franklin 	unsigned int mreqprio_1;	/* offset 0x74 */
4968038b497SCooper Jr., Franklin 	unsigned int resv6[97];
4975287946cSTom Rini 	unsigned int efuse_sma;		/* offset 0x1FC */
498e79cd8ebSChandan Nath };
499dafd4db3SHeiko Schocher 
5008038b497SCooper Jr., Franklin /* Bandwidth Limiter Portion of the L3Fast Configuration Register */
5018038b497SCooper Jr., Franklin #define BW_LIMITER_BW_FRAC_MASK         0xFFFFFFE0
5028038b497SCooper Jr., Franklin #define BW_LIMITER_BW_INT_MASK          0xFFFFFFF0
5038038b497SCooper Jr., Franklin #define BW_LIMITER_BW_WATERMARK_MASK    0xFFFFF800
5048038b497SCooper Jr., Franklin 
5058038b497SCooper Jr., Franklin struct l3f_cfg_bwlimiter {
5068038b497SCooper Jr., Franklin 	u32 padding0[2];
5078038b497SCooper Jr., Franklin 	u32 modena_init0_bw_fractional;
5088038b497SCooper Jr., Franklin 	u32 modena_init0_bw_integer;
5098038b497SCooper Jr., Franklin 	u32 modena_init0_watermark_0;
5108038b497SCooper Jr., Franklin };
5118038b497SCooper Jr., Franklin 
512dafd4db3SHeiko Schocher /* gmii_sel register defines */
513dafd4db3SHeiko Schocher #define GMII1_SEL_MII		0x0
514dafd4db3SHeiko Schocher #define GMII1_SEL_RMII		0x1
515dafd4db3SHeiko Schocher #define GMII1_SEL_RGMII		0x2
516dafd4db3SHeiko Schocher #define GMII2_SEL_MII		0x0
517dafd4db3SHeiko Schocher #define GMII2_SEL_RMII		0x4
518dafd4db3SHeiko Schocher #define GMII2_SEL_RGMII		0x8
519dafd4db3SHeiko Schocher #define RGMII1_IDMODE		BIT(4)
520dafd4db3SHeiko Schocher #define RGMII2_IDMODE		BIT(5)
521dafd4db3SHeiko Schocher #define RMII1_IO_CLK_EN		BIT(6)
522dafd4db3SHeiko Schocher #define RMII2_IO_CLK_EN		BIT(7)
523dafd4db3SHeiko Schocher 
524dafd4db3SHeiko Schocher #define MII_MODE_ENABLE		(GMII1_SEL_MII | GMII2_SEL_MII)
525dafd4db3SHeiko Schocher #define RMII_MODE_ENABLE        (GMII1_SEL_RMII | GMII2_SEL_RMII)
526dafd4db3SHeiko Schocher #define RGMII_MODE_ENABLE	(GMII1_SEL_RGMII | GMII2_SEL_RGMII)
527dafd4db3SHeiko Schocher #define RGMII_INT_DELAY		(RGMII1_IDMODE | RGMII2_IDMODE)
528dafd4db3SHeiko Schocher #define RMII_CHIPCKL_ENABLE     (RMII1_IO_CLK_EN | RMII2_IO_CLK_EN)
529dafd4db3SHeiko Schocher 
53014c0158bSHeiko Schocher /* PWMSS */
53114c0158bSHeiko Schocher struct pwmss_regs {
53214c0158bSHeiko Schocher 	unsigned int idver;
53314c0158bSHeiko Schocher 	unsigned int sysconfig;
53414c0158bSHeiko Schocher 	unsigned int clkconfig;
53514c0158bSHeiko Schocher 	unsigned int clkstatus;
53614c0158bSHeiko Schocher };
53714c0158bSHeiko Schocher #define ECAP_CLK_EN		BIT(0)
53814c0158bSHeiko Schocher #define ECAP_CLK_STOP_REQ	BIT(1)
539f61c9bcdStomas.melin@vaisala.com #define EPWM_CLK_EN		BIT(8)
540f61c9bcdStomas.melin@vaisala.com #define EPWM_CLK_STOP_REQ	BIT(9)
54114c0158bSHeiko Schocher 
54214c0158bSHeiko Schocher struct pwmss_ecap_regs {
54314c0158bSHeiko Schocher 	unsigned int tsctr;
54414c0158bSHeiko Schocher 	unsigned int ctrphs;
54514c0158bSHeiko Schocher 	unsigned int cap1;
54614c0158bSHeiko Schocher 	unsigned int cap2;
54714c0158bSHeiko Schocher 	unsigned int cap3;
54814c0158bSHeiko Schocher 	unsigned int cap4;
54914c0158bSHeiko Schocher 	unsigned int resv1[4];
55014c0158bSHeiko Schocher 	unsigned short ecctl1;
55114c0158bSHeiko Schocher 	unsigned short ecctl2;
55214c0158bSHeiko Schocher };
55314c0158bSHeiko Schocher 
554f61c9bcdStomas.melin@vaisala.com struct pwmss_epwm_regs {
555f61c9bcdStomas.melin@vaisala.com 	unsigned short tbctl;
556f61c9bcdStomas.melin@vaisala.com 	unsigned short tbsts;
557f61c9bcdStomas.melin@vaisala.com 	unsigned short tbphshr;
558f61c9bcdStomas.melin@vaisala.com 	unsigned short tbphs;
559f61c9bcdStomas.melin@vaisala.com 	unsigned short tbcnt;
560f61c9bcdStomas.melin@vaisala.com 	unsigned short tbprd;
561f61c9bcdStomas.melin@vaisala.com 	unsigned short res1;
562f61c9bcdStomas.melin@vaisala.com 	unsigned short cmpctl;
563f61c9bcdStomas.melin@vaisala.com 	unsigned short cmpahr;
564f61c9bcdStomas.melin@vaisala.com 	unsigned short cmpa;
565f61c9bcdStomas.melin@vaisala.com 	unsigned short cmpb;
566f61c9bcdStomas.melin@vaisala.com 	unsigned short aqctla;
567f61c9bcdStomas.melin@vaisala.com 	unsigned short aqctlb;
568f61c9bcdStomas.melin@vaisala.com 	unsigned short aqsfrc;
569f61c9bcdStomas.melin@vaisala.com 	unsigned short aqcsfrc;
570f61c9bcdStomas.melin@vaisala.com 	unsigned short dbctl;
571f61c9bcdStomas.melin@vaisala.com 	unsigned short dbred;
572f61c9bcdStomas.melin@vaisala.com 	unsigned short dbfed;
573f61c9bcdStomas.melin@vaisala.com 	unsigned short tzsel;
574f61c9bcdStomas.melin@vaisala.com 	unsigned short tzctl;
575f61c9bcdStomas.melin@vaisala.com 	unsigned short tzflg;
576f61c9bcdStomas.melin@vaisala.com 	unsigned short tzclr;
577f61c9bcdStomas.melin@vaisala.com 	unsigned short tzfrc;
578f61c9bcdStomas.melin@vaisala.com 	unsigned short etsel;
579f61c9bcdStomas.melin@vaisala.com 	unsigned short etps;
580f61c9bcdStomas.melin@vaisala.com 	unsigned short etflg;
581f61c9bcdStomas.melin@vaisala.com 	unsigned short etclr;
582f61c9bcdStomas.melin@vaisala.com 	unsigned short etfrc;
583f61c9bcdStomas.melin@vaisala.com 	unsigned short pcctl;
584f61c9bcdStomas.melin@vaisala.com 	unsigned int res2[66];
585f61c9bcdStomas.melin@vaisala.com 	unsigned short hrcnfg;
586f61c9bcdStomas.melin@vaisala.com };
587f61c9bcdStomas.melin@vaisala.com 
58814c0158bSHeiko Schocher /* Capture Control register 2 */
58914c0158bSHeiko Schocher #define ECTRL2_SYNCOSEL_MASK	(0x03 << 6)
59014c0158bSHeiko Schocher #define ECTRL2_MDSL_ECAP	BIT(9)
59114c0158bSHeiko Schocher #define ECTRL2_CTRSTP_FREERUN	BIT(4)
59214c0158bSHeiko Schocher #define ECTRL2_PLSL_LOW		BIT(10)
59314c0158bSHeiko Schocher #define ECTRL2_SYNC_EN		BIT(5)
59414c0158bSHeiko Schocher 
5955655108aSChandan Nath #endif /* __ASSEMBLY__ */
5965655108aSChandan Nath #endif /* __KERNEL_STRICT_NAMES */
5975655108aSChandan Nath 
5985655108aSChandan Nath #endif /* _AM33XX_CPU_H */
599