Files
system76-edk2/DynamicTablesPkg/Library/FdtHwInfoParserLib/FdtHwInfoParser.h
Pierre Gondois deb01dfd7f DynamicTablesPkg: Add FdtHwInfoParser library
Hardware information parser is an optional module defined
by the Dynamic Tables Framework. It can either parse an
XML, a Device Tree or a Json file containing the platform
hardware information to populate the platform information
repository.

FdtHwInfoParser library is an instance of a HwInfoParser
that parses a Device Tree and populates the Configuration
Manager Platform information repository.

FdtHwInfoParser library is aimed at providing a solution
for generating ACPI tables for Guest Partitions launched
by virtual machine managers (VMMs). One such use case is
Kvmtool where the Device Tree for the Guest is passed on
to the firmware by Kvmtool. The Configuration Manager for
Kvmtool firmware shall invoke the FdtHwInfoParser to parse
the Device Tree to populate the hardware information in
the Platform Info Repository. The Kvmtool Configuration
Manager can the process this information to generate the
required ACPI tables for the Guest VM.

This approach also scales well if the number of CPUs or
if the hardware configuration of the Guest partition is
varied.

FdtHwInfoParser thereby introduces 'Dynamic Tables for
Virtual Machines'.

Ref:https://bugzilla.tianocore.org/show_bug.cgi?id=3741
Signed-off-by: Pierre Gondois <Pierre.Gondois@arm.com>
Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
2021-12-14 16:07:00 +00:00

64 lines
2.0 KiB
C

/** @file
Flattened Device Tree parser definitions.
Copyright (c) 2021, ARM Limited. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef FDT_HW_INFO_PARSER_H_
#define FDT_HW_INFO_PARSER_H_
#include <FdtHwInfoParserInclude.h>
#include <ConfigurationManagerObject.h>
#include <Library/HwInfoParserLib.h>
#include "FdtUtility.h"
/** A structure describing the instance of the FdtHwInfoParser.
*/
typedef struct FdtHwInfoParser {
/// Pointer to the HwDataSource i.e. the
/// Flattened Device Tree (Fdt).
VOID *Fdt;
/// Pointer to the caller's context.
VOID *Context;
/// Function pointer called by the
/// parser when adding information.
HW_INFO_ADD_OBJECT HwInfoAdd;
} FDT_HW_INFO_PARSER;
/** A pointer type for FDT_HW_INFO_PARSER.
*/
typedef FDT_HW_INFO_PARSER *FDT_HW_INFO_PARSER_HANDLE;
/** Function pointer to a parser function.
A parser parses a Device Tree to populate a specific CmObj type. None,
one or many CmObj can be created by the parser.
The created CmObj are then handed to the parser's caller through the
HW_INFO_ADD_OBJECT interface.
This can also be a dispatcher. I.e. a function that not parsing a
Device Tree but calling other parsers.
@param [in] ParserHandle Handle to the parser instance.
@param [in] FdtBranch When searching for DT node name, restrict
the search to this Device Tree branch.
@retval EFI_SUCCESS The function completed successfully.
@retval EFI_ABORTED An error occurred.
@retval EFI_INVALID_PARAMETER Invalid parameter.
@retval EFI_NOT_FOUND Not found.
@retval EFI_UNSUPPORTED Unsupported.
**/
typedef
EFI_STATUS
(EFIAPI *FDT_HW_INFO_PARSER_FUNC)(
IN CONST FDT_HW_INFO_PARSER_HANDLE ParserHandle,
IN INT32 FdtBranch
);
#endif // FDT_HW_INFO_PARSER_H_