xref: /rk3399_rockchip-uboot/arch/arm/include/asm/arch-am33xx/cpu.h (revision b56e71e2d41f4921ba69531978d4857bbd9366fa)
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 BIT(x)				(1 << x)
215655108aSChandan Nath #define CL_BIT(x)			(0 << x)
225655108aSChandan Nath 
235655108aSChandan Nath /* Timer register bits */
245655108aSChandan Nath #define TCLR_ST				BIT(0)	/* Start=1 Stop=0 */
255655108aSChandan Nath #define TCLR_AR				BIT(1)	/* Auto reload */
265655108aSChandan Nath #define TCLR_PRE			BIT(5)	/* Pre-scaler enable */
275655108aSChandan Nath #define TCLR_PTV_SHIFT			(2)	/* Pre-scaler shift value */
285655108aSChandan Nath #define TCLR_PRE_DISABLE		CL_BIT(5) /* Pre-scalar disable */
295655108aSChandan Nath 
305655108aSChandan Nath /* device type */
315655108aSChandan Nath #define DEVICE_MASK			(BIT(8) | BIT(9) | BIT(10))
325655108aSChandan Nath #define TST_DEVICE			0x0
335655108aSChandan Nath #define EMU_DEVICE			0x1
345655108aSChandan Nath #define HS_DEVICE			0x2
355655108aSChandan Nath #define GP_DEVICE			0x3
365655108aSChandan Nath 
378b029f22SMatt Porter /* cpu-id for AM33XX and TI81XX family */
385655108aSChandan Nath #define AM335X				0xB944
398b029f22SMatt Porter #define TI81XX				0xB81E
408b029f22SMatt Porter #define DEVICE_ID			(CTRL_BASE + 0x0600)
415287946cSTom Rini #define DEVICE_ID_MASK			0x1FFF
425287946cSTom Rini 
435287946cSTom Rini /* MPU max frequencies */
445287946cSTom Rini #define AM335X_ZCZ_300			0x1FEF
455287946cSTom Rini #define AM335X_ZCZ_600			0x1FAF
465287946cSTom Rini #define AM335X_ZCZ_720			0x1F2F
475287946cSTom Rini #define AM335X_ZCZ_800			0x1E2F
485287946cSTom Rini #define AM335X_ZCZ_1000			0x1C2F
495287946cSTom Rini #define AM335X_ZCE_300			0x1FDF
505287946cSTom Rini #define AM335X_ZCE_600			0x1F9F
515655108aSChandan Nath 
525655108aSChandan Nath /* This gives the status of the boot mode pins on the evm */
535655108aSChandan Nath #define SYSBOOT_MASK			(BIT(0) | BIT(1) | BIT(2)\
545655108aSChandan Nath 					| BIT(3) | BIT(4))
555655108aSChandan Nath 
565655108aSChandan Nath #define PRM_RSTCTRL_RESET		0x01
5770239507SLokesh Vutla #define PRM_RSTST_WARM_RESET_MASK	0x232
585655108aSChandan Nath 
59988ea355SHeiko Schocher /*
60988ea355SHeiko Schocher  * Watchdog:
61988ea355SHeiko Schocher  * Using the prescaler, the OMAP watchdog could go for many
62988ea355SHeiko Schocher  * months before firing.  These limits work without scaling,
63988ea355SHeiko Schocher  * with the 60 second default assumed by most tools and docs.
64988ea355SHeiko Schocher  */
65988ea355SHeiko Schocher #define TIMER_MARGIN_MAX	(24 * 60 * 60)	/* 1 day */
66988ea355SHeiko Schocher #define TIMER_MARGIN_DEFAULT	60	/* 60 secs */
67988ea355SHeiko Schocher #define TIMER_MARGIN_MIN	1
68988ea355SHeiko Schocher 
69988ea355SHeiko Schocher #define PTV			0	/* prescale */
70988ea355SHeiko Schocher #define GET_WLDR_VAL(secs)	(0xffffffff - ((secs) * (32768/(1<<PTV))) + 1)
71988ea355SHeiko Schocher #define WDT_WWPS_PEND_WCLR	BIT(0)
72988ea355SHeiko Schocher #define WDT_WWPS_PEND_WLDR	BIT(2)
73988ea355SHeiko Schocher #define WDT_WWPS_PEND_WTGR	BIT(3)
74988ea355SHeiko Schocher #define WDT_WWPS_PEND_WSPR	BIT(4)
75988ea355SHeiko Schocher 
76988ea355SHeiko Schocher #define WDT_WCLR_PRE		BIT(5)
77988ea355SHeiko Schocher #define WDT_WCLR_PTV_OFF	2
78988ea355SHeiko Schocher 
795655108aSChandan Nath #ifndef __KERNEL_STRICT_NAMES
805655108aSChandan Nath #ifndef __ASSEMBLY__
818eb16b7fSIlya Yanok struct gpmc_cs {
828eb16b7fSIlya Yanok 	u32 config1;		/* 0x00 */
838eb16b7fSIlya Yanok 	u32 config2;		/* 0x04 */
848eb16b7fSIlya Yanok 	u32 config3;		/* 0x08 */
858eb16b7fSIlya Yanok 	u32 config4;		/* 0x0C */
868eb16b7fSIlya Yanok 	u32 config5;		/* 0x10 */
878eb16b7fSIlya Yanok 	u32 config6;		/* 0x14 */
888eb16b7fSIlya Yanok 	u32 config7;		/* 0x18 */
898eb16b7fSIlya Yanok 	u32 nand_cmd;		/* 0x1C */
908eb16b7fSIlya Yanok 	u32 nand_adr;		/* 0x20 */
918eb16b7fSIlya Yanok 	u32 nand_dat;		/* 0x24 */
928eb16b7fSIlya Yanok 	u8 res[8];		/* blow up to 0x30 byte */
938eb16b7fSIlya Yanok };
948eb16b7fSIlya Yanok 
958eb16b7fSIlya Yanok struct bch_res_0_3 {
968eb16b7fSIlya Yanok 	u32 bch_result_x[4];
978eb16b7fSIlya Yanok };
988eb16b7fSIlya Yanok 
998eb16b7fSIlya Yanok struct gpmc {
1008eb16b7fSIlya Yanok 	u8 res1[0x10];
1018eb16b7fSIlya Yanok 	u32 sysconfig;		/* 0x10 */
1028eb16b7fSIlya Yanok 	u8 res2[0x4];
1038eb16b7fSIlya Yanok 	u32 irqstatus;		/* 0x18 */
1048eb16b7fSIlya Yanok 	u32 irqenable;		/* 0x1C */
1058eb16b7fSIlya Yanok 	u8 res3[0x20];
1068eb16b7fSIlya Yanok 	u32 timeout_control;	/* 0x40 */
1078eb16b7fSIlya Yanok 	u8 res4[0xC];
1088eb16b7fSIlya Yanok 	u32 config;		/* 0x50 */
1098eb16b7fSIlya Yanok 	u32 status;		/* 0x54 */
1108eb16b7fSIlya Yanok 	u8 res5[0x8];		/* 0x58 */
1118eb16b7fSIlya Yanok 	struct gpmc_cs cs[8];	/* 0x60, 0x90, .. */
1128eb16b7fSIlya Yanok 	u8 res6[0x14];		/* 0x1E0 */
1138eb16b7fSIlya Yanok 	u32 ecc_config;		/* 0x1F4 */
1148eb16b7fSIlya Yanok 	u32 ecc_control;	/* 0x1F8 */
1158eb16b7fSIlya Yanok 	u32 ecc_size_config;	/* 0x1FC */
1168eb16b7fSIlya Yanok 	u32 ecc1_result;	/* 0x200 */
1178eb16b7fSIlya Yanok 	u32 ecc2_result;	/* 0x204 */
1188eb16b7fSIlya Yanok 	u32 ecc3_result;	/* 0x208 */
1198eb16b7fSIlya Yanok 	u32 ecc4_result;	/* 0x20C */
1208eb16b7fSIlya Yanok 	u32 ecc5_result;	/* 0x210 */
1218eb16b7fSIlya Yanok 	u32 ecc6_result;	/* 0x214 */
1228eb16b7fSIlya Yanok 	u32 ecc7_result;	/* 0x218 */
1238eb16b7fSIlya Yanok 	u32 ecc8_result;	/* 0x21C */
1248eb16b7fSIlya Yanok 	u32 ecc9_result;	/* 0x220 */
1258eb16b7fSIlya Yanok 	u8 res7[12];		/* 0x224 */
1268eb16b7fSIlya Yanok 	u32 testmomde_ctrl;	/* 0x230 */
1278eb16b7fSIlya Yanok 	u8 res8[12];		/* 0x234 */
1288eb16b7fSIlya Yanok 	struct bch_res_0_3 bch_result_0_3[2];	/* 0x240 */
1298eb16b7fSIlya Yanok };
1308eb16b7fSIlya Yanok 
1318eb16b7fSIlya Yanok /* Used for board specific gpmc initialization */
1328eb16b7fSIlya Yanok extern struct gpmc *gpmc_cfg;
1338eb16b7fSIlya Yanok 
134c06e498aSLokesh Vutla #ifndef CONFIG_AM43XX
1355655108aSChandan Nath /* Encapsulating core pll registers */
1365655108aSChandan Nath struct cm_wkuppll {
1375655108aSChandan Nath 	unsigned int wkclkstctrl;	/* offset 0x00 */
1385655108aSChandan Nath 	unsigned int wkctrlclkctrl;	/* offset 0x04 */
139d88bc042STom Rini 	unsigned int wkgpio0clkctrl;	/* offset 0x08 */
1405655108aSChandan Nath 	unsigned int wkl4wkclkctrl;	/* offset 0x0c */
1415655108aSChandan Nath 	unsigned int resv2[4];
1425655108aSChandan Nath 	unsigned int idlestdpllmpu;	/* offset 0x20 */
1435655108aSChandan Nath 	unsigned int resv3[2];
1445655108aSChandan Nath 	unsigned int clkseldpllmpu;	/* offset 0x2c */
1455655108aSChandan Nath 	unsigned int resv4[1];
1465655108aSChandan Nath 	unsigned int idlestdpllddr;	/* offset 0x34 */
1475655108aSChandan Nath 	unsigned int resv5[2];
1485655108aSChandan Nath 	unsigned int clkseldpllddr;	/* offset 0x40 */
1495655108aSChandan Nath 	unsigned int resv6[4];
1505655108aSChandan Nath 	unsigned int clkseldplldisp;	/* offset 0x54 */
1515655108aSChandan Nath 	unsigned int resv7[1];
1525655108aSChandan Nath 	unsigned int idlestdpllcore;	/* offset 0x5c */
1535655108aSChandan Nath 	unsigned int resv8[2];
1545655108aSChandan Nath 	unsigned int clkseldpllcore;	/* offset 0x68 */
1555655108aSChandan Nath 	unsigned int resv9[1];
1565655108aSChandan Nath 	unsigned int idlestdpllper;	/* offset 0x70 */
1577df5cf35SIlya Yanok 	unsigned int resv10[2];
1587df5cf35SIlya Yanok 	unsigned int clkdcoldodpllper;	/* offset 0x7c */
1595655108aSChandan Nath 	unsigned int divm4dpllcore;	/* offset 0x80 */
1605655108aSChandan Nath 	unsigned int divm5dpllcore;	/* offset 0x84 */
1615655108aSChandan Nath 	unsigned int clkmoddpllmpu;	/* offset 0x88 */
1625655108aSChandan Nath 	unsigned int clkmoddpllper;	/* offset 0x8c */
1635655108aSChandan Nath 	unsigned int clkmoddpllcore;	/* offset 0x90 */
1645655108aSChandan Nath 	unsigned int clkmoddpllddr;	/* offset 0x94 */
1655655108aSChandan Nath 	unsigned int clkmoddplldisp;	/* offset 0x98 */
1665655108aSChandan Nath 	unsigned int clkseldpllper;	/* offset 0x9c */
1675655108aSChandan Nath 	unsigned int divm2dpllddr;	/* offset 0xA0 */
1685655108aSChandan Nath 	unsigned int divm2dplldisp;	/* offset 0xA4 */
1695655108aSChandan Nath 	unsigned int divm2dpllmpu;	/* offset 0xA8 */
1705655108aSChandan Nath 	unsigned int divm2dpllper;	/* offset 0xAC */
1715655108aSChandan Nath 	unsigned int resv11[1];
1725655108aSChandan Nath 	unsigned int wkup_uart0ctrl;	/* offset 0xB4 */
173b4116edeSPatil, Rachna 	unsigned int wkup_i2c0ctrl;	/* offset 0xB8 */
174b4116edeSPatil, Rachna 	unsigned int resv12[7];
1755655108aSChandan Nath 	unsigned int divm6dpllcore;	/* offset 0xD8 */
1765655108aSChandan Nath };
1775655108aSChandan Nath 
1785655108aSChandan Nath /**
1795655108aSChandan Nath  * Encapsulating peripheral functional clocks
1805655108aSChandan Nath  * pll registers
1815655108aSChandan Nath  */
1825655108aSChandan Nath struct cm_perpll {
1835655108aSChandan Nath 	unsigned int l4lsclkstctrl;	/* offset 0x00 */
1845655108aSChandan Nath 	unsigned int l3sclkstctrl;	/* offset 0x04 */
1855655108aSChandan Nath 	unsigned int l4fwclkstctrl;	/* offset 0x08 */
1865655108aSChandan Nath 	unsigned int l3clkstctrl;	/* offset 0x0c */
187fb072a3eSChandan Nath 	unsigned int resv1;
188fb072a3eSChandan Nath 	unsigned int cpgmac0clkctrl;	/* offset 0x14 */
189d88bc042STom Rini 	unsigned int lcdclkctrl;	/* offset 0x18 */
190d88bc042STom Rini 	unsigned int usb0clkctrl;	/* offset 0x1C */
191d88bc042STom Rini 	unsigned int resv2;
192d88bc042STom Rini 	unsigned int tptc0clkctrl;	/* offset 0x24 */
1935655108aSChandan Nath 	unsigned int emifclkctrl;	/* offset 0x28 */
1945655108aSChandan Nath 	unsigned int ocmcramclkctrl;	/* offset 0x2c */
195fb072a3eSChandan Nath 	unsigned int gpmcclkctrl;	/* offset 0x30 */
196d88bc042STom Rini 	unsigned int mcasp0clkctrl;	/* offset 0x34 */
197d88bc042STom Rini 	unsigned int uart5clkctrl;	/* offset 0x38 */
198fb072a3eSChandan Nath 	unsigned int mmc0clkctrl;	/* offset 0x3C */
199fb072a3eSChandan Nath 	unsigned int elmclkctrl;	/* offset 0x40 */
200fb072a3eSChandan Nath 	unsigned int i2c2clkctrl;	/* offset 0x44 */
201fb072a3eSChandan Nath 	unsigned int i2c1clkctrl;	/* offset 0x48 */
202fb072a3eSChandan Nath 	unsigned int spi0clkctrl;	/* offset 0x4C */
203fb072a3eSChandan Nath 	unsigned int spi1clkctrl;	/* offset 0x50 */
204d88bc042STom Rini 	unsigned int resv3[3];
2055655108aSChandan Nath 	unsigned int l4lsclkctrl;	/* offset 0x60 */
2065655108aSChandan Nath 	unsigned int l4fwclkctrl;	/* offset 0x64 */
207d88bc042STom Rini 	unsigned int mcasp1clkctrl;	/* offset 0x68 */
208d88bc042STom Rini 	unsigned int uart1clkctrl;	/* offset 0x6C */
209d88bc042STom Rini 	unsigned int uart2clkctrl;	/* offset 0x70 */
210d88bc042STom Rini 	unsigned int uart3clkctrl;	/* offset 0x74 */
211d88bc042STom Rini 	unsigned int uart4clkctrl;	/* offset 0x78 */
212d88bc042STom Rini 	unsigned int timer7clkctrl;	/* offset 0x7C */
2135655108aSChandan Nath 	unsigned int timer2clkctrl;	/* offset 0x80 */
214d88bc042STom Rini 	unsigned int timer3clkctrl;	/* offset 0x84 */
215d88bc042STom Rini 	unsigned int timer4clkctrl;	/* offset 0x88 */
216d88bc042STom Rini 	unsigned int resv4[8];
217d88bc042STom Rini 	unsigned int gpio1clkctrl;	/* offset 0xAC */
218fb072a3eSChandan Nath 	unsigned int gpio2clkctrl;	/* offset 0xB0 */
219d88bc042STom Rini 	unsigned int gpio3clkctrl;	/* offset 0xB4 */
220d88bc042STom Rini 	unsigned int resv5;
221d88bc042STom Rini 	unsigned int tpccclkctrl;	/* offset 0xBC */
222d88bc042STom Rini 	unsigned int dcan0clkctrl;	/* offset 0xC0 */
223d88bc042STom Rini 	unsigned int dcan1clkctrl;	/* offset 0xC4 */
224d88bc042STom Rini 	unsigned int resv6[2];
2255655108aSChandan Nath 	unsigned int emiffwclkctrl;	/* offset 0xD0 */
22614c0158bSHeiko Schocher 	unsigned int epwmss0clkctrl;	/* offset 0xD4 */
22714c0158bSHeiko Schocher 	unsigned int epwmss2clkctrl;	/* offset 0xD8 */
2285655108aSChandan Nath 	unsigned int l3instrclkctrl;	/* offset 0xDC */
2295655108aSChandan Nath 	unsigned int l3clkctrl;		/* Offset 0xE0 */
230d88bc042STom Rini 	unsigned int resv8[4];
231d88bc042STom Rini 	unsigned int mmc1clkctrl;	/* offset 0xF4 */
232d88bc042STom Rini 	unsigned int mmc2clkctrl;	/* offset 0xF8 */
233d88bc042STom Rini 	unsigned int resv9[8];
2345655108aSChandan Nath 	unsigned int l4hsclkstctrl;	/* offset 0x11C */
2355655108aSChandan Nath 	unsigned int l4hsclkctrl;	/* offset 0x120 */
236fb072a3eSChandan Nath 	unsigned int resv10[8];
237d88bc042STom Rini 	unsigned int cpswclkstctrl;	/* offset 0x144 */
23814c0158bSHeiko Schocher 	unsigned int lcdcclkstctrl;	/* offset 0x148 */
2395655108aSChandan Nath };
2407ca1b2a2SLokesh Vutla 
2417ca1b2a2SLokesh Vutla /* Encapsulating Display pll registers */
2427ca1b2a2SLokesh Vutla struct cm_dpll {
2437ca1b2a2SLokesh Vutla 	unsigned int resv1[2];
2447ca1b2a2SLokesh Vutla 	unsigned int clktimer2clk;	/* offset 0x08 */
2457ca1b2a2SLokesh Vutla 	unsigned int resv2[10];
2467ca1b2a2SLokesh Vutla 	unsigned int clklcdcpixelclk;	/* offset 0x34 */
2477ca1b2a2SLokesh Vutla };
248c06e498aSLokesh Vutla #else
249c06e498aSLokesh Vutla /* Encapsulating core pll registers */
250c06e498aSLokesh Vutla struct cm_wkuppll {
251c06e498aSLokesh Vutla 	unsigned int resv0[136];
252c06e498aSLokesh Vutla 	unsigned int wkl4wkclkctrl;	/* offset 0x220 */
253c06e498aSLokesh Vutla 	unsigned int resv1[55];
254c06e498aSLokesh Vutla 	unsigned int wkclkstctrl;	/* offset 0x300 */
255c06e498aSLokesh Vutla 	unsigned int resv2[15];
256c06e498aSLokesh Vutla 	unsigned int wkup_i2c0ctrl;	/* offset 0x340 */
257c06e498aSLokesh Vutla 	unsigned int resv3;
258c06e498aSLokesh Vutla 	unsigned int wkup_uart0ctrl;	/* offset 0x348 */
259c06e498aSLokesh Vutla 	unsigned int resv4[5];
260c06e498aSLokesh Vutla 	unsigned int wkctrlclkctrl;	/* offset 0x360 */
261c06e498aSLokesh Vutla 	unsigned int resv5;
262c06e498aSLokesh Vutla 	unsigned int wkgpio0clkctrl;	/* offset 0x368 */
263c06e498aSLokesh Vutla 
264c06e498aSLokesh Vutla 	unsigned int resv6[109];
265c06e498aSLokesh Vutla 	unsigned int clkmoddpllcore;	/* offset 0x520 */
266c06e498aSLokesh Vutla 	unsigned int idlestdpllcore;	/* offset 0x524 */
267c06e498aSLokesh Vutla 	unsigned int resv61;
268c06e498aSLokesh Vutla 	unsigned int clkseldpllcore;	/* offset 0x52C */
269c06e498aSLokesh Vutla 	unsigned int resv7[2];
270c06e498aSLokesh Vutla 	unsigned int divm4dpllcore;	/* offset 0x538 */
271c06e498aSLokesh Vutla 	unsigned int divm5dpllcore;	/* offset 0x53C */
272c06e498aSLokesh Vutla 	unsigned int divm6dpllcore;	/* offset 0x540 */
273c06e498aSLokesh Vutla 
274c06e498aSLokesh Vutla 	unsigned int resv8[7];
275c06e498aSLokesh Vutla 	unsigned int clkmoddpllmpu;	/* offset 0x560 */
276c06e498aSLokesh Vutla 	unsigned int idlestdpllmpu;	/* offset 0x564 */
277c06e498aSLokesh Vutla 	unsigned int resv9;
278c06e498aSLokesh Vutla 	unsigned int clkseldpllmpu;	/* offset 0x56c */
279c06e498aSLokesh Vutla 	unsigned int divm2dpllmpu;	/* offset 0x570 */
280c06e498aSLokesh Vutla 
281c06e498aSLokesh Vutla 	unsigned int resv10[11];
282c06e498aSLokesh Vutla 	unsigned int clkmoddpllddr;	/* offset 0x5A0 */
283c06e498aSLokesh Vutla 	unsigned int idlestdpllddr;	/* offset 0x5A4 */
284c06e498aSLokesh Vutla 	unsigned int resv11;
285c06e498aSLokesh Vutla 	unsigned int clkseldpllddr;	/* offset 0x5AC */
286c06e498aSLokesh Vutla 	unsigned int divm2dpllddr;	/* offset 0x5B0 */
287c06e498aSLokesh Vutla 
288c06e498aSLokesh Vutla 	unsigned int resv12[11];
289c06e498aSLokesh Vutla 	unsigned int clkmoddpllper;	/* offset 0x5E0 */
290c06e498aSLokesh Vutla 	unsigned int idlestdpllper;	/* offset 0x5E4 */
291c06e498aSLokesh Vutla 	unsigned int resv13;
292c06e498aSLokesh Vutla 	unsigned int clkseldpllper;	/* offset 0x5EC */
293c06e498aSLokesh Vutla 	unsigned int divm2dpllper;	/* offset 0x5F0 */
294c06e498aSLokesh Vutla 	unsigned int resv14[8];
295c06e498aSLokesh Vutla 	unsigned int clkdcoldodpllper;	/* offset 0x614 */
296c06e498aSLokesh Vutla 
297c06e498aSLokesh Vutla 	unsigned int resv15[2];
298c06e498aSLokesh Vutla 	unsigned int clkmoddplldisp;	/* offset 0x620 */
299c06e498aSLokesh Vutla 	unsigned int resv16[2];
300c06e498aSLokesh Vutla 	unsigned int clkseldplldisp;	/* offset 0x62C */
301c06e498aSLokesh Vutla 	unsigned int divm2dplldisp;	/* offset 0x630 */
302c06e498aSLokesh Vutla };
303c06e498aSLokesh Vutla 
304c06e498aSLokesh Vutla /*
305c06e498aSLokesh Vutla  * Encapsulating peripheral functional clocks
306c06e498aSLokesh Vutla  * pll registers
307c06e498aSLokesh Vutla  */
308c06e498aSLokesh Vutla struct cm_perpll {
309c06e498aSLokesh Vutla 	unsigned int l3clkstctrl;	/* offset 0x00 */
310c06e498aSLokesh Vutla 	unsigned int resv0[7];
311c06e498aSLokesh Vutla 	unsigned int l3clkctrl;		/* Offset 0x20 */
312c06e498aSLokesh Vutla 	unsigned int resv1[7];
313c06e498aSLokesh Vutla 	unsigned int l3instrclkctrl;	/* offset 0x40 */
314c06e498aSLokesh Vutla 	unsigned int resv2[3];
315c06e498aSLokesh Vutla 	unsigned int ocmcramclkctrl;	/* offset 0x50 */
316c06e498aSLokesh Vutla 	unsigned int resv3[9];
317c06e498aSLokesh Vutla 	unsigned int tpccclkctrl;	/* offset 0x78 */
318c06e498aSLokesh Vutla 	unsigned int resv4;
319c06e498aSLokesh Vutla 	unsigned int tptc0clkctrl;	/* offset 0x80 */
320c06e498aSLokesh Vutla 
321c06e498aSLokesh Vutla 	unsigned int resv5[7];
322c06e498aSLokesh Vutla 	unsigned int l4hsclkctrl;	/* offset 0x0A0 */
323c06e498aSLokesh Vutla 	unsigned int resv6;
324c06e498aSLokesh Vutla 	unsigned int l4fwclkctrl;	/* offset 0x0A8 */
325c06e498aSLokesh Vutla 	unsigned int resv7[85];
326c06e498aSLokesh Vutla 	unsigned int l3sclkstctrl;	/* offset 0x200 */
327c06e498aSLokesh Vutla 	unsigned int resv8[7];
328c06e498aSLokesh Vutla 	unsigned int gpmcclkctrl;	/* offset 0x220 */
329c06e498aSLokesh Vutla 	unsigned int resv9[5];
330c06e498aSLokesh Vutla 	unsigned int mcasp0clkctrl;	/* offset 0x238 */
331c06e498aSLokesh Vutla 	unsigned int resv10;
332c06e498aSLokesh Vutla 	unsigned int mcasp1clkctrl;	/* offset 0x240 */
333c06e498aSLokesh Vutla 	unsigned int resv11;
334c06e498aSLokesh Vutla 	unsigned int mmc2clkctrl;	/* offset 0x248 */
335*b56e71e2SSourav Poddar 	unsigned int resv12[3];
336*b56e71e2SSourav Poddar 	unsigned int qspiclkctrl;       /* offset 0x258 */
337*b56e71e2SSourav Poddar 	unsigned int resv121;
338c06e498aSLokesh Vutla 	unsigned int usb0clkctrl;	/* offset 0x260 */
339c06e498aSLokesh Vutla 	unsigned int resv13[103];
340c06e498aSLokesh Vutla 	unsigned int l4lsclkstctrl;	/* offset 0x400 */
341c06e498aSLokesh Vutla 	unsigned int resv14[7];
342c06e498aSLokesh Vutla 	unsigned int l4lsclkctrl;	/* offset 0x420 */
343c06e498aSLokesh Vutla 	unsigned int resv15;
344c06e498aSLokesh Vutla 	unsigned int dcan0clkctrl;	/* offset 0x428 */
345c06e498aSLokesh Vutla 	unsigned int resv16;
346c06e498aSLokesh Vutla 	unsigned int dcan1clkctrl;	/* offset 0x430 */
347c06e498aSLokesh Vutla 	unsigned int resv17[13];
348c06e498aSLokesh Vutla 	unsigned int elmclkctrl;	/* offset 0x468 */
349c06e498aSLokesh Vutla 
350c06e498aSLokesh Vutla 	unsigned int resv18[3];
351c06e498aSLokesh Vutla 	unsigned int gpio1clkctrl;	/* offset 0x478 */
352c06e498aSLokesh Vutla 	unsigned int resv19;
353c06e498aSLokesh Vutla 	unsigned int gpio2clkctrl;	/* offset 0x480 */
354c06e498aSLokesh Vutla 	unsigned int resv20;
355c06e498aSLokesh Vutla 	unsigned int gpio3clkctrl;	/* offset 0x488 */
356c06e498aSLokesh Vutla 	unsigned int resv21[7];
357c06e498aSLokesh Vutla 
358c06e498aSLokesh Vutla 	unsigned int i2c1clkctrl;	/* offset 0x4A8 */
359c06e498aSLokesh Vutla 	unsigned int resv22;
360c06e498aSLokesh Vutla 	unsigned int i2c2clkctrl;	/* offset 0x4B0 */
361c06e498aSLokesh Vutla 	unsigned int resv23[3];
362c06e498aSLokesh Vutla 	unsigned int mmc0clkctrl;	/* offset 0x4C0 */
363c06e498aSLokesh Vutla 	unsigned int resv24;
364c06e498aSLokesh Vutla 	unsigned int mmc1clkctrl;	/* offset 0x4C8 */
365c06e498aSLokesh Vutla 
366c06e498aSLokesh Vutla 	unsigned int resv25[13];
367c06e498aSLokesh Vutla 	unsigned int spi0clkctrl;	/* offset 0x500 */
368c06e498aSLokesh Vutla 	unsigned int resv26;
369c06e498aSLokesh Vutla 	unsigned int spi1clkctrl;	/* offset 0x508 */
370c06e498aSLokesh Vutla 	unsigned int resv27[9];
371c06e498aSLokesh Vutla 	unsigned int timer2clkctrl;	/* offset 0x530 */
372c06e498aSLokesh Vutla 	unsigned int resv28;
373c06e498aSLokesh Vutla 	unsigned int timer3clkctrl;	/* offset 0x538 */
374c06e498aSLokesh Vutla 	unsigned int resv29;
375c06e498aSLokesh Vutla 	unsigned int timer4clkctrl;	/* offset 0x540 */
376c06e498aSLokesh Vutla 	unsigned int resv30[5];
377c06e498aSLokesh Vutla 	unsigned int timer7clkctrl;	/* offset 0x558 */
378c06e498aSLokesh Vutla 
379c06e498aSLokesh Vutla 	unsigned int resv31[9];
380c06e498aSLokesh Vutla 	unsigned int uart1clkctrl;	/* offset 0x580 */
381c06e498aSLokesh Vutla 	unsigned int resv32;
382c06e498aSLokesh Vutla 	unsigned int uart2clkctrl;	/* offset 0x588 */
383c06e498aSLokesh Vutla 	unsigned int resv33;
384c06e498aSLokesh Vutla 	unsigned int uart3clkctrl;	/* offset 0x590 */
385c06e498aSLokesh Vutla 	unsigned int resv34;
386c06e498aSLokesh Vutla 	unsigned int uart4clkctrl;	/* offset 0x598 */
387c06e498aSLokesh Vutla 	unsigned int resv35;
388c06e498aSLokesh Vutla 	unsigned int uart5clkctrl;	/* offset 0x5A0 */
389c06e498aSLokesh Vutla 	unsigned int resv36[87];
390c06e498aSLokesh Vutla 
391c06e498aSLokesh Vutla 	unsigned int emifclkstctrl;	/* offset 0x700 */
392c06e498aSLokesh Vutla 	unsigned int resv361[7];
393c06e498aSLokesh Vutla 	unsigned int emifclkctrl;	/* offset 0x720 */
394c06e498aSLokesh Vutla 	unsigned int resv37[3];
395c06e498aSLokesh Vutla 	unsigned int emiffwclkctrl;	/* offset 0x730 */
396c06e498aSLokesh Vutla 	unsigned int resv371;
397c06e498aSLokesh Vutla 	unsigned int otfaemifclkctrl;	/* offset 0x738 */
398c06e498aSLokesh Vutla 	unsigned int resv38[57];
399c06e498aSLokesh Vutla 	unsigned int lcdclkctrl;	/* offset 0x820 */
400c06e498aSLokesh Vutla 	unsigned int resv39[183];
401c06e498aSLokesh Vutla 	unsigned int cpswclkstctrl;	/* offset 0xB00 */
402c06e498aSLokesh Vutla 	unsigned int resv40[7];
403c06e498aSLokesh Vutla 	unsigned int cpgmac0clkctrl;	/* offset 0xB20 */
404c06e498aSLokesh Vutla };
4055655108aSChandan Nath 
406d3daba10SLokesh Vutla struct cm_device_inst {
407d3daba10SLokesh Vutla 	unsigned int cm_clkout1_ctrl;
408d3daba10SLokesh Vutla 	unsigned int cm_dll_ctrl;
409d3daba10SLokesh Vutla };
410d3daba10SLokesh Vutla 
4115655108aSChandan Nath struct cm_dpll {
4127ca1b2a2SLokesh Vutla 	unsigned int resv1;
4137ca1b2a2SLokesh Vutla 	unsigned int clktimer2clk;	/* offset 0x04 */
4145655108aSChandan Nath };
4157ca1b2a2SLokesh Vutla #endif /* CONFIG_AM43XX */
4165655108aSChandan Nath 
417000820b5SVaibhav Hiremath /* Control Module RTC registers */
418000820b5SVaibhav Hiremath struct cm_rtc {
419000820b5SVaibhav Hiremath 	unsigned int rtcclkctrl;	/* offset 0x0 */
420000820b5SVaibhav Hiremath 	unsigned int clkstctrl;		/* offset 0x4 */
421000820b5SVaibhav Hiremath };
422000820b5SVaibhav Hiremath 
4235655108aSChandan Nath /* Watchdog timer registers */
4245655108aSChandan Nath struct wd_timer {
4255655108aSChandan Nath 	unsigned int resv1[4];
4265655108aSChandan Nath 	unsigned int wdtwdsc;	/* offset 0x010 */
4275655108aSChandan Nath 	unsigned int wdtwdst;	/* offset 0x014 */
4285655108aSChandan Nath 	unsigned int wdtwisr;	/* offset 0x018 */
4295655108aSChandan Nath 	unsigned int wdtwier;	/* offset 0x01C */
4305655108aSChandan Nath 	unsigned int wdtwwer;	/* offset 0x020 */
4315655108aSChandan Nath 	unsigned int wdtwclr;	/* offset 0x024 */
4325655108aSChandan Nath 	unsigned int wdtwcrr;	/* offset 0x028 */
4335655108aSChandan Nath 	unsigned int wdtwldr;	/* offset 0x02C */
4345655108aSChandan Nath 	unsigned int wdtwtgr;	/* offset 0x030 */
4355655108aSChandan Nath 	unsigned int wdtwwps;	/* offset 0x034 */
4365655108aSChandan Nath 	unsigned int resv2[3];
4375655108aSChandan Nath 	unsigned int wdtwdly;	/* offset 0x044 */
4385655108aSChandan Nath 	unsigned int wdtwspr;	/* offset 0x048 */
4395655108aSChandan Nath 	unsigned int resv3[1];
4405655108aSChandan Nath 	unsigned int wdtwqeoi;	/* offset 0x050 */
4415655108aSChandan Nath 	unsigned int wdtwqstar;	/* offset 0x054 */
4425655108aSChandan Nath 	unsigned int wdtwqsta;	/* offset 0x058 */
4435655108aSChandan Nath 	unsigned int wdtwqens;	/* offset 0x05C */
4445655108aSChandan Nath 	unsigned int wdtwqenc;	/* offset 0x060 */
4455655108aSChandan Nath 	unsigned int resv4[39];
4465655108aSChandan Nath 	unsigned int wdt_unfr;	/* offset 0x100 */
4475655108aSChandan Nath };
4485655108aSChandan Nath 
4495655108aSChandan Nath /* Timer 32 bit registers */
4505655108aSChandan Nath struct gptimer {
4515655108aSChandan Nath 	unsigned int tidr;		/* offset 0x00 */
452fb072a3eSChandan Nath 	unsigned char res1[12];
4535655108aSChandan Nath 	unsigned int tiocp_cfg;		/* offset 0x10 */
454fb072a3eSChandan Nath 	unsigned char res2[12];
4555655108aSChandan Nath 	unsigned int tier;		/* offset 0x20 */
4565655108aSChandan Nath 	unsigned int tistatr;		/* offset 0x24 */
4575655108aSChandan Nath 	unsigned int tistat;		/* offset 0x28 */
4585655108aSChandan Nath 	unsigned int tisr;		/* offset 0x2c */
4595655108aSChandan Nath 	unsigned int tcicr;		/* offset 0x30 */
4605655108aSChandan Nath 	unsigned int twer;		/* offset 0x34 */
4615655108aSChandan Nath 	unsigned int tclr;		/* offset 0x38 */
4625655108aSChandan Nath 	unsigned int tcrr;		/* offset 0x3c */
4635655108aSChandan Nath 	unsigned int tldr;		/* offset 0x40 */
4645655108aSChandan Nath 	unsigned int ttgr;		/* offset 0x44 */
4655655108aSChandan Nath 	unsigned int twpc;		/* offset 0x48 */
4665655108aSChandan Nath 	unsigned int tmar;		/* offset 0x4c */
4675655108aSChandan Nath 	unsigned int tcar1;		/* offset 0x50 */
4685655108aSChandan Nath 	unsigned int tscir;		/* offset 0x54 */
4695655108aSChandan Nath 	unsigned int tcar2;		/* offset 0x58 */
4705655108aSChandan Nath };
4715655108aSChandan Nath 
4725655108aSChandan Nath /* UART Registers */
4735655108aSChandan Nath struct uart_sys {
4745655108aSChandan Nath 	unsigned int resv1[21];
4755655108aSChandan Nath 	unsigned int uartsyscfg;	/* offset 0x54 */
4765655108aSChandan Nath 	unsigned int uartsyssts;	/* offset 0x58 */
4775655108aSChandan Nath };
4785655108aSChandan Nath 
4795655108aSChandan Nath /* VTP Registers */
4805655108aSChandan Nath struct vtp_reg {
4815655108aSChandan Nath 	unsigned int vtp0ctrlreg;
4825655108aSChandan Nath };
4835655108aSChandan Nath 
4845655108aSChandan Nath /* Control Status Register */
4855655108aSChandan Nath struct ctrl_stat {
4865655108aSChandan Nath 	unsigned int resv1[16];
4875655108aSChandan Nath 	unsigned int statusreg;		/* ofset 0x40 */
4886995a289SSatyanarayana, Sandhya 	unsigned int resv2[51];
4896995a289SSatyanarayana, Sandhya 	unsigned int secure_emif_sdram_config;	/* offset 0x0110 */
490cf04d032SLokesh Vutla 	unsigned int resv3[319];
491cf04d032SLokesh Vutla 	unsigned int dev_attr;
4925655108aSChandan Nath };
4933b97152bSSteve Sakoman 
4943b97152bSSteve Sakoman /* AM33XX GPIO registers */
4953b97152bSSteve Sakoman #define OMAP_GPIO_REVISION		0x0000
4963b97152bSSteve Sakoman #define OMAP_GPIO_SYSCONFIG		0x0010
4973b97152bSSteve Sakoman #define OMAP_GPIO_SYSSTATUS		0x0114
4983b97152bSSteve Sakoman #define OMAP_GPIO_IRQSTATUS1		0x002c
4993b97152bSSteve Sakoman #define OMAP_GPIO_IRQSTATUS2		0x0030
5003b97152bSSteve Sakoman #define OMAP_GPIO_CTRL			0x0130
5013b97152bSSteve Sakoman #define OMAP_GPIO_OE			0x0134
5023b97152bSSteve Sakoman #define OMAP_GPIO_DATAIN		0x0138
5033b97152bSSteve Sakoman #define OMAP_GPIO_DATAOUT		0x013c
5043b97152bSSteve Sakoman #define OMAP_GPIO_LEVELDETECT0		0x0140
5053b97152bSSteve Sakoman #define OMAP_GPIO_LEVELDETECT1		0x0144
5063b97152bSSteve Sakoman #define OMAP_GPIO_RISINGDETECT		0x0148
5073b97152bSSteve Sakoman #define OMAP_GPIO_FALLINGDETECT		0x014c
5083b97152bSSteve Sakoman #define OMAP_GPIO_DEBOUNCE_EN		0x0150
5093b97152bSSteve Sakoman #define OMAP_GPIO_DEBOUNCE_VAL		0x0154
5103b97152bSSteve Sakoman #define OMAP_GPIO_CLEARDATAOUT		0x0190
5113b97152bSSteve Sakoman #define OMAP_GPIO_SETDATAOUT		0x0194
5123b97152bSSteve Sakoman 
513e79cd8ebSChandan Nath /* Control Device Register */
514e79cd8ebSChandan Nath struct ctrl_dev {
515e79cd8ebSChandan Nath 	unsigned int deviceid;		/* offset 0x00 */
5167df5cf35SIlya Yanok 	unsigned int resv1[7];
5177df5cf35SIlya Yanok 	unsigned int usb_ctrl0;		/* offset 0x20 */
5187df5cf35SIlya Yanok 	unsigned int resv2;
5197df5cf35SIlya Yanok 	unsigned int usb_ctrl1;		/* offset 0x28 */
5207df5cf35SIlya Yanok 	unsigned int resv3;
521e79cd8ebSChandan Nath 	unsigned int macid0l;		/* offset 0x30 */
522e79cd8ebSChandan Nath 	unsigned int macid0h;		/* offset 0x34 */
523e79cd8ebSChandan Nath 	unsigned int macid1l;		/* offset 0x38 */
524e79cd8ebSChandan Nath 	unsigned int macid1h;		/* offset 0x3c */
5257df5cf35SIlya Yanok 	unsigned int resv4[4];
526e79cd8ebSChandan Nath 	unsigned int miisel;		/* offset 0x50 */
5275287946cSTom Rini 	unsigned int resv5[106];
5285287946cSTom Rini 	unsigned int efuse_sma;		/* offset 0x1FC */
529e79cd8ebSChandan Nath };
530dafd4db3SHeiko Schocher 
531dafd4db3SHeiko Schocher /* gmii_sel register defines */
532dafd4db3SHeiko Schocher #define GMII1_SEL_MII		0x0
533dafd4db3SHeiko Schocher #define GMII1_SEL_RMII		0x1
534dafd4db3SHeiko Schocher #define GMII1_SEL_RGMII		0x2
535dafd4db3SHeiko Schocher #define GMII2_SEL_MII		0x0
536dafd4db3SHeiko Schocher #define GMII2_SEL_RMII		0x4
537dafd4db3SHeiko Schocher #define GMII2_SEL_RGMII		0x8
538dafd4db3SHeiko Schocher #define RGMII1_IDMODE		BIT(4)
539dafd4db3SHeiko Schocher #define RGMII2_IDMODE		BIT(5)
540dafd4db3SHeiko Schocher #define RMII1_IO_CLK_EN		BIT(6)
541dafd4db3SHeiko Schocher #define RMII2_IO_CLK_EN		BIT(7)
542dafd4db3SHeiko Schocher 
543dafd4db3SHeiko Schocher #define MII_MODE_ENABLE		(GMII1_SEL_MII | GMII2_SEL_MII)
544dafd4db3SHeiko Schocher #define RMII_MODE_ENABLE        (GMII1_SEL_RMII | GMII2_SEL_RMII)
545dafd4db3SHeiko Schocher #define RGMII_MODE_ENABLE	(GMII1_SEL_RGMII | GMII2_SEL_RGMII)
546dafd4db3SHeiko Schocher #define RGMII_INT_DELAY		(RGMII1_IDMODE | RGMII2_IDMODE)
547dafd4db3SHeiko Schocher #define RMII_CHIPCKL_ENABLE     (RMII1_IO_CLK_EN | RMII2_IO_CLK_EN)
548dafd4db3SHeiko Schocher 
54914c0158bSHeiko Schocher /* PWMSS */
55014c0158bSHeiko Schocher struct pwmss_regs {
55114c0158bSHeiko Schocher 	unsigned int idver;
55214c0158bSHeiko Schocher 	unsigned int sysconfig;
55314c0158bSHeiko Schocher 	unsigned int clkconfig;
55414c0158bSHeiko Schocher 	unsigned int clkstatus;
55514c0158bSHeiko Schocher };
55614c0158bSHeiko Schocher #define ECAP_CLK_EN		BIT(0)
55714c0158bSHeiko Schocher #define ECAP_CLK_STOP_REQ	BIT(1)
55814c0158bSHeiko Schocher 
55914c0158bSHeiko Schocher struct pwmss_ecap_regs {
56014c0158bSHeiko Schocher 	unsigned int tsctr;
56114c0158bSHeiko Schocher 	unsigned int ctrphs;
56214c0158bSHeiko Schocher 	unsigned int cap1;
56314c0158bSHeiko Schocher 	unsigned int cap2;
56414c0158bSHeiko Schocher 	unsigned int cap3;
56514c0158bSHeiko Schocher 	unsigned int cap4;
56614c0158bSHeiko Schocher 	unsigned int resv1[4];
56714c0158bSHeiko Schocher 	unsigned short ecctl1;
56814c0158bSHeiko Schocher 	unsigned short ecctl2;
56914c0158bSHeiko Schocher };
57014c0158bSHeiko Schocher 
57114c0158bSHeiko Schocher /* Capture Control register 2 */
57214c0158bSHeiko Schocher #define ECTRL2_SYNCOSEL_MASK	(0x03 << 6)
57314c0158bSHeiko Schocher #define ECTRL2_MDSL_ECAP	BIT(9)
57414c0158bSHeiko Schocher #define ECTRL2_CTRSTP_FREERUN	BIT(4)
57514c0158bSHeiko Schocher #define ECTRL2_PLSL_LOW		BIT(10)
57614c0158bSHeiko Schocher #define ECTRL2_SYNC_EN		BIT(5)
57714c0158bSHeiko Schocher 
5785655108aSChandan Nath #endif /* __ASSEMBLY__ */
5795655108aSChandan Nath #endif /* __KERNEL_STRICT_NAMES */
5805655108aSChandan Nath 
5815655108aSChandan Nath #endif /* _AM33XX_CPU_H */
582