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