xref: /qemu/include/hw/uefi/hardware-info.h (revision 50aa3d0984d8a4a9c39d34e2f81e8a70674462e4)
1*8d127aa8SGerd Hoffmann /*
2*8d127aa8SGerd Hoffmann  * SPDX-License-Identifier: GPL-2.0-or-later
3*8d127aa8SGerd Hoffmann  *
4*8d127aa8SGerd Hoffmann  * pass hardware information to uefi
5*8d127aa8SGerd Hoffmann  *
6*8d127aa8SGerd Hoffmann  * see OvmfPkg/Library/HardwareInfoLib/ in edk2
7*8d127aa8SGerd Hoffmann  */
8*8d127aa8SGerd Hoffmann #ifndef QEMU_UEFI_HARDWARE_INFO_H
9*8d127aa8SGerd Hoffmann #define QEMU_UEFI_HARDWARE_INFO_H
10*8d127aa8SGerd Hoffmann 
11*8d127aa8SGerd Hoffmann /* data structures */
12*8d127aa8SGerd Hoffmann 
13*8d127aa8SGerd Hoffmann typedef enum {
14*8d127aa8SGerd Hoffmann     HardwareInfoTypeUndefined  = 0,
15*8d127aa8SGerd Hoffmann     HardwareInfoTypeHostBridge = 1,
16*8d127aa8SGerd Hoffmann     HardwareInfoQemuUefiVars   = 2,
17*8d127aa8SGerd Hoffmann } HARDWARE_INFO_TYPE;
18*8d127aa8SGerd Hoffmann 
19*8d127aa8SGerd Hoffmann typedef struct {
20*8d127aa8SGerd Hoffmann     union {
21*8d127aa8SGerd Hoffmann         uint64_t            uint64;
22*8d127aa8SGerd Hoffmann         HARDWARE_INFO_TYPE  value;
23*8d127aa8SGerd Hoffmann     } type;
24*8d127aa8SGerd Hoffmann     uint64_t  size;
25*8d127aa8SGerd Hoffmann } HARDWARE_INFO_HEADER;
26*8d127aa8SGerd Hoffmann 
27*8d127aa8SGerd Hoffmann typedef struct {
28*8d127aa8SGerd Hoffmann     uint64_t  mmio_address;
29*8d127aa8SGerd Hoffmann } HARDWARE_INFO_SIMPLE_DEVICE;
30*8d127aa8SGerd Hoffmann 
31*8d127aa8SGerd Hoffmann /* qemu functions */
32*8d127aa8SGerd Hoffmann 
33*8d127aa8SGerd Hoffmann void hardware_info_register(HARDWARE_INFO_TYPE type, void *info, uint64_t size);
34*8d127aa8SGerd Hoffmann 
35*8d127aa8SGerd Hoffmann #endif /* QEMU_UEFI_HARDWARE_INFO_H */
36