1*31ae8bb1SMark Cave-Ayland /*
2*31ae8bb1SMark Cave-Ayland  * QEMU Macintosh Nubus Virtio MMIO card
3*31ae8bb1SMark Cave-Ayland  *
4*31ae8bb1SMark Cave-Ayland  * Copyright (c) 2023 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
5*31ae8bb1SMark Cave-Ayland  *
6*31ae8bb1SMark Cave-Ayland  * SPDX-License-Identifier: GPL-2.0-or-later
7*31ae8bb1SMark Cave-Ayland  */
8*31ae8bb1SMark Cave-Ayland 
9*31ae8bb1SMark Cave-Ayland #ifndef HW_NUBUS_VIRTIO_MMIO_H
10*31ae8bb1SMark Cave-Ayland #define HW_NUBUS_VIRTIO_MMIO_H
11*31ae8bb1SMark Cave-Ayland 
12*31ae8bb1SMark Cave-Ayland #include "hw/nubus/nubus.h"
13*31ae8bb1SMark Cave-Ayland #include "qom/object.h"
14*31ae8bb1SMark Cave-Ayland #include "hw/intc/goldfish_pic.h"
15*31ae8bb1SMark Cave-Ayland #include "hw/virtio/virtio-mmio.h"
16*31ae8bb1SMark Cave-Ayland 
17*31ae8bb1SMark Cave-Ayland #define TYPE_NUBUS_VIRTIO_MMIO "nubus-virtio-mmio"
18*31ae8bb1SMark Cave-Ayland OBJECT_DECLARE_TYPE(NubusVirtioMMIO, NubusVirtioMMIODeviceClass,
19*31ae8bb1SMark Cave-Ayland                     NUBUS_VIRTIO_MMIO)
20*31ae8bb1SMark Cave-Ayland 
21*31ae8bb1SMark Cave-Ayland struct NubusVirtioMMIODeviceClass {
22*31ae8bb1SMark Cave-Ayland     DeviceClass parent_class;
23*31ae8bb1SMark Cave-Ayland 
24*31ae8bb1SMark Cave-Ayland     DeviceRealize parent_realize;
25*31ae8bb1SMark Cave-Ayland };
26*31ae8bb1SMark Cave-Ayland 
27*31ae8bb1SMark Cave-Ayland #define NUBUS_VIRTIO_MMIO_NUM_DEVICES 32
28*31ae8bb1SMark Cave-Ayland 
29*31ae8bb1SMark Cave-Ayland struct NubusVirtioMMIO {
30*31ae8bb1SMark Cave-Ayland     NubusDevice parent_obj;
31*31ae8bb1SMark Cave-Ayland 
32*31ae8bb1SMark Cave-Ayland     GoldfishPICState pic;
33*31ae8bb1SMark Cave-Ayland     VirtIOMMIOProxy virtio_mmio[NUBUS_VIRTIO_MMIO_NUM_DEVICES];
34*31ae8bb1SMark Cave-Ayland };
35*31ae8bb1SMark Cave-Ayland 
36*31ae8bb1SMark Cave-Ayland #endif
37