xref: /qemu/include/hw/uefi/var-service-api.h (revision 50aa3d0984d8a4a9c39d34e2f81e8a70674462e4)
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