]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BeagleBoardPkg/Library/BeagleBoardLib/BeagleBoard.c
ArmPlatformPkg: remove ArmPlatformInitializeSystemMemory
[mirror_edk2.git] / BeagleBoardPkg / Library / BeagleBoardLib / BeagleBoard.c
old mode 100755 (executable)
new mode 100644 (file)
index 5a40cce..d8eec72
-/** @file
-*
-*  Copyright (c) 2011, ARM Limited. All rights reserved.
-*  
-*  This program and the accompanying materials                          
-*  are licensed and made available under the terms and conditions of the BSD License         
-*  which accompanies this distribution.  The full text of the license may be found at        
-*  http://opensource.org/licenses/bsd-license.php                                            
-*
-*  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     
-*  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             
-*
-**/
-
-#include <Library/IoLib.h>
-#include <Library/ArmPlatformLib.h>
-#include <Library/DebugLib.h>
-#include <Library/PcdLib.h>
-
-#include <Omap3530/Omap3530.h>
-
-VOID
-PadConfiguration (
-  VOID
-  );
-
-VOID
-ClockInit (
-  VOID
-  );
-
-/**
-  Return if Trustzone is supported by your platform
-
-  A non-zero value must be returned if you want to support a Secure World on your platform.
-  ArmPlatformTrustzoneInit() will later set up the secure regions.
-  This function can return 0 even if Trustzone is supported by your processor. In this case,
-  the platform will continue to run in Secure World.
-
-  @return   A non-zero value if Trustzone supported.
-
-**/
-UINTN
-ArmPlatformTrustzoneSupported (
-  VOID
-  )
-{
-  // The BeagleBoard starts in Normal World (Non Secure World)
-       return FALSE;
-}
-
-/**
-  Initialize the Secure peripherals and memory regions
-
-  If Trustzone is supported by your platform then this function makes the required initialization
-  of the secure peripherals and memory regions.
-
-**/
-VOID
-ArmPlatformTrustzoneInit (
-  VOID
-  )
-{
-       ASSERT(FALSE);
-}
-
-/**
-  Remap the memory at 0x0
-
-  Some platform requires or gives the ability to remap the memory at the address 0x0.
-  This function can do nothing if this feature is not relevant to your platform.
-
-**/
-VOID
-ArmPlatformBootRemapping (
-  VOID
-  )
-{
-  // Do nothing for the BeagleBoard
-}
-
-/**
-  Return the current Boot Mode
-
-  This function returns the boot reason on the platform
-
-**/
-EFI_BOOT_MODE
-ArmPlatformGetBootMode (
-  VOID
-  )
-{
-  return BOOT_WITH_FULL_CONFIGURATION;
-}
-
-/**
-  Initialize controllers that must setup at the early stage
-
-  Some peripherals must be initialized in Secure World.
-  For example, some L2x0 requires to be initialized in Secure World
-
-**/
-VOID
-ArmPlatformNormalInitialize (
-  VOID
-  )
-{
-  //Set up Pin muxing.
-  PadConfiguration ();
-
-  // Set up system clocking
-  ClockInit ();
-
-  // Turn off the functional clock for Timer 3
-  MmioAnd32 (CM_FCLKEN_PER, 0xFFFFFFFF ^ CM_ICLKEN_PER_EN_GPT3_ENABLE );
-  ArmDataSyncronizationBarrier ();
-
-  // Clear IRQs
-  MmioWrite32 (INTCPS_CONTROL, INTCPS_CONTROL_NEWIRQAGR);
-  ArmDataSyncronizationBarrier ();
-}
-
-/**
-  Initialize the system (or sometimes called permanent) memory
-
-  This memory is generally represented by the DRAM.
-
-**/
-VOID
-ArmPlatformInitializeSystemMemory (
-  VOID
-  )
-{
-  // We do not need to initialize the System Memory on RTSM
-}
+/** @file\r
+*\r
+*  Copyright (c) 2011-2012, ARM Limited. All rights reserved.\r
+*\r
+*  This program and the accompanying materials\r
+*  are licensed and made available under the terms and conditions of the BSD License\r
+*  which accompanies this distribution.  The full text of the license may be found at\r
+*  http://opensource.org/licenses/bsd-license.php\r
+*\r
+*  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+*  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+*\r
+**/\r
+\r
+#include <Library/IoLib.h>\r
+#include <Library/ArmPlatformLib.h>\r
+#include <Library/DebugLib.h>\r
+#include <Library/PcdLib.h>\r
+\r
+#include <Omap3530/Omap3530.h>\r
+#include <BeagleBoard.h>\r
+\r
+VOID\r
+PadConfiguration (\r
+  BEAGLEBOARD_REVISION Revision\r
+  );\r
+\r
+VOID\r
+ClockInit (\r
+  VOID\r
+  );\r
+\r
+/**\r
+  Detect board revision\r
+\r
+  @return Board revision\r
+**/\r
+BEAGLEBOARD_REVISION\r
+BeagleBoardGetRevision (\r
+  VOID\r
+  )\r
+{\r
+  UINT32 OldPinDir;\r
+  UINT32 Revision;\r
+\r
+  // Read GPIO 171, 172, 173\r
+  OldPinDir = MmioRead32 (GPIO6_BASE + GPIO_OE);\r
+  MmioWrite32(GPIO6_BASE + GPIO_OE, (OldPinDir | BIT11 | BIT12 | BIT13));\r
+  Revision = MmioRead32 (GPIO6_BASE + GPIO_DATAIN);\r
+\r
+  // Restore I/O settings\r
+  MmioWrite32 (GPIO6_BASE + GPIO_OE, OldPinDir);\r
+\r
+  return (BEAGLEBOARD_REVISION)((Revision >> 11) & 0x7);\r
+}\r
+\r
+/**\r
+  Return the current Boot Mode\r
+\r
+  This function returns the boot reason on the platform\r
+\r
+**/\r
+EFI_BOOT_MODE\r
+ArmPlatformGetBootMode (\r
+  VOID\r
+  )\r
+{\r
+  return BOOT_WITH_FULL_CONFIGURATION;\r
+}\r
+\r
+/**\r
+  Initialize controllers that must setup at the early stage\r
+\r
+  Some peripherals must be initialized in Secure World.\r
+  For example, some L2x0 requires to be initialized in Secure World\r
+\r
+**/\r
+RETURN_STATUS\r
+ArmPlatformInitialize (\r
+  IN  UINTN                     MpId\r
+  )\r
+{\r
+  BEAGLEBOARD_REVISION Revision;\r
+\r
+  Revision = BeagleBoardGetRevision();\r
+\r
+  // Set up Pin muxing.\r
+  PadConfiguration (Revision);\r
+\r
+  // Set up system clocking\r
+  ClockInit ();\r
+\r
+  // Turn off the functional clock for Timer 3\r
+  MmioAnd32 (CM_FCLKEN_PER, 0xFFFFFFFF ^ CM_ICLKEN_PER_EN_GPT3_ENABLE );\r
+  ArmDataSynchronizationBarrier ();\r
+\r
+  // Clear IRQs\r
+  MmioWrite32 (INTCPS_CONTROL, INTCPS_CONTROL_NEWIRQAGR);\r
+  ArmDataSynchronizationBarrier ();\r
+\r
+  return RETURN_SUCCESS;\r
+}\r
+\r
+VOID\r
+ArmPlatformGetPlatformPpiList (\r
+  OUT UINTN                   *PpiListSize,\r
+  OUT EFI_PEI_PPI_DESCRIPTOR  **PpiList\r
+  )\r
+{\r
+  *PpiListSize = 0;\r
+  *PpiList = NULL;\r
+}\r
+\r
+UINTN\r
+ArmPlatformGetCorePosition (\r
+  IN UINTN MpId\r
+  )\r
+{\r
+  return 1;\r
+}\r
+\r