xref: /qemu/include/hw/pci-host/sabre.h (revision b14dcaf4a0fc4a2837530a100b250e66333b2844)
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 
25*b14dcaf4SMark 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;
3028edc7c9SMark Cave-Ayland     MemoryRegion apb_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;
46*b14dcaf4SMark Cave-Ayland } SabreState;
4728edc7c9SMark Cave-Ayland 
48*b14dcaf4SMark Cave-Ayland #define TYPE_SABRE "sabre"
49*b14dcaf4SMark Cave-Ayland #define SABRE_DEVICE(obj) \
50*b14dcaf4SMark Cave-Ayland     OBJECT_CHECK(SabreState, (obj), TYPE_SABRE)
518fb28035SMark Cave-Ayland 
5218e08a55SMichael S. Tsirkin #endif
53