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