Skip to content

Commit 4741c1a

Browse files
committed
drivers: virtio: add xen_mmio_backend
driver Signed-off-by: TOKITA Hiroshi <[email protected]>
1 parent 6bf339e commit 4741c1a

File tree

8 files changed

+990
-4
lines changed

8 files changed

+990
-4
lines changed

drivers/virtio/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ zephyr_library()
66
zephyr_library_sources_ifdef(CONFIG_VIRTIO virtqueue.c virtio_common.c)
77
zephyr_library_sources_ifdef(CONFIG_VIRTIO_PCI virtio_pci.c)
88
zephyr_library_sources_ifdef(CONFIG_VIRTIO_MMIO virtio_mmio.c)
9+
zephyr_library_sources_ifdef(CONFIG_VIRTIO_XEN_MMIO_BACKEND xen_mmio_backend.c)

drivers/virtio/Kconfig

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@ config VIRTIO_MMIO
2222
help
2323
Enable options for VIRTIO over MMIO
2424

25+
config VIRTIO_XEN_MMIO_BACKEND
26+
bool "support for MMIO-based VIRTIO backend on Xen hypervisor"
27+
default y
28+
depends on DT_HAS_XEN_VIRTIO_MMIO_BACKEND_ENABLED
29+
help
30+
Enable VIRTIO-MMIO backedn on Xen hypervisor
31+
2532
endif # VIRTIO
2633

2734
module = VIRTIO

