|
|
@@ -0,0 +1,92 @@ |
|
|
/* |
|
|
* 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 |
|
|
|
|
|
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 |