]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - BeagleBoardPkg/Library/BeagleBoardLib/BeagleBoard.c
BeagleBoardPkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / BeagleBoardPkg / Library / BeagleBoardLib / BeagleBoard.c
... / ...
CommitLineData
1/** @file\r
2*\r
3* Copyright (c) 2011-2012, ARM Limited. All rights reserved.\r
4*\r
5* SPDX-License-Identifier: BSD-2-Clause-Patent\r
6*\r
7**/\r
8\r
9#include <Library/IoLib.h>\r
10#include <Library/ArmPlatformLib.h>\r
11#include <Library/DebugLib.h>\r
12#include <Library/PcdLib.h>\r
13\r
14#include <Omap3530/Omap3530.h>\r
15#include <BeagleBoard.h>\r
16\r
17VOID\r
18PadConfiguration (\r
19 BEAGLEBOARD_REVISION Revision\r
20 );\r
21\r
22VOID\r
23ClockInit (\r
24 VOID\r
25 );\r
26\r
27/**\r
28 Detect board revision\r
29\r
30 @return Board revision\r
31**/\r
32BEAGLEBOARD_REVISION\r
33BeagleBoardGetRevision (\r
34 VOID\r
35 )\r
36{\r
37 UINT32 OldPinDir;\r
38 UINT32 Revision;\r
39\r
40 // Read GPIO 171, 172, 173\r
41 OldPinDir = MmioRead32 (GPIO6_BASE + GPIO_OE);\r
42 MmioWrite32(GPIO6_BASE + GPIO_OE, (OldPinDir | BIT11 | BIT12 | BIT13));\r
43 Revision = MmioRead32 (GPIO6_BASE + GPIO_DATAIN);\r
44\r
45 // Restore I/O settings\r
46 MmioWrite32 (GPIO6_BASE + GPIO_OE, OldPinDir);\r
47\r
48 return (BEAGLEBOARD_REVISION)((Revision >> 11) & 0x7);\r
49}\r
50\r
51/**\r
52 Return the current Boot Mode\r
53\r
54 This function returns the boot reason on the platform\r
55\r
56**/\r
57EFI_BOOT_MODE\r
58ArmPlatformGetBootMode (\r
59 VOID\r
60 )\r
61{\r
62 return BOOT_WITH_FULL_CONFIGURATION;\r
63}\r
64\r
65/**\r
66 Initialize controllers that must setup at the early stage\r
67\r
68 Some peripherals must be initialized in Secure World.\r
69 For example, some L2x0 requires to be initialized in Secure World\r
70\r
71**/\r
72RETURN_STATUS\r
73ArmPlatformInitialize (\r
74 IN UINTN MpId\r
75 )\r
76{\r
77 BEAGLEBOARD_REVISION Revision;\r
78\r
79 Revision = BeagleBoardGetRevision();\r
80\r
81 // Set up Pin muxing.\r
82 PadConfiguration (Revision);\r
83\r
84 // Set up system clocking\r
85 ClockInit ();\r
86\r
87 // Turn off the functional clock for Timer 3\r
88 MmioAnd32 (CM_FCLKEN_PER, 0xFFFFFFFF ^ CM_ICLKEN_PER_EN_GPT3_ENABLE );\r
89 ArmDataSynchronizationBarrier ();\r
90\r
91 // Clear IRQs\r
92 MmioWrite32 (INTCPS_CONTROL, INTCPS_CONTROL_NEWIRQAGR);\r
93 ArmDataSynchronizationBarrier ();\r
94\r
95 return RETURN_SUCCESS;\r
96}\r
97\r
98VOID\r
99ArmPlatformGetPlatformPpiList (\r
100 OUT UINTN *PpiListSize,\r
101 OUT EFI_PEI_PPI_DESCRIPTOR **PpiList\r
102 )\r
103{\r
104 *PpiListSize = 0;\r
105 *PpiList = NULL;\r
106}\r
107\r
108UINTN\r
109ArmPlatformGetCorePosition (\r
110 IN UINTN MpId\r
111 )\r
112{\r
113 return 1;\r
114}\r
115\r