158ea30f5SMarkus Armbruster #ifndef HW_PCI_HOST_SABRE_H 258ea30f5SMarkus Armbruster #define HW_PCI_HOST_SABRE_H 318e08a55SMichael S. Tsirkin 4ec150c7eSMarkus Armbruster #include "hw/pci/pci.h" 5ec150c7eSMarkus Armbruster #include "hw/pci/pci_host.h" 60ea833c2SMark Cave-Ayland #include "hw/sparc/sun4u_iommu.h" 7db1015e9SEduardo Habkost #include "qom/object.h" 8aea5b071SMark Cave-Ayland 92a4d6af5SMark Cave-Ayland #define MAX_IVEC 0x40 102a4d6af5SMark Cave-Ayland 114b10c8d7SMark Cave-Ayland /* OBIO IVEC IRQs */ 12a5546222SMark Cave-Ayland #define OBIO_HDD_IRQ 0x20 13a5546222SMark Cave-Ayland #define OBIO_NIC_IRQ 0x21 144b10c8d7SMark Cave-Ayland #define OBIO_LPT_IRQ 0x22 154b10c8d7SMark Cave-Ayland #define OBIO_FDD_IRQ 0x27 164b10c8d7SMark Cave-Ayland #define OBIO_KBD_IRQ 0x29 174b10c8d7SMark Cave-Ayland #define OBIO_MSE_IRQ 0x2a 184b10c8d7SMark Cave-Ayland #define OBIO_SER_IRQ 0x2b 194b10c8d7SMark Cave-Ayland 20db1015e9SEduardo Habkost struct SabrePCIState { 218fb28035SMark Cave-Ayland PCIDevice parent_obj; 22db1015e9SEduardo Habkost }; 238fb28035SMark Cave-Ayland 248fb28035SMark Cave-Ayland #define TYPE_SABRE_PCI_DEVICE "sabre-pci" 25*8063396bSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(SabrePCIState, SABRE_PCI_DEVICE) 2628edc7c9SMark Cave-Ayland 27db1015e9SEduardo Habkost struct SabreState { 2828edc7c9SMark Cave-Ayland PCIHostState parent_obj; 2928edc7c9SMark Cave-Ayland 30cacd0580SMark Cave-Ayland hwaddr special_base; 31cacd0580SMark Cave-Ayland hwaddr mem_base; 329b301794SMark Cave-Ayland MemoryRegion sabre_config; 3328edc7c9SMark Cave-Ayland MemoryRegion pci_config; 3428edc7c9SMark Cave-Ayland MemoryRegion pci_mmio; 3528edc7c9SMark Cave-Ayland MemoryRegion pci_ioport; 3628edc7c9SMark Cave-Ayland uint64_t pci_irq_in; 37aea5b071SMark Cave-Ayland IOMMUState *iommu; 384272ad40SMark Cave-Ayland PCIBridge *bridgeA; 394272ad40SMark Cave-Ayland PCIBridge *bridgeB; 4028edc7c9SMark Cave-Ayland uint32_t pci_control[16]; 4128edc7c9SMark Cave-Ayland uint32_t pci_irq_map[8]; 4228edc7c9SMark Cave-Ayland uint32_t pci_err_irq_map[4]; 4328edc7c9SMark Cave-Ayland uint32_t obio_irq_map[32]; 442a4d6af5SMark Cave-Ayland qemu_irq ivec_irqs[MAX_IVEC]; 4528edc7c9SMark Cave-Ayland unsigned int irq_request; 4628edc7c9SMark Cave-Ayland uint32_t reset_control; 4728edc7c9SMark Cave-Ayland unsigned int nr_resets; 48db1015e9SEduardo Habkost }; 4928edc7c9SMark Cave-Ayland 50b14dcaf4SMark Cave-Ayland #define TYPE_SABRE "sabre" 51*8063396bSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(SabreState, SABRE) 528fb28035SMark Cave-Ayland 5318e08a55SMichael S. Tsirkin #endif 54