ppc/pnv: Drop pnv_is_power9() and pnv_is_power10() helpers
[qemu/kevin.git] / include / hw / ppc / pnv_xive.h
blobf4c7caad40eef7623ad34d24a0ccf0bd15d8e050
1 /*
2 * QEMU PowerPC XIVE interrupt controller model
4 * Copyright (c) 2017-2019, IBM Corporation.
6 * This code is licensed under the GPL version 2 or later. See the
7 * COPYING file in the top-level directory.
8 */
10 #ifndef PPC_PNV_XIVE_H
11 #define PPC_PNV_XIVE_H
13 #include "hw/ppc/xive.h"
15 struct PnvChip;
17 #define TYPE_PNV_XIVE "pnv-xive"
18 #define PNV_XIVE(obj) OBJECT_CHECK(PnvXive, (obj), TYPE_PNV_XIVE)
20 #define XIVE_BLOCK_MAX 16
22 #define XIVE_TABLE_BLK_MAX 16 /* Block Scope Table (0-15) */
23 #define XIVE_TABLE_MIG_MAX 16 /* Migration Register Table (1-15) */
24 #define XIVE_TABLE_VDT_MAX 16 /* VDT Domain Table (0-15) */
25 #define XIVE_TABLE_EDT_MAX 64 /* EDT Domain Table (0-63) */
27 typedef struct PnvXive {
28 XiveRouter parent_obj;
30 /* Owning chip */
31 struct PnvChip *chip;
33 /* XSCOM addresses giving access to the controller registers */
34 MemoryRegion xscom_regs;
36 /* Main MMIO regions that can be configured by FW */
37 MemoryRegion ic_mmio;
38 MemoryRegion ic_reg_mmio;
39 MemoryRegion ic_notify_mmio;
40 MemoryRegion ic_lsi_mmio;
41 MemoryRegion tm_indirect_mmio;
42 MemoryRegion vc_mmio;
43 MemoryRegion pc_mmio;
44 MemoryRegion tm_mmio;
47 * IPI and END address spaces modeling the EDT segmentation in the
48 * VC region
50 AddressSpace ipi_as;
51 MemoryRegion ipi_mmio;
52 MemoryRegion ipi_edt_mmio;
54 AddressSpace end_as;
55 MemoryRegion end_mmio;
56 MemoryRegion end_edt_mmio;
58 /* Shortcut values for the Main MMIO regions */
59 hwaddr ic_base;
60 uint32_t ic_shift;
61 hwaddr vc_base;
62 uint32_t vc_shift;
63 hwaddr pc_base;
64 uint32_t pc_shift;
65 hwaddr tm_base;
66 uint32_t tm_shift;
68 /* Our XIVE source objects for IPIs and ENDs */
69 XiveSource ipi_source;
70 XiveENDSource end_source;
72 /* Interrupt controller registers */
73 uint64_t regs[0x300];
76 * Virtual Structure Descriptor tables : EAT, SBE, ENDT, NVTT, IRQ
77 * These are in a SRAM protected by ECC.
79 uint64_t vsds[5][XIVE_BLOCK_MAX];
81 /* Translation tables */
82 uint64_t blk[XIVE_TABLE_BLK_MAX];
83 uint64_t mig[XIVE_TABLE_MIG_MAX];
84 uint64_t vdt[XIVE_TABLE_VDT_MAX];
85 uint64_t edt[XIVE_TABLE_EDT_MAX];
86 } PnvXive;
88 void pnv_xive_pic_print_info(PnvXive *xive, Monitor *mon);
90 #endif /* PPC_PNV_XIVE_H */