xref: /qemu/include/hw/pci-host/gpex.h (revision 4d8fde1126419c5a858926a457a9b320a27a921a)
1*4d8fde11SAlexander Graf /*
2*4d8fde11SAlexander Graf  * QEMU Generic PCI Express Bridge Emulation
3*4d8fde11SAlexander Graf  *
4*4d8fde11SAlexander Graf  * Copyright (C) 2015 Alexander Graf <agraf@suse.de>
5*4d8fde11SAlexander Graf  *
6*4d8fde11SAlexander Graf  * This program is free software; you can redistribute it and/or modify
7*4d8fde11SAlexander Graf  * it under the terms of the GNU General Public License as published by
8*4d8fde11SAlexander Graf  * the Free Software Foundation; either version 2 of the License, or
9*4d8fde11SAlexander Graf  * (at your option) any later version.
10*4d8fde11SAlexander Graf  *
11*4d8fde11SAlexander Graf  * This program is distributed in the hope that it will be useful,
12*4d8fde11SAlexander Graf  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13*4d8fde11SAlexander Graf  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14*4d8fde11SAlexander Graf  * GNU General Public License for more details.
15*4d8fde11SAlexander Graf  *
16*4d8fde11SAlexander Graf  * You should have received a copy of the GNU Lesser General Public
17*4d8fde11SAlexander Graf  * License along with this library; if not, see <http://www.gnu.org/licenses/>
18*4d8fde11SAlexander Graf  */
19*4d8fde11SAlexander Graf 
20*4d8fde11SAlexander Graf #ifndef HW_GPEX_H
21*4d8fde11SAlexander Graf #define HW_GPEX_H
22*4d8fde11SAlexander Graf 
23*4d8fde11SAlexander Graf #include "hw/hw.h"
24*4d8fde11SAlexander Graf #include "hw/sysbus.h"
25*4d8fde11SAlexander Graf #include "hw/pci/pci.h"
26*4d8fde11SAlexander Graf #include "hw/pci/pcie_host.h"
27*4d8fde11SAlexander Graf 
28*4d8fde11SAlexander Graf #define TYPE_GPEX_HOST "gpex-pcihost"
29*4d8fde11SAlexander Graf #define GPEX_HOST(obj) \
30*4d8fde11SAlexander Graf      OBJECT_CHECK(GPEXHost, (obj), TYPE_GPEX_HOST)
31*4d8fde11SAlexander Graf 
32*4d8fde11SAlexander Graf #define TYPE_GPEX_ROOT_DEVICE "gpex-root"
33*4d8fde11SAlexander Graf #define MCH_PCI_DEVICE(obj) \
34*4d8fde11SAlexander Graf      OBJECT_CHECK(GPEXRootState, (obj), TYPE_GPEX_ROOT_DEVICE)
35*4d8fde11SAlexander Graf 
36*4d8fde11SAlexander Graf #define GPEX_NUM_IRQS 4
37*4d8fde11SAlexander Graf 
38*4d8fde11SAlexander Graf typedef struct GPEXRootState {
39*4d8fde11SAlexander Graf     /*< private >*/
40*4d8fde11SAlexander Graf     PCIDevice parent_obj;
41*4d8fde11SAlexander Graf     /*< public >*/
42*4d8fde11SAlexander Graf } GPEXRootState;
43*4d8fde11SAlexander Graf 
44*4d8fde11SAlexander Graf typedef struct GPEXHost {
45*4d8fde11SAlexander Graf     /*< private >*/
46*4d8fde11SAlexander Graf     PCIExpressHost parent_obj;
47*4d8fde11SAlexander Graf     /*< public >*/
48*4d8fde11SAlexander Graf 
49*4d8fde11SAlexander Graf     GPEXRootState gpex_root;
50*4d8fde11SAlexander Graf 
51*4d8fde11SAlexander Graf     MemoryRegion io_ioport;
52*4d8fde11SAlexander Graf     MemoryRegion io_mmio;
53*4d8fde11SAlexander Graf     qemu_irq irq[GPEX_NUM_IRQS];
54*4d8fde11SAlexander Graf } GPEXHost;
55*4d8fde11SAlexander Graf 
56*4d8fde11SAlexander Graf #endif /* HW_GPEX_H */
57