board: ls2080aqds: transition to DM_ETH
[oweals/u-boot.git] / board / renesas / grpeach / lowlevel_init.S
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * Copyright (C) 2017 Renesas Electronics
4  * Copyright (C) 2017 Chris Brandt
5  */
6 #include <config.h>
7 #include <version.h>
8 #include <asm/macro.h>
9
10 /* Watchdog Registers */
11 #define RZA1_WDT_BASE   0xFCFE0000
12 #define WTCSR   (RZA1_WDT_BASE + 0x00) /* Watchdog Timer Control Register */
13 #define WTCNT   (RZA1_WDT_BASE + 0x02) /* Watchdog Timer Counter Register */
14 #define WRCSR   (RZA1_WDT_BASE + 0x04) /* Watchdog Reset Control Register */
15
16 /* Standby controller registers (chapter 55) */
17 #define RZA1_STBCR_BASE 0xFCFE0020
18 #define STBCR1  (RZA1_STBCR_BASE + 0x00)
19 #define STBCR2  (RZA1_STBCR_BASE + 0x04)
20 #define STBCR3  (RZA1_STBCR_BASE + 0x400)
21 #define STBCR4  (RZA1_STBCR_BASE + 0x404)
22 #define STBCR5  (RZA1_STBCR_BASE + 0x408)
23 #define STBCR6  (RZA1_STBCR_BASE + 0x40c)
24 #define STBCR7  (RZA1_STBCR_BASE + 0x410)
25 #define STBCR8  (RZA1_STBCR_BASE + 0x414)
26 #define STBCR9  (RZA1_STBCR_BASE + 0x418)
27 #define STBCR10 (RZA1_STBCR_BASE + 0x41c)
28 #define STBCR11 (RZA1_STBCR_BASE + 0x420)
29 #define STBCR12 (RZA1_STBCR_BASE + 0x424)
30 #define STBCR13 (RZA1_STBCR_BASE + 0x450)
31
32 /* Clock Registers */
33 #define RZA1_FRQCR_BASE 0xFCFE0010
34 #define FRQCR   (RZA1_FRQCR_BASE + 0x00)
35 #define FRQCR2  (RZA1_FRQCR_BASE + 0x04)
36
37 #define SYSCR1  0xFCFE0400 /* System control register 1 */
38 #define SYSCR2  0xFCFE0404 /* System control register 2 */
39 #define SYSCR3  0xFCFE0408 /* System control register 3 */
40
41 /* Disable WDT */
42 #define WTCSR_D         0xA518
43 #define WTCNT_D         0x5A00
44
45 /* Enable all peripheral clocks */
46 #define STBCR3_D        0x00000000
47 #define STBCR4_D        0x00000000
48 #define STBCR5_D        0x00000000
49 #define STBCR6_D        0x00000000
50 #define STBCR7_D        0x00000024
51 #define STBCR8_D        0x00000005
52 #define STBCR9_D        0x00000000
53 #define STBCR10_D       0x00000000
54 #define STBCR11_D       0x000000c0
55 #define STBCR12_D       0x000000f0
56
57 /*
58  * Set all system clocks to full speed.
59  * On reset, the CPU will be running at 1/2 speed.
60  * In the Hardware Manual, see Table 6.3 Settable Frequency Ranges
61  */
62 #define FRQCR_D         0x0035
63 #define FRQCR2_D        0x0001
64
65         .global lowlevel_init
66
67         .text
68         .align  2
69
70 lowlevel_init:
71         /* PL310 init */
72         write32 0x3fffff80, 0x00000001
73
74         /* Disable WDT */
75         write16 WTCSR, WTCSR_D
76         write16 WTCNT, WTCNT_D
77
78         /* Set clocks */
79         write16 FRQCR, FRQCR_D
80         write16 FRQCR2, FRQCR2_D
81
82         /* Enable all peripherals(Standby Control) */
83         write8 STBCR3, STBCR3_D
84         write8 STBCR4, STBCR4_D
85         write8 STBCR5, STBCR5_D
86         write8 STBCR6, STBCR6_D
87         write8 STBCR7, STBCR7_D
88         write8 STBCR8, STBCR8_D
89         write8 STBCR9, STBCR9_D
90         write8 STBCR10, STBCR10_D
91         write8 STBCR11, STBCR11_D
92         write8 STBCR12, STBCR12_D
93
94         /* For serial booting, enable read ahead caching to speed things up */
95 #define DRCR_0  0x3FEFA00C
96         write32 DRCR_0, 0x00010100      /* Read Burst ON, Length=2 */
97
98         /* Enable all internal RAM */
99         write8 SYSCR1, 0xFF
100         write8 SYSCR2, 0xFF
101         write8 SYSCR3, 0xFF
102
103         nop
104         /* back to arch calling code */
105         mov     pc, lr
106
107         .align 4