| /* |
| * HP-PARISC Astro Bus connector with Elroy PCI host bridges |
| */ |
| |
| #ifndef ASTRO_H |
| #define ASTRO_H |
| |
| #include "hw/pci/pci_host.h" |
| |
| #define ASTRO_HPA 0xfed00000 |
| |
| #define ROPES_PER_IOC 8 /* per Ike half or Pluto/Astro */ |
| |
| #define TYPE_ASTRO_CHIP "astro-chip" |
| OBJECT_DECLARE_SIMPLE_TYPE(AstroState, ASTRO_CHIP) |
| |
| #define TYPE_ELROY_PCI_HOST_BRIDGE "elroy-pcihost" |
| OBJECT_DECLARE_SIMPLE_TYPE(ElroyState, ELROY_PCI_HOST_BRIDGE) |
| |
| #define ELROY_NUM 4 /* # of Elroys */ |
| #define ELROY_IRQS 8 /* IOSAPIC IRQs */ |
| |
| /* ASTRO Memory and I/O regions */ |
| #define LMMIO_DIST_BASE_ADDR 0xf4000000ULL |
| #define LMMIO_DIST_BASE_SIZE 0x4000000ULL |
| |
| #define IOS_DIST_BASE_ADDR 0xfffee00000ULL |
| #define IOS_DIST_BASE_SIZE 0x10000ULL |
| |
| #define HF_ENABLE 0x40 /* enable HF mode (default is -1 mode) */ |
| |
| struct AstroState; |
| |
| struct ElroyState { |
| PCIHostState parent_obj; |
| |
| /* parent Astro device */ |
| struct AstroState *astro; |
| |
| /* HPA of this Elroy */ |
| hwaddr hpa; |
| |
| /* PCI bus number (Elroy number) */ |
| unsigned int pci_bus_num; |
| |
| uint64_t config_address; |
| uint64_t config_reg_elroy; |
| |
| uint64_t status_control; |
| uint64_t arb_mask; |
| uint64_t mmio_base[(0x0250 - 0x200) / 8]; |
| uint64_t error_config; |
| |
| uint32_t iosapic_reg_select; |
| uint64_t iosapic_reg[0x20]; |
| |
| uint32_t ilr; |
| |
| MemoryRegion this_mem; |
| |
| MemoryRegion pci_mmio; |
| MemoryRegion pci_mmio_alias; |
| MemoryRegion pci_hole; |
| MemoryRegion pci_io; |
| }; |
| |
| struct AstroState { |
| PCIHostState parent_obj; |
| |
| uint64_t ioc_ctrl; |
| uint64_t ioc_status_ctrl; |
| uint64_t ioc_ranges[(0x03d8 - 0x300) / 8]; |
| uint64_t ioc_rope_config; |
| uint64_t ioc_status_control; |
| uint64_t ioc_flush_control; |
| uint64_t ioc_rope_control[8]; |
| uint64_t tlb_ibase; |
| uint64_t tlb_imask; |
| uint64_t tlb_pcom; |
| uint64_t tlb_tcnfg; |
| uint64_t tlb_pdir_base; |
| |
| struct ElroyState *elroy[ELROY_NUM]; |
| |
| MemoryRegion this_mem; |
| |
| MemoryRegion pci_mmio; |
| MemoryRegion pci_io; |
| |
| IOMMUMemoryRegion iommu; |
| AddressSpace iommu_as; |
| }; |
| |
| #endif |