TianoCore EDK2 master
Loading...
Searching...
No Matches
QemuFwCfgLibMmio.c File Reference
#include <Base.h>
#include <Uefi.h>
#include <Pi/PiBootMode.h>
#include <Pi/PiHob.h>
#include <Library/BaseLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/DebugLib.h>
#include <Library/HobLib.h>
#include <Library/IoLib.h>
#include <Library/QemuFwCfgLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Protocol/FdtClient.h>
#include "QemuFwCfgLibMmioInternal.h"

Go to the source code of this file.

Functions

VOID QemuBuildFwCfgResourceHob (IN QEMU_FW_CFG_RESOURCE *FwCfgResource)
 
QEMU_FW_CFG_RESOURCEQemuGetFwCfgResourceHob (VOID)
 
BOOLEAN EFIAPI QemuFwCfgIsAvailable (VOID)
 
VOID EFIAPI QemuFwCfgSelectItem (IN FIRMWARE_CONFIG_ITEM QemuFwCfgItem)
 
VOID EFIAPI MmioReadBytes (IN UINTN Size, IN VOID *Buffer OPTIONAL)
 
VOID DmaTransferBytes (IN UINTN Size, IN OUT VOID *Buffer OPTIONAL, IN UINT32 Control)
 
VOID EFIAPI DmaReadBytes (IN UINTN Size, IN VOID *Buffer OPTIONAL)
 
VOID EFIAPI QemuFwCfgReadBytes (IN UINTN Size, IN VOID *Buffer)
 
VOID EFIAPI MmioWriteBytes (IN UINTN Size, IN VOID *Buffer OPTIONAL)
 
VOID EFIAPI DmaWriteBytes (IN UINTN Size, IN VOID *Buffer OPTIONAL)
 
VOID EFIAPI QemuFwCfgWriteBytes (IN UINTN Size, IN VOID *Buffer)
 
VOID EFIAPI MmioSkipBytes (IN UINTN Size)
 
VOID EFIAPI DmaSkipBytes (IN UINTN Size)
 
VOID EFIAPI QemuFwCfgSkipBytes (IN UINTN Size)
 
UINT8 EFIAPI QemuFwCfgRead8 (VOID)
 
UINT16 EFIAPI QemuFwCfgRead16 (VOID)
 
UINT32 EFIAPI QemuFwCfgRead32 (VOID)
 
UINT64 EFIAPI QemuFwCfgRead64 (VOID)
 
RETURN_STATUS EFIAPI QemuFwCfgFindFile (IN CONST CHAR8 *Name, OUT FIRMWARE_CONFIG_ITEM *Item, OUT UINTN *Size)
 

Variables

READ_BYTES_FUNCTION * InternalQemuFwCfgReadBytes = MmioReadBytes
 
WRITE_BYTES_FUNCTION * InternalQemuFwCfgWriteBytes = MmioWriteBytes
 
SKIP_BYTES_FUNCTION * InternalQemuFwCfgSkipBytes = MmioSkipBytes
 

Detailed Description

Copyright (C) 2013 - 2014, Red Hat, Inc. Copyright (c) 2011 - 2013, Intel Corporation. All rights reserved.
(C) Copyright 2021 Hewlett Packard Enterprise Development LP
Copyright (c) 2024 Loongson Technology Corporation Limited. All rights reserved.

SPDX-License-Identifier: BSD-2-Clause-Patent

Definition in file QemuFwCfgLibMmio.c.

Function Documentation

◆ DmaReadBytes()

VOID EFIAPI DmaReadBytes ( IN UINTN  Size,
IN VOID *Buffer  OPTIONAL 
)

Fast READ_BYTES_FUNCTION.

Definition at line 247 of file QemuFwCfgLibMmio.c.

◆ DmaSkipBytes()

VOID EFIAPI DmaSkipBytes ( IN UINTN  Size)

Fast SKIP_BYTES_FUNCTION.

Definition at line 362 of file QemuFwCfgLibMmio.c.

◆ DmaTransferBytes()

VOID DmaTransferBytes ( IN UINTN  Size,
IN OUT VOID *Buffer  OPTIONAL,
IN UINT32  Control 
)

Transfer an array of bytes, or skip a number of bytes, using the DMA interface.

Parameters
[in]SizeSize in bytes to transfer or skip.
[in,out]BufferBuffer to read data into or write data from. Ignored, and may be NULL, if Size is zero, or Control is FW_CFG_DMA_CTL_SKIP.
[in]ControlOne of the following: FW_CFG_DMA_CTL_WRITE - write to fw_cfg from Buffer. FW_CFG_DMA_CTL_READ - read from fw_cfg into Buffer. FW_CFG_DMA_CTL_SKIP - skip bytes in fw_cfg.

Definition at line 188 of file QemuFwCfgLibMmio.c.

◆ DmaWriteBytes()

VOID EFIAPI DmaWriteBytes ( IN UINTN  Size,
IN VOID *Buffer  OPTIONAL 
)

Fast WRITE_BYTES_FUNCTION.

Definition at line 301 of file QemuFwCfgLibMmio.c.

◆ MmioReadBytes()

VOID EFIAPI MmioReadBytes ( IN UINTN  Size,
IN VOID *Buffer  OPTIONAL 
)

Slow READ_BYTES_FUNCTION.

Definition at line 124 of file QemuFwCfgLibMmio.c.

◆ MmioSkipBytes()

VOID EFIAPI MmioSkipBytes ( IN UINTN  Size)

Slow SKIP_BYTES_FUNCTION.

Definition at line 336 of file QemuFwCfgLibMmio.c.

◆ MmioWriteBytes()

