158ea30f5SMarkus Armbruster #ifndef HW_PCI_HOST_SABRE_H 258ea30f5SMarkus Armbruster #define HW_PCI_HOST_SABRE_H 39b301794SMark Cave-Ayland 4edf5ca5dSMarkus Armbruster #include "hw/pci/pci_device.h" 5ec150c7eSMarkus Armbruster #include "hw/pci/pci_host.h" 69b301794SMark Cave-Ayland #include "hw/sparc/sun4u_iommu.h" 7db1015e9SEduardo Habkost #include "qom/object.h" 89b301794SMark Cave-Ayland 99b301794SMark Cave-Ayland #define MAX_IVEC 0x40 109b301794SMark Cave-Ayland 119b301794SMark Cave-Ayland /* OBIO IVEC IRQs */ 129b301794SMark Cave-Ayland #define OBIO_HDD_IRQ 0x20 139b301794SMark Cave-Ayland #define OBIO_NIC_IRQ 0x21 149b301794SMark Cave-Ayland #define OBIO_LPT_IRQ 0x22 159b301794SMark Cave-Ayland #define OBIO_FDD_IRQ 0x27 169b301794SMark Cave-Ayland #define OBIO_KBD_IRQ 0x29 179b301794SMark Cave-Ayland #define OBIO_MSE_IRQ 0x2a 189b301794SMark Cave-Ayland #define OBIO_SER_IRQ 0x2b 199b301794SMark Cave-Ayland 20db1015e9SEduardo Habkost struct SabrePCIState { 219b301794SMark Cave-Ayland PCIDevice parent_obj; 22db1015e9SEduardo Habkost }; 239b301794SMark Cave-Ayland 249b301794SMark Cave-Ayland #define TYPE_SABRE_PCI_DEVICE "sabre-pci" 258063396bSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(SabrePCIState, SABRE_PCI_DEVICE) 269b301794SMark Cave-Ayland 27db1015e9SEduardo Habkost struct SabreState { 289b301794SMark Cave-Ayland PCIHostState parent_obj; 299b301794SMark Cave-Ayland 309b301794SMark Cave-Ayland hwaddr special_base; 319b301794SMark Cave-Ayland hwaddr mem_base; 329b301794SMark Cave-Ayland MemoryRegion sabre_config; 339b301794SMark Cave-Ayland MemoryRegion pci_config; 349b301794SMark Cave-Ayland MemoryRegion pci_mmio; 359b301794SMark Cave-Ayland MemoryRegion pci_ioport; 369b301794SMark Cave-Ayland uint64_t pci_irq_in; 379b301794SMark Cave-Ayland IOMMUState *iommu; 389b301794SMark Cave-Ayland PCIBridge *bridgeA; 399b301794SMark Cave-Ayland PCIBridge *bridgeB; 409b301794SMark Cave-Ayland uint32_t pci_control[16]; 419b301794SMark Cave-Ayland uint32_t pci_irq_map[8]; 429b301794SMark Cave-Ayland uint32_t pci_err_irq_map[4]; 439b301794SMark Cave-Ayland uint32_t obio_irq_map[32]; 449b301794SMark Cave-Ayland qemu_irq ivec_irqs[MAX_IVEC]; 459b301794SMark Cave-Ayland unsigned int irq_request; 469b301794SMark Cave-Ayland uint32_t reset_control; 479b301794SMark Cave-Ayland unsigned int nr_resets; 48db1015e9SEduardo Habkost }; 499b301794SMark Cave-Ayland 509b301794SMark Cave-Ayland #define TYPE_SABRE "sabre" 518063396bSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(SabreState, SABRE) 529b301794SMark Cave-Ayland 539b301794SMark Cave-Ayland #endif 54