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