1121d0712SMarkus Armbruster #ifndef PCI_HOST_APB_H 2121d0712SMarkus Armbruster #define PCI_HOST_APB_H 318e08a55SMichael S. Tsirkin 40ea833c2SMark Cave-Ayland #include "hw/sparc/sun4u_iommu.h" 5aea5b071SMark Cave-Ayland 62a4d6af5SMark Cave-Ayland #define MAX_IVEC 0x40 72a4d6af5SMark Cave-Ayland 84b10c8d7SMark Cave-Ayland /* OBIO IVEC IRQs */ 9a5546222SMark Cave-Ayland #define OBIO_HDD_IRQ 0x20 10a5546222SMark Cave-Ayland #define OBIO_NIC_IRQ 0x21 114b10c8d7SMark Cave-Ayland #define OBIO_LPT_IRQ 0x22 124b10c8d7SMark Cave-Ayland #define OBIO_FDD_IRQ 0x27 134b10c8d7SMark Cave-Ayland #define OBIO_KBD_IRQ 0x29 144b10c8d7SMark Cave-Ayland #define OBIO_MSE_IRQ 0x2a 154b10c8d7SMark Cave-Ayland #define OBIO_SER_IRQ 0x2b 164b10c8d7SMark Cave-Ayland 178fb28035SMark Cave-Ayland typedef struct SabrePCIState { 188fb28035SMark Cave-Ayland PCIDevice parent_obj; 198fb28035SMark Cave-Ayland } SabrePCIState; 208fb28035SMark Cave-Ayland 218fb28035SMark Cave-Ayland #define TYPE_SABRE_PCI_DEVICE "sabre-pci" 228fb28035SMark Cave-Ayland #define SABRE_PCI_DEVICE(obj) \ 238fb28035SMark Cave-Ayland OBJECT_CHECK(SabrePCIState, (obj), TYPE_SABRE_PCI_DEVICE) 2428edc7c9SMark Cave-Ayland 25b14dcaf4SMark Cave-Ayland typedef struct SabreState { 2628edc7c9SMark Cave-Ayland PCIHostState parent_obj; 2728edc7c9SMark Cave-Ayland 28cacd0580SMark Cave-Ayland hwaddr special_base; 29cacd0580SMark Cave-Ayland hwaddr mem_base; 30*9b301794SMark Cave-Ayland MemoryRegion sabre_config; 3128edc7c9SMark Cave-Ayland MemoryRegion pci_config; 3228edc7c9SMark Cave-Ayland MemoryRegion pci_mmio; 3328edc7c9SMark Cave-Ayland MemoryRegion pci_ioport; 3428edc7c9SMark Cave-Ayland uint64_t pci_irq_in; 35aea5b071SMark Cave-Ayland IOMMUState *iommu; 364272ad40SMark Cave-Ayland PCIBridge *bridgeA; 374272ad40SMark Cave-Ayland PCIBridge *bridgeB; 3828edc7c9SMark Cave-Ayland uint32_t pci_control[16]; 3928edc7c9SMark Cave-Ayland uint32_t pci_irq_map[8]; 4028edc7c9SMark Cave-Ayland uint32_t pci_err_irq_map[4]; 4128edc7c9SMark Cave-Ayland uint32_t obio_irq_map[32]; 422a4d6af5SMark Cave-Ayland qemu_irq ivec_irqs[MAX_IVEC]; 4328edc7c9SMark Cave-Ayland unsigned int irq_request; 4428edc7c9SMark Cave-Ayland uint32_t reset_control; 4528edc7c9SMark Cave-Ayland unsigned int nr_resets; 46b14dcaf4SMark Cave-Ayland } SabreState; 4728edc7c9SMark Cave-Ayland 48b14dcaf4SMark Cave-Ayland #define TYPE_SABRE "sabre" 49b14dcaf4SMark Cave-Ayland #define SABRE_DEVICE(obj) \ 50b14dcaf4SMark Cave-Ayland OBJECT_CHECK(SabreState, (obj), TYPE_SABRE) 518fb28035SMark Cave-Ayland 5218e08a55SMichael S. Tsirkin #endif 53