]> git.proxmox.com Git - mirror_edk2.git/blame - BeagleBoardPkg/Library/BeagleBoardLib/BeagleBoard.c
BeagleBoardPkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / BeagleBoardPkg / Library / BeagleBoardLib / BeagleBoard.c
CommitLineData
1e57a462 1/** @file\r
2*\r
3* Copyright (c) 2011-2012, ARM Limited. All rights reserved.\r
1e57a462 4*\r
a1594be9 5* SPDX-License-Identifier: BSD-2-Clause-Patent\r
1e57a462 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
3402aac7 44\r
1e57a462 45 // Restore I/O settings\r
46 MmioWrite32 (GPIO6_BASE + GPIO_OE, OldPinDir);\r
3402aac7 47\r
1e57a462 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
cf93a378 89 ArmDataSynchronizationBarrier ();\r
1e57a462 90\r
91 // Clear IRQs\r
92 MmioWrite32 (INTCPS_CONTROL, INTCPS_CONTROL_NEWIRQAGR);\r
cf93a378 93 ArmDataSynchronizationBarrier ();\r
1e57a462 94\r
95 return RETURN_SUCCESS;\r
96}\r
97\r
1e57a462 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