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 11cf716b31SLaurent Vivier #include "libqos/malloc.h" 12cf716b31SLaurent Vivier #include "libqos/pci.h" 13*b8782d2aSEmanuele Giuseppe Esposito #include "libqos/qgraph.h" 14cf716b31SLaurent Vivier 15*b8782d2aSEmanuele Giuseppe Esposito /* From include/hw/pci-host/spapr.h */ 16*b8782d2aSEmanuele Giuseppe Esposito 17*b8782d2aSEmanuele Giuseppe Esposito typedef struct QPCIWindow { 18*b8782d2aSEmanuele Giuseppe Esposito uint64_t pci_base; /* window address in PCI space */ 19*b8782d2aSEmanuele Giuseppe Esposito uint64_t size; /* window size */ 20*b8782d2aSEmanuele Giuseppe Esposito } QPCIWindow; 21*b8782d2aSEmanuele Giuseppe Esposito 22*b8782d2aSEmanuele Giuseppe Esposito typedef struct QPCIBusSPAPR { 23*b8782d2aSEmanuele Giuseppe Esposito QOSGraphObject obj; 24*b8782d2aSEmanuele Giuseppe Esposito QPCIBus bus; 25*b8782d2aSEmanuele Giuseppe Esposito QGuestAllocator *alloc; 26*b8782d2aSEmanuele Giuseppe Esposito 27*b8782d2aSEmanuele Giuseppe Esposito uint64_t buid; 28*b8782d2aSEmanuele Giuseppe Esposito 29*b8782d2aSEmanuele Giuseppe Esposito uint64_t pio_cpu_base; 30*b8782d2aSEmanuele Giuseppe Esposito QPCIWindow pio; 31*b8782d2aSEmanuele Giuseppe Esposito 32*b8782d2aSEmanuele Giuseppe Esposito uint64_t mmio32_cpu_base; 33*b8782d2aSEmanuele Giuseppe Esposito QPCIWindow mmio32; 34*b8782d2aSEmanuele Giuseppe Esposito } QPCIBusSPAPR; 35*b8782d2aSEmanuele Giuseppe Esposito 36*b8782d2aSEmanuele Giuseppe Esposito void qpci_init_spapr(QPCIBusSPAPR *ret, QTestState *qts, 37*b8782d2aSEmanuele 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