X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=BeagleBoardPkg%2FLibrary%2FBeagleBoardLib%2FBeagleBoard.c;h=d8eec72b7c2ca149d0bbc7d7bf19002a7fa40028;hp=951873d3ffda3d16aaaaf9b05134d7965d499377;hb=ef120b7d639b78c7942e07a2a5dadc3d657fcfd7;hpb=e314d564db4d52a9e904f6049dad7fc5dece5cb4 diff --git a/BeagleBoardPkg/Library/BeagleBoardLib/BeagleBoard.c b/BeagleBoardPkg/Library/BeagleBoardLib/BeagleBoard.c old mode 100755 new mode 100644 index 951873d3ff..d8eec72b7c --- a/BeagleBoardPkg/Library/BeagleBoardLib/BeagleBoard.c +++ b/BeagleBoardPkg/Library/BeagleBoardLib/BeagleBoard.c @@ -1,116 +1,121 @@ -/** @file -* -* Copyright (c) 2011-2012, 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 -#include -#include -#include - -#include -#include - -VOID -PadConfiguration ( - BEAGLEBOARD_REVISION Revision - ); - -VOID -ClockInit ( - VOID - ); - -/** - Detect board revision - - @return Board revision -**/ -BEAGLEBOARD_REVISION -BeagleBoardGetRevision ( - VOID - ) -{ - UINT32 OldPinDir; - UINT32 Revision; - - // Read GPIO 171, 172, 173 - OldPinDir = MmioRead32 (GPIO6_BASE + GPIO_OE); - MmioWrite32(GPIO6_BASE + GPIO_OE, (OldPinDir | BIT11 | BIT12 | BIT13)); - Revision = MmioRead32 (GPIO6_BASE + GPIO_DATAIN); - - // Restore I/O settings - MmioWrite32 (GPIO6_BASE + GPIO_OE, OldPinDir); - - return (BEAGLEBOARD_REVISION)((Revision >> 11) & 0x7); -} - -/** - 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 - -**/ -RETURN_STATUS -ArmPlatformInitialize ( - IN UINTN MpId - ) -{ - BEAGLEBOARD_REVISION Revision; - - Revision = BeagleBoardGetRevision(); - - // Set up Pin muxing. - PadConfiguration (Revision); - - // 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 (); - - return RETURN_SUCCESS; -} - -/** - 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 +* +* Copyright (c) 2011-2012, 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 +#include +#include +#include + +#include +#include + +VOID +PadConfiguration ( + BEAGLEBOARD_REVISION Revision + ); + +VOID +ClockInit ( + VOID + ); + +/** + Detect board revision + + @return Board revision +**/ +BEAGLEBOARD_REVISION +BeagleBoardGetRevision ( + VOID + ) +{ + UINT32 OldPinDir; + UINT32 Revision; + + // Read GPIO 171, 172, 173 + OldPinDir = MmioRead32 (GPIO6_BASE + GPIO_OE); + MmioWrite32(GPIO6_BASE + GPIO_OE, (OldPinDir | BIT11 | BIT12 | BIT13)); + Revision = MmioRead32 (GPIO6_BASE + GPIO_DATAIN); + + // Restore I/O settings + MmioWrite32 (GPIO6_BASE + GPIO_OE, OldPinDir); + + return (BEAGLEBOARD_REVISION)((Revision >> 11) & 0x7); +} + +/** + 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 + +**/ +RETURN_STATUS +ArmPlatformInitialize ( + IN UINTN MpId + ) +{ + BEAGLEBOARD_REVISION Revision; + + Revision = BeagleBoardGetRevision(); + + // Set up Pin muxing. + PadConfiguration (Revision); + + // Set up system clocking + ClockInit (); + + // Turn off the functional clock for Timer 3 + MmioAnd32 (CM_FCLKEN_PER, 0xFFFFFFFF ^ CM_ICLKEN_PER_EN_GPT3_ENABLE ); + ArmDataSynchronizationBarrier (); + + // Clear IRQs + MmioWrite32 (INTCPS_CONTROL, INTCPS_CONTROL_NEWIRQAGR); + ArmDataSynchronizationBarrier (); + + return RETURN_SUCCESS; +} + +VOID +ArmPlatformGetPlatformPpiList ( + OUT UINTN *PpiListSize, + OUT EFI_PEI_PPI_DESCRIPTOR **PpiList + ) +{ + *PpiListSize = 0; + *PpiList = NULL; +} + +UINTN +ArmPlatformGetCorePosition ( + IN UINTN MpId + ) +{ + return 1; +} +