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