1121d0712SMarkus Armbruster #ifndef PCI_HOST_APB_H 2121d0712SMarkus Armbruster #define PCI_HOST_APB_H 318e08a55SMichael S. Tsirkin 4*0ea833c2SMark 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 1728edc7c9SMark Cave-Ayland #define TYPE_APB "pbm" 1828edc7c9SMark Cave-Ayland 1928edc7c9SMark Cave-Ayland #define APB_DEVICE(obj) \ 2028edc7c9SMark Cave-Ayland OBJECT_CHECK(APBState, (obj), TYPE_APB) 2128edc7c9SMark Cave-Ayland 2228edc7c9SMark Cave-Ayland typedef struct APBState { 2328edc7c9SMark Cave-Ayland PCIHostState parent_obj; 2428edc7c9SMark Cave-Ayland 25cacd0580SMark Cave-Ayland hwaddr special_base; 26cacd0580SMark Cave-Ayland hwaddr mem_base; 2728edc7c9SMark Cave-Ayland MemoryRegion apb_config; 2828edc7c9SMark Cave-Ayland MemoryRegion pci_config; 2928edc7c9SMark Cave-Ayland MemoryRegion pci_mmio; 3028edc7c9SMark Cave-Ayland MemoryRegion pci_ioport; 3128edc7c9SMark Cave-Ayland uint64_t pci_irq_in; 32aea5b071SMark Cave-Ayland IOMMUState *iommu; 334272ad40SMark Cave-Ayland PCIBridge *bridgeA; 344272ad40SMark Cave-Ayland PCIBridge *bridgeB; 3528edc7c9SMark Cave-Ayland uint32_t pci_control[16]; 3628edc7c9SMark Cave-Ayland uint32_t pci_irq_map[8]; 3728edc7c9SMark Cave-Ayland uint32_t pci_err_irq_map[4]; 3828edc7c9SMark Cave-Ayland uint32_t obio_irq_map[32]; 392a4d6af5SMark Cave-Ayland qemu_irq ivec_irqs[MAX_IVEC]; 4028edc7c9SMark Cave-Ayland unsigned int irq_request; 4128edc7c9SMark Cave-Ayland uint32_t reset_control; 4228edc7c9SMark Cave-Ayland unsigned int nr_resets; 4328edc7c9SMark Cave-Ayland } APBState; 4428edc7c9SMark Cave-Ayland 4528edc7c9SMark Cave-Ayland typedef struct PBMPCIBridge { 4628edc7c9SMark Cave-Ayland /*< private >*/ 4728edc7c9SMark Cave-Ayland PCIBridge parent_obj; 4828edc7c9SMark Cave-Ayland } PBMPCIBridge; 4928edc7c9SMark Cave-Ayland 5028edc7c9SMark Cave-Ayland #define TYPE_PBM_PCI_BRIDGE "pbm-bridge" 5128edc7c9SMark Cave-Ayland #define PBM_PCI_BRIDGE(obj) \ 5228edc7c9SMark Cave-Ayland OBJECT_CHECK(PBMPCIBridge, (obj), TYPE_PBM_PCI_BRIDGE) 5318e08a55SMichael S. Tsirkin 5418e08a55SMichael S. Tsirkin #endif 55