On 2016-12-01 09:56:31, Laszlo Ersek wrote: > Add the type and macro definitions related to QEMU's DMA-like fw_cfg > access method in a dedicated header file. > > Cc: Ard Biesheuvel <ard.biesheu...@linaro.org> > Cc: Jordan Justen <jordan.l.jus...@intel.com> > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Laszlo Ersek <ler...@redhat.com> > --- > OvmfPkg/Include/IndustryStandard/QemuFwCfgDma.h | 50 ++++++++++++++++++++
What do you think about just OvmfPkg/Include/IndustryStandard/QemuFwCfg.h? Arguably, the FIRMWARE_CONFIG_ITEM enums could be moved there as well... Then again, I think we could also just put this content into OvmfPkg/Include/Library/QemuFwCfgLib.h. -Jordan > 1 file changed, 50 insertions(+) > > diff --git a/OvmfPkg/Include/IndustryStandard/QemuFwCfgDma.h > b/OvmfPkg/Include/IndustryStandard/QemuFwCfgDma.h > new file mode 100644 > index 000000000000..37a5804adb05 > --- /dev/null > +++ b/OvmfPkg/Include/IndustryStandard/QemuFwCfgDma.h > @@ -0,0 +1,50 @@ > +/** @file > + Macro and type definitions related to QEMU's DMA-like fw_cfg access method, > + based on "docs/specs/fw_cfg.txt" in the QEMU tree. > + > + Copyright (C) 2016, Red Hat, Inc. > + > + This program and the accompanying materials are licensed and made available > + under the terms and conditions of the BSD License which accompanies this > + distribution. The full text of the license may be found at > + http://opensource.org/licenses/bsd-license.php > + > + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > WITHOUT > + WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. > +**/ > + > + > +#ifndef __FW_CFG_DMA__ > +#define __FW_CFG_DMA__ > + > +#include <Base.h> > + > +// > +// If the following bit is set in the UINT32 fw_cfg revision / feature bitmap > +// -- read from key 0x0001 with the basic IO Port or MMIO method --, then the > +// DMA interface is available. > +// > +#define FW_CFG_F_DMA BIT1 > + > +// > +// Communication structure for the DMA access method. All fields are encoded > in > +// big endian. > +// > +#pragma pack (1) > +typedef struct { > + UINT32 Control; > + UINT32 Length; > + UINT64 Address; > +} FW_CFG_DMA_ACCESS; > +#pragma pack () > + > +// > +// Macros for the FW_CFG_DMA_ACCESS.Control bitmap (in native encoding). > +// > +#define FW_CFG_DMA_CTL_ERROR BIT0 > +#define FW_CFG_DMA_CTL_READ BIT1 > +#define FW_CFG_DMA_CTL_SKIP BIT2 > +#define FW_CFG_DMA_CTL_SELECT BIT3 > +#define FW_CFG_DMA_CTL_WRITE BIT4 > + > +#endif > -- > 2.9.2 > > _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel