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