1*995496fdSGerd Hoffmann /* 2*995496fdSGerd Hoffmann * SPDX-License-Identifier: GPL-2.0-or-later 3*995496fdSGerd Hoffmann * 4*995496fdSGerd Hoffmann * uefi-vars device - API of the virtual device for guest/host communication. 5*995496fdSGerd Hoffmann */ 6*995496fdSGerd Hoffmann #ifndef QEMU_UEFI_VAR_SERVICE_API_H 7*995496fdSGerd Hoffmann #define QEMU_UEFI_VAR_SERVICE_API_H 8*995496fdSGerd Hoffmann 9*995496fdSGerd Hoffmann /* qom: device names */ 10*995496fdSGerd Hoffmann #define TYPE_UEFI_VARS_X64 "uefi-vars-x64" 11*995496fdSGerd Hoffmann #define TYPE_UEFI_VARS_SYSBUS "uefi-vars-sysbus" 12*995496fdSGerd Hoffmann 13*995496fdSGerd Hoffmann /* sysbus: fdt node path */ 14*995496fdSGerd Hoffmann #define UEFI_VARS_FDT_NODE "qemu-uefi-vars" 15*995496fdSGerd Hoffmann #define UEFI_VARS_FDT_COMPAT "qemu,uefi-vars" 16*995496fdSGerd Hoffmann 17*995496fdSGerd Hoffmann /* registers */ 18*995496fdSGerd Hoffmann #define UEFI_VARS_REG_MAGIC 0x00 /* 16 bit */ 19*995496fdSGerd Hoffmann #define UEFI_VARS_REG_CMD_STS 0x02 /* 16 bit */ 20*995496fdSGerd Hoffmann #define UEFI_VARS_REG_BUFFER_SIZE 0x04 /* 32 bit */ 21*995496fdSGerd Hoffmann #define UEFI_VARS_REG_DMA_BUFFER_ADDR_LO 0x08 /* 32 bit */ 22*995496fdSGerd Hoffmann #define UEFI_VARS_REG_DMA_BUFFER_ADDR_HI 0x0c /* 32 bit */ 23*995496fdSGerd Hoffmann #define UEFI_VARS_REG_PIO_BUFFER_TRANSFER 0x10 /* 8-64 bit */ 24*995496fdSGerd Hoffmann #define UEFI_VARS_REG_PIO_BUFFER_CRC32C 0x18 /* 32 bit (read-only) */ 25*995496fdSGerd Hoffmann #define UEFI_VARS_REG_FLAGS 0x1c /* 32 bit */ 26*995496fdSGerd Hoffmann #define UEFI_VARS_REGS_SIZE 0x20 27*995496fdSGerd Hoffmann 28*995496fdSGerd Hoffmann /* flags register */ 29*995496fdSGerd Hoffmann #define UEFI_VARS_FLAG_USE_PIO (1 << 0) 30*995496fdSGerd Hoffmann 31*995496fdSGerd Hoffmann /* magic value */ 32*995496fdSGerd Hoffmann #define UEFI_VARS_MAGIC_VALUE 0xef1 33*995496fdSGerd Hoffmann 34*995496fdSGerd Hoffmann /* command values */ 35*995496fdSGerd Hoffmann #define UEFI_VARS_CMD_RESET 0x01 36*995496fdSGerd Hoffmann #define UEFI_VARS_CMD_DMA_MM 0x02 37*995496fdSGerd Hoffmann #define UEFI_VARS_CMD_PIO_MM 0x03 38*995496fdSGerd Hoffmann #define UEFI_VARS_CMD_PIO_ZERO_OFFSET 0x04 39*995496fdSGerd Hoffmann 40*995496fdSGerd Hoffmann /* status values */ 41*995496fdSGerd Hoffmann #define UEFI_VARS_STS_SUCCESS 0x00 42*995496fdSGerd Hoffmann #define UEFI_VARS_STS_BUSY 0x01 43*995496fdSGerd Hoffmann #define UEFI_VARS_STS_ERR_UNKNOWN 0x10 44*995496fdSGerd Hoffmann #define UEFI_VARS_STS_ERR_NOT_SUPPORTED 0x11 45*995496fdSGerd Hoffmann #define UEFI_VARS_STS_ERR_BAD_BUFFER_SIZE 0x12 46*995496fdSGerd Hoffmann 47*995496fdSGerd Hoffmann 48*995496fdSGerd Hoffmann #endif /* QEMU_UEFI_VAR_SERVICE_API_H */ 49