audk/QuarkPlatformPkg/Include/Library/PlatformHelperLib.h

267 lines
6.9 KiB
C

/** @file
PlatformHelperLib function prototype definitions.
Copyright (c) 2013 - 2016 Intel Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef __PLATFORM_HELPER_LIB_H__
#define __PLATFORM_HELPER_LIB_H__
#include "Platform.h"
//
// Function prototypes for routines exported by this library.
//
/**
Find pointer to RAW data in Firmware volume file.
@param FvNameGuid Firmware volume to search. If == NULL search all.
@param FileNameGuid Firmware volume file to search for.
@param SectionData Pointer to RAW data section of found file.
@param SectionDataSize Pointer to UNITN to get size of RAW data.
@retval EFI_SUCCESS Raw Data found.
@retval EFI_INVALID_PARAMETER FileNameGuid == NULL.
@retval EFI_NOT_FOUND Firmware volume file not found.
@retval EFI_UNSUPPORTED Unsupported in current enviroment (PEI or DXE).
**/
EFI_STATUS
EFIAPI
PlatformFindFvFileRawDataSection (
IN CONST EFI_GUID *FvNameGuid OPTIONAL,
IN CONST EFI_GUID *FileNameGuid,
OUT VOID **SectionData,
OUT UINTN *SectionDataSize
);
/**
Find free spi protect register and write to it to protect a flash region.
@param DirectValue Value to directly write to register.
if DirectValue == 0 the use Base & Length below.
@param BaseAddress Base address of region in Flash Memory Map.
@param Length Length of region to protect.
@retval EFI_SUCCESS Free spi protect register found & written.
@retval EFI_NOT_FOUND Free Spi protect register not found.
@retval EFI_DEVICE_ERROR Unable to write to spi protect register.
**/
EFI_STATUS
EFIAPI
PlatformWriteFirstFreeSpiProtect (
IN CONST UINT32 DirectValue,
IN CONST UINT32 BaseAddress,
IN CONST UINT32 Length
);
/**
Lock legacy SPI static configuration information.
Function will assert if unable to lock config.
**/
VOID
EFIAPI
PlatformFlashLockConfig (
VOID
);
/**
Lock regions and config of SPI flash given the policy for this platform.
Function will assert if unable to lock regions or config.
@param PreBootPolicy If TRUE do Pre Boot Flash Lock Policy.
**/
VOID
EFIAPI
PlatformFlashLockPolicy (
IN CONST BOOLEAN PreBootPolicy
);
/** Check if System booted with recovery Boot Stage1 image.
@retval TRUE If system booted with recovery Boot Stage1 image.
@retval FALSE If system booted with normal stage1 image.
**/
BOOLEAN
EFIAPI
PlatformIsBootWithRecoveryStage1 (
VOID
);
/**
Clear SPI Protect registers.
@retval EFI_SUCESS SPI protect registers cleared.
@retval EFI_ACCESS_DENIED Unable to clear SPI protect registers.
**/
EFI_STATUS
EFIAPI
PlatformClearSpiProtect (
VOID
);
/**
Determine if an SPI address range is protected.
@param SpiBaseAddress Base of SPI range.
@param Length Length of SPI range.
@retval TRUE Range is protected.
@retval FALSE Range is not protected.
**/
BOOLEAN
EFIAPI
PlatformIsSpiRangeProtected (
IN CONST UINT32 SpiBaseAddress,
IN CONST UINT32 Length
);
/**
Set Legacy GPIO Level
@param LevelRegOffset GPIO level register Offset from GPIO Base Address.
@param GpioNum GPIO bit to change.
@param HighLevel If TRUE set GPIO High else Set GPIO low.
**/
VOID
EFIAPI
PlatformLegacyGpioSetLevel (
IN CONST UINT32 LevelRegOffset,
IN CONST UINT32 GpioNum,
IN CONST BOOLEAN HighLevel
);
/**
Get Legacy GPIO Level
@param LevelRegOffset GPIO level register Offset from GPIO Base Address.
@param GpioNum GPIO bit to check.
@retval TRUE If bit is SET.
@retval FALSE If bit is CLEAR.
**/
BOOLEAN
EFIAPI
PlatformLegacyGpioGetLevel (
IN CONST UINT32 LevelRegOffset,
IN CONST UINT32 GpioNum
);
/**
Set the direction of Pcal9555 IO Expander GPIO pin.
@param Pcal9555SlaveAddr I2c Slave address of Pcal9555 Io Expander.
@param GpioNum Gpio direction to configure - values 0-7 for Port0
and 8-15 for Port1.
@param CfgAsInput If TRUE set pin direction as input else set as output.
**/
VOID
EFIAPI
PlatformPcal9555GpioSetDir (
IN CONST UINT32 Pcal9555SlaveAddr,
IN CONST UINT32 GpioNum,
IN CONST BOOLEAN CfgAsInput
);
/**
Set the level of Pcal9555 IO Expander GPIO high or low.
@param Pcal9555SlaveAddr I2c Slave address of Pcal9555 Io Expander.
@param GpioNum Gpio to change values 0-7 for Port0 and 8-15
for Port1.
@param HighLevel If TRUE set pin high else set pin low.
**/
VOID
EFIAPI
PlatformPcal9555GpioSetLevel (
IN CONST UINT32 Pcal9555SlaveAddr,
IN CONST UINT32 GpioNum,
IN CONST BOOLEAN HighLevel
);
/**
Enable pull-up/pull-down resistors of Pcal9555 GPIOs.
@param Pcal9555SlaveAddr I2c Slave address of Pcal9555 Io Expander.
@param GpioNum Gpio to change values 0-7 for Port0 and 8-15
for Port1.
**/
VOID
EFIAPI
PlatformPcal9555GpioEnablePull (
IN CONST UINT32 Pcal9555SlaveAddr,
IN CONST UINT32 GpioNum
);
/**
Disable pull-up/pull-down resistors of Pcal9555 GPIOs.
@param Pcal9555SlaveAddr I2c Slave address of Pcal9555 Io Expander.
@param GpioNum Gpio to change values 0-7 for Port0 and 8-15
for Port1.
**/
VOID
EFIAPI
PlatformPcal9555GpioDisablePull (
IN CONST UINT32 Pcal9555SlaveAddr,
IN CONST UINT32 GpioNum
);
BOOLEAN
EFIAPI
PlatformPcal9555GpioGetState (
IN CONST UINT32 Pcal9555SlaveAddr,
IN CONST UINT32 GpioNum
);
/**
Init platform LEDs into known state.
@param PlatformType Executing platform type.
@retval EFI_SUCCESS Operation success.
**/
EFI_STATUS
EFIAPI
PlatformLedInit (
IN CONST EFI_PLATFORM_TYPE Type
);
/**
Turn on or off platform flash update LED.
@param PlatformType Executing platform type.
@param TurnOn If TRUE turn on else turn off.
@retval EFI_SUCCESS Operation success.
**/
EFI_STATUS
EFIAPI
PlatformFlashUpdateLed (
IN CONST EFI_PLATFORM_TYPE Type,
IN CONST BOOLEAN TurnOn
);
#endif // #ifndef __PLATFORM_HELPER_LIB_H__