VOID EFIAPI MmioWriteBytes ( IN UINTN  Size,
IN VOID *Buffer  OPTIONAL 
)

Slow WRITE_BYTES_FUNCTION.

Definition at line 284 of file QemuFwCfgLibMmio.c.

◆ QemuBuildFwCfgResourceHob()

VOID QemuBuildFwCfgResourceHob ( IN QEMU_FW_CFG_RESOURCE FwCfgResource)

Build firmware configure resource HOB.

Parameters
[in]FwCfgResourceA pointer to firmware configure resource.
Return values
VOID

Definition at line 44 of file QemuFwCfgLibMmio.c.

◆ QemuFwCfgFindFile()

RETURN_STATUS EFIAPI QemuFwCfgFindFile ( IN CONST CHAR8 *  Name,
OUT FIRMWARE_CONFIG_ITEM *  Item,
OUT UINTN Size 
)

Find the configuration item corresponding to the firmware configuration file.

Parameters
[in]NameName of file to look up.
[out]ItemConfiguration item corresponding to the file, to be passed to QemuFwCfgSelectItem ().
[out]SizeNumber of bytes in the file.
Return values
RETURN_SUCCESSIf file is found.
RETURN_NOT_FOUNDIf file is not found.
RETURN_UNSUPPORTEDIf firmware configuration is unavailable.

Definition at line 476 of file QemuFwCfgLibMmio.c.

◆ QemuFwCfgIsAvailable()

BOOLEAN EFIAPI QemuFwCfgIsAvailable ( VOID  )

Returns a boolean indicating if the firmware configuration interface is available or not.

This function may change fw_cfg state.

Return values
TRUEThe interface is available
FALSEThe interface is not available

Definition at line 92 of file QemuFwCfgLibMmio.c.

◆ QemuFwCfgRead16()

UINT16 EFIAPI QemuFwCfgRead16 ( VOID  )

Reads a UINT16 firmware configuration value

Returns
Value of Firmware Configuration item read

Definition at line 415 of file QemuFwCfgLibMmio.c.

◆ QemuFwCfgRead32()

UINT32 EFIAPI QemuFwCfgRead32 ( VOID  )

Reads a UINT32 firmware configuration value

Returns
Value of Firmware Configuration item read

Definition at line 433 of file QemuFwCfgLibMmio.c.

◆ QemuFwCfgRead64()

UINT64 EFIAPI QemuFwCfgRead64 ( VOID  )

Reads a UINT64 firmware configuration value

Returns
Value of Firmware Configuration item read

Definition at line 451 of file QemuFwCfgLibMmio.c.

◆ QemuFwCfgRead8()

UINT8 EFIAPI QemuFwCfgRead8 ( VOID  )

Reads a UINT8 firmware configuration value

Returns
Value of Firmware Configuration item read

Definition at line 397 of file QemuFwCfgLibMmio.c.

◆ QemuFwCfgReadBytes()

VOID EFIAPI QemuFwCfgReadBytes ( IN UINTN  Size,
IN VOID *  Buffer 
)

Reads firmware configuration bytes into a buffer

If called multiple times, then the data read will continue at the offset of the firmware configuration item where the previous read ended.

Parameters
[in]SizeSize in bytes to read
[in]BufferBuffer to store data into

Definition at line 267 of file QemuFwCfgLibMmio.c.

◆ QemuFwCfgSelectItem()

VOID EFIAPI QemuFwCfgSelectItem ( IN FIRMWARE_CONFIG_ITEM  QemuFwCfgItem)

Selects a firmware configuration item for reading.

Following this call, any data read from this item will start from the beginning of the configuration item's data.

Parameters
[in]QemuFwCfgItemFirmware Configuration item to read

Definition at line 110 of file QemuFwCfgLibMmio.c.

◆ QemuFwCfgSkipBytes()

VOID EFIAPI QemuFwCfgSkipBytes ( IN UINTN  Size)

Skip bytes in the firmware configuration item.

Increase the offset of the firmware configuration item without transferring bytes between the item and a caller-provided buffer. Subsequent read, write or skip operations will commence at the increased offset.

Parameters
[in]SizeNumber of bytes to skip.

Definition at line 380 of file QemuFwCfgLibMmio.c.

◆ QemuFwCfgWriteBytes()

VOID EFIAPI QemuFwCfgWriteBytes ( IN UINTN  Size,
IN VOID *  Buffer 
)

Write firmware configuration bytes from a buffer

If called multiple times, then the data written will continue at the offset of the firmware configuration item where the previous write ended.

Parameters
[in]SizeSize in bytes to write
[in]BufferBuffer to read data from

Definition at line 321 of file QemuFwCfgLibMmio.c.

◆ QemuGetFwCfgResourceHob()

QEMU_FW_CFG_RESOURCE * QemuGetFwCfgResourceHob ( VOID  )

Get firmware configure resource in HOB.

Parameters
VOID
Return values
non-NULLThe firmware configure resource in HOB. NULL The firmware configure resource not found.

Definition at line 64 of file QemuFwCfgLibMmio.c.

Variable Documentation

◆ InternalQemuFwCfgReadBytes

READ_BYTES_FUNCTION* InternalQemuFwCfgReadBytes = MmioReadBytes

Definition at line 32 of file QemuFwCfgLibMmio.c.

◆ InternalQemuFwCfgSkipBytes

SKIP_BYTES_FUNCTION* InternalQemuFwCfgSkipBytes = MmioSkipBytes

Definition at line 34 of file QemuFwCfgLibMmio.c.

◆ InternalQemuFwCfgWriteBytes

WRITE_BYTES_FUNCTION* InternalQemuFwCfgWriteBytes = MmioWriteBytes

Definition at line 33 of file QemuFwCfgLibMmio.c.