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