drivers/virtio/virtio_backend.h

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
2+
#define VIRTIO_DEVICE_ID_virtio_device1 1
3+
#define VIRTIO_DEVICE_ID_virtio_device2 2
4+
#define VIRTIO_DEVICE_ID_virtio_device3 3
5+
#define VIRTIO_DEVICE_ID_virtio_device4 4
6+
#define VIRTIO_DEVICE_ID_virtio_device5 5
7+
#define VIRTIO_DEVICE_ID_virtio_device6 6
8+
#define VIRTIO_DEVICE_ID_virtio_device7 7
9+
#define VIRTIO_DEVICE_ID_virtio_device8 8
10+
#define VIRTIO_DEVICE_ID_virtio_device9 9
11+
#define VIRTIO_DEVICE_ID_virtio_devicea 10
12+
#define VIRTIO_DEVICE_ID_virtio_deviceb 11
13+
#define VIRTIO_DEVICE_ID_virtio_devicec 12
14+
#define VIRTIO_DEVICE_ID_virtio_deviced 13
15+
#define VIRTIO_DEVICE_ID_virtio_devicee 14
16+
#define VIRTIO_DEVICE_ID_virtio_devicef 15
17+
#define VIRTIO_DEVICE_ID_virtio_device10 16
18+
#define VIRTIO_DEVICE_ID_virtio_device11 17
19+
#define VIRTIO_DEVICE_ID_virtio_device12 18
20+
#define VIRTIO_DEVICE_ID_virtio_device13 19
21+
#define VIRTIO_DEVICE_ID_virtio_device14 20
22+
#define VIRTIO_DEVICE_ID_virtio_device15 21
23+
#define VIRTIO_DEVICE_ID_virtio_device16 22
24+
#define VIRTIO_DEVICE_ID_virtio_device17 23
25+
#define VIRTIO_DEVICE_ID_virtio_device18 24
26+
#define VIRTIO_DEVICE_ID_virtio_device19 25
27+
#define VIRTIO_DEVICE_ID_virtio_device1a 26
28+
#define VIRTIO_DEVICE_ID_virtio_device1b 27
29+
#define VIRTIO_DEVICE_ID_virtio_device1c 28
30+
#define VIRTIO_DEVICE_ID_virtio_device1d 29
31+
#define VIRTIO_DEVICE_ID_virtio_device1e 30
32+
#define VIRTIO_DEVICE_ID_virtio_device1f 31
33+
#define VIRTIO_DEVICE_ID_virtio_device20 32
34+
#define VIRTIO_DEVICE_ID_virtio_device21 33
35+
#define VIRTIO_DEVICE_ID_virtio_device22 34
36+
#define VIRTIO_DEVICE_ID_virtio_device23 35
37+
#define VIRTIO_DEVICE_ID_virtio_device24 36
38+
#define VIRTIO_DEVICE_ID_virtio_device25 37
39+
#define VIRTIO_DEVICE_ID_virtio_device26 38
40+
#define VIRTIO_DEVICE_ID_virtio_device27 39
41+
#define VIRTIO_DEVICE_ID_virtio_device28 40
42+
#define VIRTIO_DEVICE_ID_virtio_device29 41
43+
#define VIRTIO_DEVICE_ID_virtio_device2a 42
44+
#define VIRTIO_DEVICE_ID_virtio_device2b 43
45+
#define VIRTIO_DEVICE_ID_virtio_device2c 44
46+
#define VIRTIO_DEVICE_ID_virtio_device2d 45
47+
#define VIRTIO_DEVICE_ID_virtio_device2e 46
48+
#define VIRTIO_DEVICE_ID_virtio_device2f 47
49+
50+
static const char* virtio_reg_name(size_t off)
51+
{
52+
switch (off) {
53+
case 0x000:
54+
return "VIRTIO_MMIO_MAGIC_VALUE";
55+
case 0x004:
56+
return "VIRTIO_MMIO_VERSION";
57+
case 0x008:
58+
return "VIRTIO_MMIO_DEVICE_ID";
59+
case 0x00c:
60+
return "VIRTIO_MMIO_VENDOR_ID";
61+
case 0x010:
62+
return "VIRTIO_MMIO_DEVICE_FEATURES";
63+
case 0x014:
64+
return "VIRTIO_MMIO_DEVICE_FEATURES_SEL";
65+
case 0x020:
66+
return "VIRTIO_MMIO_DRIVER_FEATURES";
67+
case 0x024:
68+
return "VIRTIO_MMIO_DRIVER_FEATURES_SEL";
69+
case 0x030:
70+
return "VIRTIO_MMIO_QUEUE_SEL";
71+
case 0x034:
72+
return "VIRTIO_MMIO_QUEUE_SIZE_MAX";
73+
case 0x038:
74+
return "VIRTIO_MMIO_QUEUE_SIZE";
75+
case 0x044:
76+
return "VIRTIO_MMIO_QUEUE_READY";
77+
case 0x050:
78+
return "VIRTIO_MMIO_QUEUE_NOTIFY";
79+
case 0x060:
80+
return "VIRTIO_MMIO_INTERRUPT_STATUS";
81+
case 0x064:
82+
return "VIRTIO_MMIO_INTERRUPT_ACK";
83+
case 0x070:
84+
return "VIRTIO_MMIO_STATUS";
85+
case 0x080:
86+
return "VIRTIO_MMIO_QUEUE_DESC_LOW";
87+
case 0x084:
88+
return "VIRTIO_MMIO_QUEUE_DESC_HIGH";
89+
case 0x090:
90+
return "VIRTIO_MMIO_QUEUE_AVAIL_LOW";
91+
case 0x094:
92+
return "VIRTIO_MMIO_QUEUE_AVAIL_HIGH";
93+
case 0x0a0:
94+
return "VIRTIO_MMIO_QUEUE_USED_LOW";
95+
case 0x0a4:
96+
return "VIRTIO_MMIO_QUEUE_USED_HIGH";
97+
case 0x0ac:
98+
return "VIRTIO_MMIO_SHM_SEL";
99+
case 0x0b0:
100+
return "VIRTIO_MMIO_SHM_LEN_LOW";
101+
case 0x0b4:
102+
return "VIRTIO_MMIO_SHM_LEN_HIGH";
103+
case 0x0b8:
104+
return "VIRTIO_MMIO_SHM_BASE_LOW";
105+
case 0x0bc:
106+
return "VIRTIO_MMIO_SHM_BASE_HIGH";
107+
case 0x0c0:
108+
return "VIRTIO_MMIO_QUEUE_RESET";
109+
case 0x0fc:
110+
return "VIRTIO_MMIO_CONFIG_GENERATION";
111+
case 0x100:
112+
return "VIRTIO_MMIO_CONFIG";
113+
default:
114+
return "?????";
115+
}
116+
}
117+

0 commit comments

Comments
 (0)