1 /* 2 * libqos PCI bindings for SPAPR 3 * 4 * This work is licensed under the terms of the GNU GPL, version 2 or later. 5 * See the COPYING file in the top-level directory. 6 */ 7 8 #ifndef LIBQOS_PCI_SPAPR_H 9 #define LIBQOS_PCI_SPAPR_H 10 11 #include "libqos/malloc.h" 12 #include "libqos/pci.h" 13 #include "libqos/qgraph.h" 14 15 /* From include/hw/pci-host/spapr.h */ 16 17 typedef struct QPCIWindow { 18 uint64_t pci_base; /* window address in PCI space */ 19 uint64_t size; /* window size */ 20 } QPCIWindow; 21 22 typedef struct QPCIBusSPAPR { 23 QOSGraphObject obj; 24 QPCIBus bus; 25 QGuestAllocator *alloc; 26 27 uint64_t buid; 28 29 uint64_t pio_cpu_base; 30 QPCIWindow pio; 31 32 uint64_t mmio32_cpu_base; 33 QPCIWindow mmio32; 34 } QPCIBusSPAPR; 35 36 void qpci_init_spapr(QPCIBusSPAPR *ret, QTestState *qts, 37 QGuestAllocator *alloc); 38 QPCIBus *qpci_new_spapr(QTestState *qts, QGuestAllocator *alloc); 39 void qpci_free_spapr(QPCIBus *bus); 40 41 #endif 42