arm64: dts: qcom: sm8550: add TRNG node
[linux-modified.git] / include / xen / interface / hvm / ioreq.h
1 /* SPDX-License-Identifier: MIT */
2 /*
3  * ioreq.h: I/O request definitions for device models
4  * Copyright (c) 2004, Intel Corporation.
5  */
6
7 #ifndef __XEN_PUBLIC_HVM_IOREQ_H__
8 #define __XEN_PUBLIC_HVM_IOREQ_H__
9
10 #define IOREQ_READ      1
11 #define IOREQ_WRITE     0
12
13 #define STATE_IOREQ_NONE        0
14 #define STATE_IOREQ_READY       1
15 #define STATE_IOREQ_INPROCESS   2
16 #define STATE_IORESP_READY      3
17
18 #define IOREQ_TYPE_PIO          0 /* pio */
19 #define IOREQ_TYPE_COPY         1 /* mmio ops */
20 #define IOREQ_TYPE_PCI_CONFIG   2
21 #define IOREQ_TYPE_TIMEOFFSET   7
22 #define IOREQ_TYPE_INVALIDATE   8 /* mapcache */
23
24 /*
25  * VMExit dispatcher should cooperate with instruction decoder to
26  * prepare this structure and notify service OS and DM by sending
27  * virq.
28  *
29  * For I/O type IOREQ_TYPE_PCI_CONFIG, the physical address is formatted
30  * as follows:
31  *
32  * 63....48|47..40|39..35|34..32|31........0
33  * SEGMENT |BUS   |DEV   |FN    |OFFSET
34  */
35 struct ioreq {
36         uint64_t addr;          /* physical address */
37         uint64_t data;          /* data (or paddr of data) */
38         uint32_t count;         /* for rep prefixes */
39         uint32_t size;          /* size in bytes */
40         uint32_t vp_eport;      /* evtchn for notifications to/from device model */
41         uint16_t _pad0;
42         uint8_t state:4;
43         uint8_t data_is_ptr:1;  /* if 1, data above is the guest paddr
44                                  * of the real data to use. */
45         uint8_t dir:1;          /* 1=read, 0=write */
46         uint8_t df:1;
47         uint8_t _pad1:1;
48         uint8_t type;           /* I/O type */
49 };
50
51 #endif /* __XEN_PUBLIC_HVM_IOREQ_H__ */