sabre.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #ifndef HW_PCI_HOST_SABRE_H
  2. #define HW_PCI_HOST_SABRE_H
  3. #include "hw/pci/pci_device.h"
  4. #include "hw/pci/pci_host.h"
  5. #include "hw/sparc/sun4u_iommu.h"
  6. #include "qom/object.h"
  7. #define MAX_IVEC 0x40
  8. /* OBIO IVEC IRQs */
  9. #define OBIO_HDD_IRQ 0x20
  10. #define OBIO_NIC_IRQ 0x21
  11. #define OBIO_LPT_IRQ 0x22
  12. #define OBIO_FDD_IRQ 0x27
  13. #define OBIO_KBD_IRQ 0x29
  14. #define OBIO_MSE_IRQ 0x2a
  15. #define OBIO_SER_IRQ 0x2b
  16. struct SabrePCIState {
  17. PCIDevice parent_obj;
  18. };
  19. #define TYPE_SABRE_PCI_DEVICE "sabre-pci"
  20. OBJECT_DECLARE_SIMPLE_TYPE(SabrePCIState, SABRE_PCI_DEVICE)
  21. struct SabreState {
  22. PCIHostState parent_obj;
  23. hwaddr special_base;
  24. hwaddr mem_base;
  25. MemoryRegion sabre_config;
  26. MemoryRegion pci_config;
  27. MemoryRegion pci_mmio;
  28. MemoryRegion pci_ioport;
  29. uint64_t pci_irq_in;
  30. IOMMUState *iommu;
  31. PCIBridge *bridgeA;
  32. PCIBridge *bridgeB;
  33. uint32_t pci_control[16];
  34. uint32_t pci_irq_map[8];
  35. uint32_t pci_err_irq_map[4];
  36. uint32_t obio_irq_map[32];
  37. qemu_irq ivec_irqs[MAX_IVEC];
  38. unsigned int irq_request;
  39. uint32_t reset_control;
  40. unsigned int nr_resets;
  41. };
  42. #define TYPE_SABRE "sabre"
  43. OBJECT_DECLARE_SIMPLE_TYPE(SabreState, SABRE)
  44. #endif