2 * HP-PARISC Astro Bus connector with Elroy PCI host bridges
8 #include "hw/pci/pci_host.h"
10 #define ASTRO_HPA 0xfed00000
12 #define ROPES_PER_IOC 8 /* per Ike half or Pluto/Astro */
14 #define TYPE_ASTRO_CHIP "astro-chip"
15 OBJECT_DECLARE_SIMPLE_TYPE(AstroState
, ASTRO_CHIP
)
17 #define TYPE_ELROY_PCI_HOST_BRIDGE "elroy-pcihost"
18 OBJECT_DECLARE_SIMPLE_TYPE(ElroyState
, ELROY_PCI_HOST_BRIDGE
)
20 #define ELROY_NUM 4 /* # of Elroys */
21 #define ELROY_IRQS 8 /* IOSAPIC IRQs */
23 /* ASTRO Memory and I/O regions */
24 #define LMMIO_DIST_BASE_ADDR 0xf4000000ULL
25 #define LMMIO_DIST_BASE_SIZE 0x4000000ULL
27 #define IOS_DIST_BASE_ADDR 0xfffee00000ULL
28 #define IOS_DIST_BASE_SIZE 0x10000ULL
30 #define HF_ENABLE 0x40 /* enable HF mode (default is -1 mode) */
35 PCIHostState parent_obj
;
37 /* parent Astro device */
38 struct AstroState
*astro
;
40 /* HPA of this Elroy */
43 /* PCI bus number (Elroy number) */
44 unsigned int pci_bus_num
;
46 uint64_t config_address
;
47 uint64_t config_reg_elroy
;
49 uint64_t status_control
;
51 uint64_t mmio_base
[(0x0250 - 0x200) / 8];
52 uint64_t error_config
;
54 uint32_t iosapic_reg_select
;
55 uint64_t iosapic_reg
[0x20];
59 MemoryRegion this_mem
;
61 MemoryRegion pci_mmio
;
62 MemoryRegion pci_mmio_alias
;
63 MemoryRegion pci_hole
;
68 PCIHostState parent_obj
;
71 uint64_t ioc_status_ctrl
;
72 uint64_t ioc_ranges
[(0x03d8 - 0x300) / 8];
73 uint64_t ioc_rope_config
;
74 uint64_t ioc_status_control
;
75 uint64_t ioc_flush_control
;
76 uint64_t ioc_rope_control
[8];
81 uint64_t tlb_pdir_base
;
83 struct ElroyState
*elroy
[ELROY_NUM
];
85 MemoryRegion this_mem
;
87 MemoryRegion pci_mmio
;
90 IOMMUMemoryRegion iommu
;
91 AddressSpace iommu_as
;