xref: /qemu/include/hw/pci-host/sabre.h (revision 0ea833c24999093be6369f9145333bd10acfad76)
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