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