/** @file * * Copyright (c) 2019, ARM Limited. All rights reserved. * Copyright (c) 2017 - 2020, Andrei Warkentin * Copyright (c) 2016, Linaro Limited. All rights reserved. * * SPDX-License-Identifier: BSD-2-Clause-Patent * **/ #ifndef __RASPBERRY_PI_FIRMWARE_PROTOCOL_H__ #define __RASPBERRY_PI_FIRMWARE_PROTOCOL_H__ #define RASPBERRY_PI_FIRMWARE_PROTOL_GUID \ { 0x0ACA9535, 0x7AD0, 0x4286, { 0xB0, 0x2E, 0x87, 0xFA, 0x7E, 0x2A, 0x57, 0x11 } } typedef EFI_STATUS (EFIAPI *SET_POWER_STATE) ( IN UINT32 DeviceId, IN BOOLEAN PowerState, IN BOOLEAN Wait ); typedef EFI_STATUS (EFIAPI *GET_MAC_ADDRESS) ( OUT UINT8 MacAddress[6] ); typedef EFI_STATUS (EFIAPI *GET_COMMAND_LINE) ( IN UINTN BufferSize, OUT CHAR8 CommandLine[] ); typedef EFI_STATUS (EFIAPI *GET_CLOCK_STATE) ( IN UINT32 ClockId, OUT UINT32 *ClockState ); typedef EFI_STATUS (EFIAPI *SET_CLOCK_STATE) ( IN UINT32 ClockId, IN UINT32 ClockState ); typedef EFI_STATUS (EFIAPI *GET_CLOCK_RATE) ( IN UINT32 ClockId, OUT UINT32 *ClockRate ); typedef EFI_STATUS (EFIAPI *SET_CLOCK_RATE) ( IN UINT32 ClockId, OUT UINT32 ClockRate, IN BOOLEAN SkipTurbo ); typedef EFI_STATUS (EFIAPI *GET_FB) ( IN UINT32 Width, IN UINT32 Height, IN UINT32 Depth, OUT EFI_PHYSICAL_ADDRESS *FbBase, OUT UINTN *FbSize, OUT UINTN *Pitch ); typedef EFI_STATUS (EFIAPI *GET_FB_SIZE) ( OUT UINT32 *Width, OUT UINT32 *Height ); typedef EFI_STATUS (EFIAPI *FREE_FB) ( VOID ); typedef VOID (EFIAPI *SET_LED) ( BOOLEAN On ); typedef EFI_STATUS (EFIAPI *GET_SERIAL) ( UINT64 *Serial ); typedef EFI_STATUS (EFIAPI *GET_MODEL) ( UINT32 *Model ); typedef EFI_STATUS (EFIAPI *GET_MODEL_REVISION) ( UINT32 *Revision ); typedef CHAR8* (EFIAPI *GET_MODEL_NAME) ( INTN ModelId ); typedef EFI_STATUS (EFIAPI *GET_MODEL_FAMILY) ( UINT32 *ModelFamily ); typedef EFI_STATUS (EFIAPI *GET_FIRMWARE_REVISION) ( UINT32 *Revision ); typedef EFI_STATUS (EFIAPI *GET_MODEL_INSTALLED_MB) ( UINT32 *InstalledMB ); typedef CHAR8* (EFIAPI *GET_MANUFACTURER_NAME) ( INTN ManufacturerId ); typedef CHAR8* (EFIAPI *GET_CPU_NAME) ( INTN CpuId ); typedef EFI_STATUS (EFIAPI *GET_ARM_MEM) ( UINT32 *Base, UINT32 *Size ); typedef EFI_STATUS (EFIAPI *NOTIFY_XHCI_RESET) ( UINTN BusNumber, UINTN DeviceNumber, UINTN FunctionNumber ); typedef EFI_STATUS (EFIAPI *GPIO_SET_CFG) ( UINTN Gpio, UINTN Direction, UINTN State ); typedef struct { SET_POWER_STATE SetPowerState; GET_MAC_ADDRESS GetMacAddress; GET_COMMAND_LINE GetCommandLine; GET_CLOCK_RATE GetClockRate; GET_CLOCK_RATE GetMaxClockRate; GET_CLOCK_RATE GetMinClockRate; SET_CLOCK_RATE SetClockRate; GET_FB GetFB; FREE_FB FreeFB; GET_FB_SIZE GetFBSize; SET_LED SetLed; GET_SERIAL GetSerial; GET_MODEL GetModel; GET_MODEL_REVISION GetModelRevision; GET_MODEL_NAME GetModelName; GET_MODEL_FAMILY GetModelFamily; GET_FIRMWARE_REVISION GetFirmwareRevision; GET_MANUFACTURER_NAME GetManufacturerName; GET_CPU_NAME GetCpuName; GET_ARM_MEM GetArmMem; GET_MODEL_INSTALLED_MB GetModelInstalledMB; NOTIFY_XHCI_RESET NotifyXhciReset; GET_CLOCK_STATE GetClockState; SET_CLOCK_STATE SetClockState; GPIO_SET_CFG SetGpioConfig; } RASPBERRY_PI_FIRMWARE_PROTOCOL; extern EFI_GUID gRaspberryPiFirmwareProtocolGuid; #endif /* __RASPBERRY_PI_FIRMWARE_PROTOCOL_H__ */