xref: /qemu/tests/qtest/libqos/pci-spapr.h (revision b243c73cf4dc7017e28577c4056df0655427a76e)
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