Merge tag 'pull-loongarch-20241016' of https://gitlab.com/gaosong/qemu into staging
[qemu/armbru.git] / include / hw / pci-host / astro.h
blobe2966917cd908d67f7aebca32e7861c58da88bde
1 /*
2 * HP-PARISC Astro Bus connector with Elroy PCI host bridges
3 */
5 #ifndef ASTRO_H
6 #define ASTRO_H
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) */
32 struct AstroState;
34 struct ElroyState {
35 PCIHostState parent_obj;
37 /* parent Astro device */
38 struct AstroState *astro;
40 /* HPA of this Elroy */
41 hwaddr hpa;
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;
50 uint64_t arb_mask;
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];
57 uint32_t ilr;
59 MemoryRegion this_mem;
61 MemoryRegion pci_mmio;
62 MemoryRegion pci_mmio_alias;
63 MemoryRegion pci_hole;
64 MemoryRegion pci_io;
67 struct AstroState {
68 PCIHostState parent_obj;
70 uint64_t ioc_ctrl;
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];
77 uint64_t tlb_ibase;
78 uint64_t tlb_imask;
79 uint64_t tlb_pcom;
80 uint64_t tlb_tcnfg;
81 uint64_t tlb_pdir_base;
83 struct ElroyState *elroy[ELROY_NUM];
85 MemoryRegion this_mem;
87 MemoryRegion pci_mmio;
88 MemoryRegion pci_io;
90 IOMMUMemoryRegion iommu;
91 AddressSpace iommu_as;
94 #endif