You've already forked edk2-platforms
mirror of
https://github.com/Dasharo/edk2-platforms.git
synced 2026-03-06 14:51:43 -08:00
Lets add some further mailbox helpers and convert the existing RpiFirmwareSetLed into a generic SetGpio() function. Signed-off-by: Jeremy Linton <jeremy.linton@arm.com> Reviewed-by: Andrei Warkentin <awarkentin@vmware.com> Reviewed-by: Philippe Mathieu-Daude <philmd@redhat.com>
205 lines
3.8 KiB
C
205 lines
3.8 KiB
C
/** @file
|
|
*
|
|
* Copyright (c) 2019, ARM Limited. All rights reserved.
|
|
* Copyright (c) 2017 - 2020, Andrei Warkentin <andrey.warkentin@gmail.com>
|
|
* 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__ */
|