xref: /qemu/include/hw/pci-host/gpex.h (revision e361a772ffcd33675ffdd4637eea98a460dfed1b)
14d8fde11SAlexander Graf /*
24d8fde11SAlexander Graf  * QEMU Generic PCI Express Bridge Emulation
34d8fde11SAlexander Graf  *
44d8fde11SAlexander Graf  * Copyright (C) 2015 Alexander Graf <agraf@suse.de>
54d8fde11SAlexander Graf  *
64d8fde11SAlexander Graf  * This program is free software; you can redistribute it and/or modify
74d8fde11SAlexander Graf  * it under the terms of the GNU General Public License as published by
84d8fde11SAlexander Graf  * the Free Software Foundation; either version 2 of the License, or
94d8fde11SAlexander Graf  * (at your option) any later version.
104d8fde11SAlexander Graf  *
114d8fde11SAlexander Graf  * This program is distributed in the hope that it will be useful,
124d8fde11SAlexander Graf  * but WITHOUT ANY WARRANTY; without even the implied warranty of
134d8fde11SAlexander Graf  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
144d8fde11SAlexander Graf  * GNU General Public License for more details.
154d8fde11SAlexander Graf  *
16*e361a772SThomas Huth  * You should have received a copy of the GNU General Public License
17*e361a772SThomas Huth  * along with this program; if not, see <http://www.gnu.org/licenses/>
184d8fde11SAlexander Graf  */
194d8fde11SAlexander Graf 
204d8fde11SAlexander Graf #ifndef HW_GPEX_H
214d8fde11SAlexander Graf #define HW_GPEX_H
224d8fde11SAlexander Graf 
234d8fde11SAlexander Graf #include "hw/hw.h"
244d8fde11SAlexander Graf #include "hw/sysbus.h"
254d8fde11SAlexander Graf #include "hw/pci/pci.h"
264d8fde11SAlexander Graf #include "hw/pci/pcie_host.h"
274d8fde11SAlexander Graf 
284d8fde11SAlexander Graf #define TYPE_GPEX_HOST "gpex-pcihost"
294d8fde11SAlexander Graf #define GPEX_HOST(obj) \
304d8fde11SAlexander Graf      OBJECT_CHECK(GPEXHost, (obj), TYPE_GPEX_HOST)
314d8fde11SAlexander Graf 
324d8fde11SAlexander Graf #define TYPE_GPEX_ROOT_DEVICE "gpex-root"
334d8fde11SAlexander Graf #define MCH_PCI_DEVICE(obj) \
344d8fde11SAlexander Graf      OBJECT_CHECK(GPEXRootState, (obj), TYPE_GPEX_ROOT_DEVICE)
354d8fde11SAlexander Graf 
364d8fde11SAlexander Graf #define GPEX_NUM_IRQS 4
374d8fde11SAlexander Graf 
384d8fde11SAlexander Graf typedef struct GPEXRootState {
394d8fde11SAlexander Graf     /*< private >*/
404d8fde11SAlexander Graf     PCIDevice parent_obj;
414d8fde11SAlexander Graf     /*< public >*/
424d8fde11SAlexander Graf } GPEXRootState;
434d8fde11SAlexander Graf 
444d8fde11SAlexander Graf typedef struct GPEXHost {
454d8fde11SAlexander Graf     /*< private >*/
464d8fde11SAlexander Graf     PCIExpressHost parent_obj;
474d8fde11SAlexander Graf     /*< public >*/
484d8fde11SAlexander Graf 
494d8fde11SAlexander Graf     GPEXRootState gpex_root;
504d8fde11SAlexander Graf 
514d8fde11SAlexander Graf     MemoryRegion io_ioport;
524d8fde11SAlexander Graf     MemoryRegion io_mmio;
534d8fde11SAlexander Graf     qemu_irq irq[GPEX_NUM_IRQS];
5470bfdce6SPranavkumar Sawargaonkar     int irq_num[GPEX_NUM_IRQS];
554d8fde11SAlexander Graf } GPEXHost;
564d8fde11SAlexander Graf 
5770bfdce6SPranavkumar Sawargaonkar int gpex_set_irq_num(GPEXHost *s, int index, int gsi);
5870bfdce6SPranavkumar Sawargaonkar 
594d8fde11SAlexander Graf #endif /* HW_GPEX_H */
60