Home | History | Annotate | Download | only in ArmVExpressDxe
      1 /** @file
      2 
      3   Copyright (c) 2014-2015, ARM Ltd. All rights reserved.
      4 
      5   This program and the accompanying materials are licensed and made available
      6   under the terms and conditions of the BSD License which accompanies this
      7   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, WITHOUT
     11   WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     12 
     13 **/
     14 
     15 #ifndef __ARM_VEXPRESS_INTERNAL_H__
     16 #define __ARM_VEXPRESS_INTERNAL_H__
     17 
     18 #include <Uefi.h>
     19 
     20 #include <Library/ArmLib.h>
     21 #include <Library/DebugLib.h>
     22 #include <Library/IoLib.h>
     23 #include <Library/PcdLib.h>
     24 #include <Library/UefiBootServicesTableLib.h>
     25 #include <Library/UefiLib.h>
     26 
     27 #include <VExpressMotherBoard.h>
     28 
     29 // This 'enum' is needed as variations based on existing platform exist
     30 typedef enum {
     31   ARM_FVP_VEXPRESS_UNKNOWN = 0,
     32   ARM_FVP_VEXPRESS_A9x4,
     33   ARM_FVP_VEXPRESS_A15x1,
     34   ARM_FVP_VEXPRESS_A15x2,
     35   ARM_FVP_VEXPRESS_A15x4,
     36   ARM_FVP_VEXPRESS_A15x1_A7x1,
     37   ARM_FVP_VEXPRESS_A15x4_A7x4,
     38   ARM_FVP_VEXPRESS_AEMv8x4,
     39   ARM_FVP_BASE_AEMv8x4_AEMv8x4_GICV2,
     40   ARM_FVP_BASE_AEMv8x4_AEMv8x4_GICV2_LEGACY,
     41   ARM_FVP_BASE_AEMv8x4_AEMv8x4_GICV3,
     42   ARM_FVP_FOUNDATION_GICV2,
     43   ARM_FVP_FOUNDATION_GICV2_LEGACY,
     44   ARM_FVP_FOUNDATION_GICV3,
     45   ARM_HW_A9x4,
     46   ARM_HW_A15x2_A7x3,
     47   ARM_HW_A15,
     48   ARM_HW_A5
     49 } ARM_VEXPRESS_PLATFORM_ID;
     50 
     51 typedef struct {
     52   ARM_VEXPRESS_PLATFORM_ID  Id;
     53 
     54   // Flattened Device Tree (FDT) File
     55   CONST EFI_GUID            *FdtGuid; /// Name of the FDT when present into the FV
     56   CONST CHAR16              *FdtName; /// Name of the FDT when present into a File System
     57 } ARM_VEXPRESS_PLATFORM;
     58 
     59 // Array that contains the list of the VExpress based platform supported by this DXE driver
     60 extern CONST ARM_VEXPRESS_PLATFORM ArmVExpressPlatforms[];
     61 
     62 /**
     63   Get information about the VExpress platform the firmware is running on given its Id.
     64 
     65   @param[in]   PlatformId  Id of the VExpress platform.
     66   @param[out]  Platform    Address where the pointer to the platform information
     67                            (type ARM_VEXPRESS_PLATFORM*) should be stored.
     68                            The returned pointer does not point to an allocated
     69                            memory area.
     70 
     71   @retval  EFI_SUCCESS    The platform information was returned.
     72   @retval  EFI_NOT_FOUND  The platform was not recognised.
     73 
     74 **/
     75 EFI_STATUS
     76 ArmVExpressGetPlatformFromId (
     77   IN  CONST ARM_VEXPRESS_PLATFORM_ID PlatformId,
     78   OUT CONST ARM_VEXPRESS_PLATFORM**  Platform
     79   );
     80 
     81 /**
     82 
     83   Get information about the VExpress platform the firmware is running on.
     84 
     85   @param[out]  Platform   Address where the pointer to the platform information
     86                           (type ARM_VEXPRESS_PLATFORM*) should be stored.
     87                           The returned pointer does not point to an allocated
     88                           memory area.
     89 
     90   @retval  EFI_SUCCESS    The platform information was returned.
     91   @retval  EFI_NOT_FOUND  The platform was not recognised.
     92 
     93 **/
     94 EFI_STATUS
     95 ArmVExpressGetPlatform (
     96   OUT CONST ARM_VEXPRESS_PLATFORM** Platform
     97   );
     98 
     99 #endif // __ARM_VEXPRESS_INTERNAL_H__
    100