rockchip: pinctrl: rk3368: move IOMUX bit-definitions to pinctrl driver
[oweals/u-boot.git] / arch / arm / include / asm / arch-ep93xx / ep93xx.h
1 /*
2  * Cirrus Logic EP93xx register definitions.
3  *
4  * Copyright (C) 2013
5  * Sergey Kostanbaev <sergey.kostanbaev <at> fairwaves.ru>
6  *
7  * Copyright (C) 2009
8  * Matthias Kaehlcke <matthias@kaehlcke.net>
9  *
10  * Copyright (C) 2006
11  * Dominic Rath <Dominic.Rath@gmx.de>
12  *
13  * Copyright (C) 2004, 2005
14  * Cory T. Tusar, Videon Central, Inc., <ctusar@videon-central.com>
15  *
16  * Based in large part on linux/include/asm-arm/arch-ep93xx/regmap.h, which is
17  *
18  * Copyright (C) 2004 Ray Lehtiniemi
19  * Copyright (C) 2003 Cirrus Logic, Inc
20  * Copyright (C) 1999 ARM Limited.
21  *
22  * SPDX-License-Identifier:     GPL-2.0+
23  */
24
25 #define EP93XX_AHB_BASE                 0x80000000
26 #define EP93XX_APB_BASE                 0x80800000
27
28 /*
29  * 0x80000000 - 0x8000FFFF: DMA
30  */
31 #define DMA_OFFSET                      0x000000
32 #define DMA_BASE                        (EP93XX_AHB_BASE | DMA_OFFSET)
33
34 #ifndef __ASSEMBLY__
35 struct dma_channel {
36         uint32_t control;
37         uint32_t interrupt;
38         uint32_t ppalloc;
39         uint32_t status;
40         uint32_t reserved0;
41         uint32_t remain;
42         uint32_t reserved1[2];
43         uint32_t maxcnt0;
44         uint32_t base0;
45         uint32_t current0;
46         uint32_t reserved2;
47         uint32_t maxcnt1;
48         uint32_t base1;
49         uint32_t current1;
50         uint32_t reserved3;
51 };
52
53 struct dma_regs {
54         struct dma_channel m2p_channel_0;
55         struct dma_channel m2p_channel_1;
56         struct dma_channel m2p_channel_2;
57         struct dma_channel m2p_channel_3;
58         struct dma_channel m2m_channel_0;
59         struct dma_channel m2m_channel_1;
60         struct dma_channel reserved0[2];
61         struct dma_channel m2p_channel_5;
62         struct dma_channel m2p_channel_4;
63         struct dma_channel m2p_channel_7;
64         struct dma_channel m2p_channel_6;
65         struct dma_channel m2p_channel_9;
66         struct dma_channel m2p_channel_8;
67         uint32_t channel_arbitration;
68         uint32_t reserved[15];
69         uint32_t global_interrupt;
70 };
71 #endif
72
73 /*
74  * 0x80010000 - 0x8001FFFF: Ethernet MAC
75  */
76 #define MAC_OFFSET                      0x010000
77 #define MAC_BASE                        (EP93XX_AHB_BASE | MAC_OFFSET)
78
79 #ifndef __ASSEMBLY__
80 struct mac_queue {
81         uint32_t badd;
82         union { /* deal with half-word aligned registers */
83                 uint32_t blen;
84                 union {
85                         uint16_t filler;
86                         uint16_t curlen;
87                 };
88         };
89         uint32_t curadd;
90 };
91
92 struct mac_regs {
93         uint32_t rxctl;
94         uint32_t txctl;
95         uint32_t testctl;
96         uint32_t reserved0;
97         uint32_t miicmd;
98         uint32_t miidata;
99         uint32_t miists;
100         uint32_t reserved1;
101         uint32_t selfctl;
102         uint32_t inten;
103         uint32_t intstsp;
104         uint32_t intstsc;
105         uint32_t reserved2[2];
106         uint32_t diagad;
107         uint32_t diagdata;
108         uint32_t gt;
109         uint32_t fct;
110         uint32_t fcf;
111         uint32_t afp;
112         union {
113                 struct {
114                         uint32_t indad;
115                         uint32_t indad_upper;
116                 };
117                 uint32_t hashtbl;
118         };
119         uint32_t reserved3[2];
120         uint32_t giintsts;
121         uint32_t giintmsk;
122         uint32_t giintrosts;
123         uint32_t giintfrc;
124         uint32_t txcollcnt;
125         uint32_t rxmissnct;
126         uint32_t rxruntcnt;
127         uint32_t reserved4;
128         uint32_t bmctl;
129         uint32_t bmsts;
130         uint32_t rxbca;
131         uint32_t reserved5;
132         struct mac_queue rxdq;
133         uint32_t rxdqenq;
134         struct mac_queue rxstsq;
135         uint32_t rxstsqenq;
136         struct mac_queue txdq;
137         uint32_t txdqenq;
138         struct mac_queue txstsq;
139         uint32_t reserved6;
140         uint32_t rxbufthrshld;
141         uint32_t txbufthrshld;
142         uint32_t rxststhrshld;
143         uint32_t txststhrshld;
144         uint32_t rxdthrshld;
145         uint32_t txdthrshld;
146         uint32_t maxfrmlen;
147         uint32_t maxhdrlen;
148 };
149 #endif
150
151 #define SELFCTL_RWP             (1 << 7)
152 #define SELFCTL_GPO0            (1 << 5)
153 #define SELFCTL_PUWE            (1 << 4)
154 #define SELFCTL_PDWE            (1 << 3)
155 #define SELFCTL_MIIL            (1 << 2)
156 #define SELFCTL_RESET           (1 << 0)
157
158 #define INTSTS_RWI              (1 << 30)
159 #define INTSTS_RXMI             (1 << 29)
160 #define INTSTS_RXBI             (1 << 28)
161 #define INTSTS_RXSQI            (1 << 27)
162 #define INTSTS_TXLEI            (1 << 26)
163 #define INTSTS_ECIE             (1 << 25)
164 #define INTSTS_TXUHI            (1 << 24)
165 #define INTSTS_MOI              (1 << 18)
166 #define INTSTS_TXCOI            (1 << 17)
167 #define INTSTS_RXROI            (1 << 16)
168 #define INTSTS_MIII             (1 << 12)
169 #define INTSTS_PHYI             (1 << 11)
170 #define INTSTS_TI               (1 << 10)
171 #define INTSTS_AHBE             (1 << 8)
172 #define INTSTS_OTHER            (1 << 4)
173 #define INTSTS_TXSQ             (1 << 3)
174 #define INTSTS_RXSQ             (1 << 2)
175
176 #define BMCTL_MT                (1 << 13)
177 #define BMCTL_TT                (1 << 12)
178 #define BMCTL_UNH               (1 << 11)
179 #define BMCTL_TXCHR             (1 << 10)
180 #define BMCTL_TXDIS             (1 << 9)
181 #define BMCTL_TXEN              (1 << 8)
182 #define BMCTL_EH2               (1 << 6)
183 #define BMCTL_EH1               (1 << 5)
184 #define BMCTL_EEOB              (1 << 4)
185 #define BMCTL_RXCHR             (1 << 2)
186 #define BMCTL_RXDIS             (1 << 1)
187 #define BMCTL_RXEN              (1 << 0)
188
189 #define BMSTS_TXACT             (1 << 7)
190 #define BMSTS_TP                (1 << 4)
191 #define BMSTS_RXACT             (1 << 3)
192 #define BMSTS_QID_MASK          0x07
193 #define BMSTS_QID_RXDATA        0x00
194 #define BMSTS_QID_TXDATA        0x01
195 #define BMSTS_QID_RXSTS         0x02
196 #define BMSTS_QID_TXSTS         0x03
197 #define BMSTS_QID_RXDESC        0x04
198 #define BMSTS_QID_TXDESC        0x05
199
200 #define AFP_MASK                0x07
201 #define AFP_IAPRIMARY           0x00
202 #define AFP_IASECONDARY1        0x01
203 #define AFP_IASECONDARY2        0x02
204 #define AFP_IASECONDARY3        0x03
205 #define AFP_TX                  0x06
206 #define AFP_HASH                0x07
207
208 #define RXCTL_PAUSEA            (1 << 20)
209 #define RXCTL_RXFCE1            (1 << 19)
210 #define RXCTL_RXFCE0            (1 << 18)
211 #define RXCTL_BCRC              (1 << 17)
212 #define RXCTL_SRXON             (1 << 16)
213 #define RXCTL_RCRCA             (1 << 13)
214 #define RXCTL_RA                (1 << 12)
215 #define RXCTL_PA                (1 << 11)
216 #define RXCTL_BA                (1 << 10)
217 #define RXCTL_MA                (1 << 9)
218 #define RXCTL_IAHA              (1 << 8)
219 #define RXCTL_IA3               (1 << 3)
220 #define RXCTL_IA2               (1 << 2)
221 #define RXCTL_IA1               (1 << 1)
222 #define RXCTL_IA0               (1 << 0)
223
224 #define TXCTL_DEFDIS            (1 << 7)
225 #define TXCTL_MBE               (1 << 6)
226 #define TXCTL_ICRC              (1 << 5)
227 #define TXCTL_TPD               (1 << 4)
228 #define TXCTL_OCOLL             (1 << 3)
229 #define TXCTL_SP                (1 << 2)
230 #define TXCTL_PB                (1 << 1)
231 #define TXCTL_STXON             (1 << 0)
232
233 #define MIICMD_REGAD_MASK       (0x001F)
234 #define MIICMD_PHYAD_MASK       (0x03E0)
235 #define MIICMD_OPCODE_MASK      (0xC000)
236 #define MIICMD_PHYAD_8950       (0x0000)
237 #define MIICMD_OPCODE_READ      (0x8000)
238 #define MIICMD_OPCODE_WRITE     (0x4000)
239
240 #define MIISTS_BUSY             (1 << 0)
241
242 /*
243  * 0x80020000 - 0x8002FFFF: USB OHCI
244  */
245 #define USB_OFFSET                      0x020000
246 #define USB_BASE                        (EP93XX_AHB_BASE | USB_OFFSET)
247
248 /*
249  * 0x80030000 - 0x8003FFFF: Raster engine
250  */
251 #if (defined(CONFIG_EP9307) || defined(CONFIG_EP9312) || defined(CONFIG_EP9315))
252 #define RASTER_OFFSET                   0x030000
253 #define RASTER_BASE                     (EP93XX_AHB_BASE | RASTER_OFFSET)
254 #endif
255
256 /*
257  * 0x80040000 - 0x8004FFFF: Graphics accelerator
258  */
259 #if defined(CONFIG_EP9315)
260 #define GFX_OFFSET                      0x040000
261 #define GFX_BASE                        (EP93XX_AHB_BASE | GFX_OFFSET)
262 #endif
263
264 /*
265  * 0x80050000 - 0x8005FFFF: Reserved
266  */
267
268 /*
269  * 0x80060000 - 0x8006FFFF: SDRAM controller
270  */
271 #define SDRAM_OFFSET                    0x060000
272 #define SDRAM_BASE                      (EP93XX_AHB_BASE | SDRAM_OFFSET)
273
274 #ifndef __ASSEMBLY__
275 struct sdram_regs {
276         uint32_t reserved;
277         uint32_t glconfig;
278         uint32_t refrshtimr;
279         uint32_t bootsts;
280         uint32_t devcfg0;
281         uint32_t devcfg1;
282         uint32_t devcfg2;
283         uint32_t devcfg3;
284 };
285 #endif
286
287 #define SDRAM_DEVCFG_EXTBUSWIDTH        (1 << 2)
288 #define SDRAM_DEVCFG_BANKCOUNT          (1 << 3)
289 #define SDRAM_DEVCFG_SROMLL             (1 << 5)
290 #define SDRAM_DEVCFG_CASLAT_2           0x00010000
291 #define SDRAM_DEVCFG_RASTOCAS_2         0x00200000
292
293 #define SDRAM_OFF_GLCONFIG              0x0004
294 #define SDRAM_OFF_REFRSHTIMR            0x0008
295
296 #define SDRAM_OFF_DEVCFG0               0x0010
297 #define SDRAM_OFF_DEVCFG1               0x0014
298 #define SDRAM_OFF_DEVCFG2               0x0018
299 #define SDRAM_OFF_DEVCFG3               0x001C
300
301 #define SDRAM_DEVCFG0_BASE              0xC0000000
302 #define SDRAM_DEVCFG1_BASE              0xD0000000
303 #define SDRAM_DEVCFG2_BASE              0xE0000000
304 #define SDRAM_DEVCFG3_ASD0_BASE         0xF0000000
305 #define SDRAM_DEVCFG3_ASD1_BASE         0x00000000
306
307 #define GLCONFIG_INIT                   (1 << 0)
308 #define GLCONFIG_MRS                    (1 << 1)
309 #define GLCONFIG_SMEMBUSY               (1 << 5)
310 #define GLCONFIG_LCR                    (1 << 6)
311 #define GLCONFIG_REARBEN                (1 << 7)
312 #define GLCONFIG_CLKSHUTDOWN            (1 << 30)
313 #define GLCONFIG_CKE                    (1 << 31)
314
315 #define EP93XX_SDRAMCTRL                        0x80060000
316 #define EP93XX_SDRAMCTRL_GLOBALCFG_INIT         0x00000001
317 #define EP93XX_SDRAMCTRL_GLOBALCFG_MRS          0x00000002
318 #define EP93XX_SDRAMCTRL_GLOBALCFG_SMEMBUSY     0x00000020
319 #define EP93XX_SDRAMCTRL_GLOBALCFG_LCR          0x00000040
320 #define EP93XX_SDRAMCTRL_GLOBALCFG_REARBEN      0x00000080
321 #define EP93XX_SDRAMCTRL_GLOBALCFG_CLKSHUTDOWN  0x40000000
322 #define EP93XX_SDRAMCTRL_GLOBALCFG_CKE          0x80000000
323
324 #define EP93XX_SDRAMCTRL_REFRESH_MASK           0x0000FFFF
325
326 #define EP93XX_SDRAMCTRL_BOOTSTATUS_WIDTH_32    0x00000002
327 #define EP93XX_SDRAMCTRL_BOOTSTATUS_WIDTH_16    0x00000001
328 #define EP93XX_SDRAMCTRL_BOOTSTATUS_WIDTH_8     0x00000000
329 #define EP93XX_SDRAMCTRL_BOOTSTATUS_WIDTH_MASK  0x00000003
330 #define EP93XX_SDRAMCTRL_BOOTSTATUS_MEDIA       0x00000004
331
332 #define EP93XX_SDRAMCTRL_DEVCFG_EXTBUSWIDTH     0x00000004
333 #define EP93XX_SDRAMCTRL_DEVCFG_BANKCOUNT       0x00000008
334 #define EP93XX_SDRAMCTRL_DEVCFG_SROM512         0x00000010
335 #define EP93XX_SDRAMCTRL_DEVCFG_SROMLL          0x00000020
336 #define EP93XX_SDRAMCTRL_DEVCFG_2KPAGE          0x00000040
337 #define EP93XX_SDRAMCTRL_DEVCFG_SFCONFIGADDR    0x00000080
338 #define EP93XX_SDRAMCTRL_DEVCFG_CASLAT_MASK     0x00070000
339 #define EP93XX_SDRAMCTRL_DEVCFG_CASLAT_2        0x00010000
340 #define EP93XX_SDRAMCTRL_DEVCFG_CASLAT_3        0x00020000
341 #define EP93XX_SDRAMCTRL_DEVCFG_CASLAT_4        0x00030000
342 #define EP93XX_SDRAMCTRL_DEVCFG_CASLAT_5        0x00040000
343 #define EP93XX_SDRAMCTRL_DEVCFG_CASLAT_6        0x00050000
344 #define EP93XX_SDRAMCTRL_DEVCFG_CASLAT_7        0x00060000
345 #define EP93XX_SDRAMCTRL_DEVCFG_CASLAT_8        0x00070000
346 #define EP93XX_SDRAMCTRL_DEVCFG_WBL             0x00080000
347 #define EP93XX_SDRAMCTRL_DEVCFG_RASTOCAS_MASK   0x00300000
348 #define EP93XX_SDRAMCTRL_DEVCFG_RASTOCAS_2      0x00200000
349 #define EP93XX_SDRAMCTRL_DEVCFG_RASTOCAS_3      0x00300000
350 #define EP93XX_SDRAMCTRL_DEVCFG_AUTOPRECHARGE   0x01000000
351
352 /*
353  * 0x80070000 - 0x8007FFFF: Reserved
354  */
355
356 /*
357  * 0x80080000 - 0x8008FFFF: SRAM controller & PCMCIA
358  */
359 #define SMC_OFFSET                      0x080000
360 #define SMC_BASE                        (EP93XX_AHB_BASE | SMC_OFFSET)
361
362 #ifndef __ASSEMBLY__
363 struct smc_regs {
364         uint32_t bcr0;
365         uint32_t bcr1;
366         uint32_t bcr2;
367         uint32_t bcr3;
368         uint32_t reserved0[2];
369         uint32_t bcr6;
370         uint32_t bcr7;
371 #if defined(CONFIG_EP9315)
372         uint32_t pcattribute;
373         uint32_t pccommon;
374         uint32_t pcio;
375         uint32_t reserved1[5];
376         uint32_t pcmciactrl;
377 #endif
378 };
379 #endif
380
381 #define EP93XX_OFF_SMCBCR0              0x00
382 #define EP93XX_OFF_SMCBCR1              0x04
383 #define EP93XX_OFF_SMCBCR2              0x08
384 #define EP93XX_OFF_SMCBCR3              0x0C
385 #define EP93XX_OFF_SMCBCR6              0x18
386 #define EP93XX_OFF_SMCBCR7              0x1C
387
388 #define SMC_BCR_IDCY_SHIFT      0
389 #define SMC_BCR_WST1_SHIFT      5
390 #define SMC_BCR_BLE             (1 << 10)
391 #define SMC_BCR_WST2_SHIFT      11
392 #define SMC_BCR_MW_SHIFT        28
393
394 /*
395  * 0x80090000 - 0x8009FFFF: Boot ROM
396  */
397
398 /*
399  * 0x800A0000 - 0x800AFFFF: IDE interface
400  */
401
402 /*
403  * 0x800B0000 - 0x800BFFFF: VIC1
404  */
405
406 /*
407  * 0x800C0000 - 0x800CFFFF: VIC2
408  */
409
410 /*
411  * 0x800D0000 - 0x800FFFFF: Reserved
412  */
413
414 /*
415  * 0x80800000 - 0x8080FFFF: Reserved
416  */
417
418 /*
419  * 0x80810000 - 0x8081FFFF: Timers
420  */
421 #define TIMER_OFFSET            0x010000
422 #define TIMER_BASE              (EP93XX_APB_BASE | TIMER_OFFSET)
423
424 #ifndef __ASSEMBLY__
425 struct timer {
426         uint32_t load;
427         uint32_t value;
428         uint32_t control;
429         uint32_t clear;
430 };
431
432 struct timer4 {
433         uint32_t value_low;
434         uint32_t value_high;
435 };
436
437 struct timer_regs {
438         struct timer timer1;
439         uint32_t reserved0[4];
440         struct timer timer2;
441         uint32_t reserved1[12];
442         struct timer4 timer4;
443         uint32_t reserved2[6];
444         struct timer timer3;
445 };
446 #endif
447
448 /*
449  * 0x80820000 - 0x8082FFFF: I2S
450  */
451 #define I2S_OFFSET              0x020000
452 #define I2S_BASE                (EP93XX_APB_BASE | I2S_OFFSET)
453
454 /*
455  * 0x80830000 - 0x8083FFFF: Security
456  */
457 #define SECURITY_OFFSET         0x030000
458 #define SECURITY_BASE           (EP93XX_APB_BASE | SECURITY_OFFSET)
459
460 #define EXTENSIONID             (SECURITY_BASE + 0x2714)
461
462 /*
463  * 0x80840000 - 0x8084FFFF: GPIO
464  */
465 #define GPIO_OFFSET             0x040000
466 #define GPIO_BASE               (EP93XX_APB_BASE | GPIO_OFFSET)
467
468 #ifndef __ASSEMBLY__
469 struct gpio_int {
470         uint32_t inttype1;
471         uint32_t inttype2;
472         uint32_t eoi;
473         uint32_t inten;
474         uint32_t intsts;
475         uint32_t rawintsts;
476         uint32_t db;
477 };
478
479 struct gpio_regs {
480         uint32_t padr;
481         uint32_t pbdr;
482         uint32_t pcdr;
483         uint32_t pddr;
484         uint32_t paddr;
485         uint32_t pbddr;
486         uint32_t pcddr;
487         uint32_t pdddr;
488         uint32_t pedr;
489         uint32_t peddr;
490         uint32_t reserved0[2];
491         uint32_t pfdr;
492         uint32_t pfddr;
493         uint32_t pgdr;
494         uint32_t pgddr;
495         uint32_t phdr;
496         uint32_t phddr;
497         uint32_t reserved1;
498         uint32_t finttype1;
499         uint32_t finttype2;
500         uint32_t reserved2;
501         struct gpio_int pfint;
502         uint32_t reserved3[10];
503         struct gpio_int paint;
504         struct gpio_int pbint;
505         uint32_t eedrive;
506 };
507 #endif
508
509 #define EP93XX_LED_DATA         0x80840020
510 #define EP93XX_LED_GREEN_ON     0x0001
511 #define EP93XX_LED_RED_ON       0x0002
512
513 #define EP93XX_LED_DDR          0x80840024
514 #define EP93XX_LED_GREEN_ENABLE 0x0001
515 #define EP93XX_LED_RED_ENABLE   0x00020000
516
517 /*
518  * 0x80850000 - 0x8087FFFF: Reserved
519  */
520
521 /*
522  * 0x80880000 - 0x8088FFFF: AAC
523  */
524 #define AAC_OFFSET              0x080000
525 #define AAC_BASE                (EP93XX_APB_BASE | AAC_OFFSET)
526
527 /*
528  * 0x80890000 - 0x8089FFFF: Reserved
529  */
530
531 /*
532  * 0x808A0000 - 0x808AFFFF: SPI
533  */
534 #define SPI_OFFSET              0x0A0000
535 #define SPI_BASE                (EP93XX_APB_BASE | SPI_OFFSET)
536
537 /*
538  * 0x808B0000 - 0x808BFFFF: IrDA
539  */
540 #define IRDA_OFFSET             0x0B0000
541 #define IRDA_BASE               (EP93XX_APB_BASE | IRDA_OFFSET)
542
543 /*
544  * 0x808C0000 - 0x808CFFFF: UART1
545  */
546 #define UART1_OFFSET            0x0C0000
547 #define UART1_BASE              (EP93XX_APB_BASE | UART1_OFFSET)
548
549 /*
550  * 0x808D0000 - 0x808DFFFF: UART2
551  */
552 #define UART2_OFFSET            0x0D0000
553 #define UART2_BASE              (EP93XX_APB_BASE | UART2_OFFSET)
554
555 /*
556  * 0x808E0000 - 0x808EFFFF: UART3
557  */
558 #define UART3_OFFSET            0x0E0000
559 #define UART3_BASE              (EP93XX_APB_BASE | UART3_OFFSET)
560
561 /*
562  * 0x808F0000 - 0x808FFFFF: Key Matrix
563  */
564 #define KEY_OFFSET              0x0F0000
565 #define KEY_BASE                (EP93XX_APB_BASE | KEY_OFFSET)
566
567 /*
568  * 0x80900000 - 0x8090FFFF: Touchscreen
569  */
570 #define TOUCH_OFFSET            0x900000
571 #define TOUCH_BASE              (EP93XX_APB_BASE | TOUCH_OFFSET)
572
573 /*
574  * 0x80910000 - 0x8091FFFF: Pulse Width Modulation
575  */
576 #define PWM_OFFSET              0x910000
577 #define PWM_BASE                (EP93XX_APB_BASE | PWM_OFFSET)
578
579 /*
580  * 0x80920000 - 0x8092FFFF: Real time clock
581  */
582 #define RTC_OFFSET              0x920000
583 #define RTC_BASE                (EP93XX_APB_BASE | RTC_OFFSET)
584
585 /*
586  * 0x80930000 - 0x8093FFFF: Syscon
587  */
588 #define SYSCON_OFFSET           0x930000
589 #define SYSCON_BASE             (EP93XX_APB_BASE | SYSCON_OFFSET)
590
591 /* Security */
592 #define SECURITY_EXTENSIONID    0x80832714
593
594 #ifndef __ASSEMBLY__
595 struct syscon_regs {
596         uint32_t pwrsts;
597         uint32_t pwrcnt;
598         uint32_t halt;
599         uint32_t stby;
600         uint32_t reserved0[2];
601         uint32_t teoi;
602         uint32_t stfclr;
603         uint32_t clkset1;
604         uint32_t clkset2;
605         uint32_t reserved1[6];
606         uint32_t scratch0;
607         uint32_t scratch1;
608         uint32_t reserved2[2];
609         uint32_t apbwait;
610         uint32_t bustmstrarb;
611         uint32_t bootmodeclr;
612         uint32_t reserved3[9];
613         uint32_t devicecfg;
614         uint32_t vidclkdiv;
615         uint32_t mirclkdiv;
616         uint32_t i2sclkdiv;
617         uint32_t keytchclkdiv;
618         uint32_t chipid;
619         uint32_t reserved4;
620         uint32_t syscfg;
621         uint32_t reserved5[8];
622         uint32_t sysswlock;
623 };
624 #else
625 #define SYSCON_SCRATCH0         (SYSCON_BASE + 0x0040)
626 #endif
627
628 #define SYSCON_OFF_CLKSET1                      0x0020
629 #define SYSCON_OFF_SYSCFG                       0x009c
630
631 #define SYSCON_PWRCNT_UART_BAUD                 (1 << 29)
632 #define SYSCON_PWRCNT_USH_EN                    (1 << 28)
633
634 #define SYSCON_CLKSET_PLL_X2IPD_SHIFT           0
635 #define SYSCON_CLKSET_PLL_X2FBD2_SHIFT          5
636 #define SYSCON_CLKSET_PLL_X1FBD1_SHIFT          11
637 #define SYSCON_CLKSET_PLL_PS_SHIFT              16
638 #define SYSCON_CLKSET1_PCLK_DIV_SHIFT           18
639 #define SYSCON_CLKSET1_HCLK_DIV_SHIFT           20
640 #define SYSCON_CLKSET1_NBYP1                    (1 << 23)
641 #define SYSCON_CLKSET1_FCLK_DIV_SHIFT           25
642
643 #define SYSCON_CLKSET2_PLL2_EN                  (1 << 18)
644 #define SYSCON_CLKSET2_NBYP2                    (1 << 19)
645 #define SYSCON_CLKSET2_USB_DIV_SHIFT            28
646
647 #define SYSCON_CHIPID_REV_MASK                  0xF0000000
648 #define SYSCON_DEVICECFG_SWRST                  (1 << 31)
649
650 #define SYSCON_SYSCFG_LASDO                     0x00000020
651
652 /*
653  * 0x80930000 - 0x8093FFFF: Watchdog Timer
654  */
655 #define WATCHDOG_OFFSET         0x940000
656 #define WATCHDOG_BASE           (EP93XX_APB_BASE | WATCHDOG_OFFSET)
657
658 /*
659  * 0x80950000 - 0x9000FFFF: Reserved
660  */
661
662 /*
663  * During low_level init we store memory layout in memory at specific location
664  */
665 #define UBOOT_MEMORYCNF_BANK_SIZE               0x2000
666 #define UBOOT_MEMORYCNF_BANK_MASK               0x2004
667 #define UBOOT_MEMORYCNF_BANK_COUNT              0x2008