]>
Commit | Line | Data |
---|---|---|
7f21c4a2 | 1 | /** @file |
2 | * | |
3 | * Copyright (c) 2011, ARM Limited. All rights reserved. | |
4 | * | |
5 | * This program and the accompanying materials | |
6 | * are licensed and made available under the terms and conditions of the BSD License | |
7 | * which accompanies this distribution. The full text of the license may be found at | |
8 | * http://opensource.org/licenses/bsd-license.php | |
9 | * | |
10 | * THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
11 | * WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
12 | * | |
13 | **/ | |
14 | ||
15 | #include <Library/IoLib.h> | |
16 | #include <Library/ArmPlatformLib.h> | |
17 | #include <Library/DebugLib.h> | |
18 | #include <Library/PcdLib.h> | |
19 | ||
2d08d17d | 20 | #include <Omap3530/Omap3530.h> |
efe5f1a2 | 21 | #include <BeagleBoard.h> |
2d08d17d | 22 | |
7f21c4a2 | 23 | VOID |
24 | PadConfiguration ( | |
efe5f1a2 | 25 | BEAGLEBOARD_REVISION Revision |
7f21c4a2 | 26 | ); |
27 | ||
28 | VOID | |
29 | ClockInit ( | |
30 | VOID | |
31 | ); | |
32 | ||
efe5f1a2 | 33 | /** |
34 | Detect board revision | |
35 | ||
36 | @return Board revision | |
37 | **/ | |
38 | BEAGLEBOARD_REVISION | |
39 | BeagleBoardGetRevision ( | |
40 | VOID | |
41 | ) | |
42 | { | |
43 | UINT32 OldPinDir; | |
44 | UINT32 Revision; | |
45 | ||
46 | // Read GPIO 171, 172, 173 | |
47 | OldPinDir = MmioRead32 (GPIO6_BASE + GPIO_OE); | |
48 | MmioWrite32(GPIO6_BASE + GPIO_OE, (OldPinDir | BIT11 | BIT12 | BIT13)); | |
49 | Revision = MmioRead32 (GPIO6_BASE + GPIO_DATAIN); | |
50 | ||
51 | // Restore I/O settings | |
52 | MmioWrite32 (GPIO6_BASE + GPIO_OE, OldPinDir); | |
53 | ||
54 | return (BEAGLEBOARD_REVISION)((Revision >> 11) & 0x7); | |
55 | } | |
56 | ||
7f21c4a2 | 57 | /** |
58 | Return if Trustzone is supported by your platform | |
59 | ||
60 | A non-zero value must be returned if you want to support a Secure World on your platform. | |
61 | ArmPlatformTrustzoneInit() will later set up the secure regions. | |
62 | This function can return 0 even if Trustzone is supported by your processor. In this case, | |
63 | the platform will continue to run in Secure World. | |
64 | ||
65 | @return A non-zero value if Trustzone supported. | |
66 | ||
67 | **/ | |
68 | UINTN | |
69 | ArmPlatformTrustzoneSupported ( | |
70 | VOID | |
71 | ) | |
72 | { | |
73 | // The BeagleBoard starts in Normal World (Non Secure World) | |
74 | return FALSE; | |
75 | } | |
76 | ||
7f21c4a2 | 77 | /** |
78 | Remap the memory at 0x0 | |
79 | ||
80 | Some platform requires or gives the ability to remap the memory at the address 0x0. | |
81 | This function can do nothing if this feature is not relevant to your platform. | |
82 | ||
83 | **/ | |
84 | VOID | |
85 | ArmPlatformBootRemapping ( | |
86 | VOID | |
87 | ) | |
88 | { | |
89 | // Do nothing for the BeagleBoard | |
90 | } | |
91 | ||
92 | /** | |
93 | Return the current Boot Mode | |
94 | ||
95 | This function returns the boot reason on the platform | |
96 | ||
97 | **/ | |
98 | EFI_BOOT_MODE | |
99 | ArmPlatformGetBootMode ( | |
100 | VOID | |
101 | ) | |
102 | { | |
103 | return BOOT_WITH_FULL_CONFIGURATION; | |
104 | } | |
105 | ||
106 | /** | |
107 | Initialize controllers that must setup at the early stage | |
108 | ||
109 | Some peripherals must be initialized in Secure World. | |
110 | For example, some L2x0 requires to be initialized in Secure World | |
111 | ||
112 | **/ | |
113 | VOID | |
114 | ArmPlatformNormalInitialize ( | |
115 | VOID | |
2d08d17d | 116 | ) |
117 | { | |
efe5f1a2 | 118 | BEAGLEBOARD_REVISION Revision; |
119 | ||
120 | Revision = BeagleBoardGetRevision(); | |
121 | ||
122 | // Set up Pin muxing. | |
123 | PadConfiguration (Revision); | |
7f21c4a2 | 124 | |
125 | // Set up system clocking | |
126 | ClockInit (); | |
2d08d17d | 127 | |
128 | // Turn off the functional clock for Timer 3 | |
129 | MmioAnd32 (CM_FCLKEN_PER, 0xFFFFFFFF ^ CM_ICLKEN_PER_EN_GPT3_ENABLE ); | |
130 | ArmDataSyncronizationBarrier (); | |
131 | ||
132 | // Clear IRQs | |
133 | MmioWrite32 (INTCPS_CONTROL, INTCPS_CONTROL_NEWIRQAGR); | |
134 | ArmDataSyncronizationBarrier (); | |
7f21c4a2 | 135 | } |
136 | ||
137 | /** | |
138 | Initialize the system (or sometimes called permanent) memory | |
139 | ||
140 | This memory is generally represented by the DRAM. | |
141 | ||
142 | **/ | |
143 | VOID | |
144 | ArmPlatformInitializeSystemMemory ( | |
145 | VOID | |
146 | ) | |
147 | { | |
148 | // We do not need to initialize the System Memory on RTSM | |
149 | } |