1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20#ifndef PPC_PNV_OCC_H
21#define PPC_PNV_OCC_H
22
23#include "hw/ppc/pnv_psi.h"
24
25#define TYPE_PNV_OCC "pnv-occ"
26#define PNV_OCC(obj) OBJECT_CHECK(PnvOCC, (obj), TYPE_PNV_OCC)
27#define TYPE_PNV8_OCC TYPE_PNV_OCC "-POWER8"
28#define PNV8_OCC(obj) OBJECT_CHECK(PnvOCC, (obj), TYPE_PNV8_OCC)
29#define TYPE_PNV9_OCC TYPE_PNV_OCC "-POWER9"
30#define PNV9_OCC(obj) OBJECT_CHECK(PnvOCC, (obj), TYPE_PNV9_OCC)
31
32typedef struct PnvOCC {
33 DeviceState xd;
34
35
36 uint64_t occmisc;
37
38 PnvPsi *psi;
39
40 MemoryRegion xscom_regs;
41} PnvOCC;
42
43#define PNV_OCC_CLASS(klass) \
44 OBJECT_CLASS_CHECK(PnvOCCClass, (klass), TYPE_PNV_OCC)
45#define PNV_OCC_GET_CLASS(obj) \
46 OBJECT_GET_CLASS(PnvOCCClass, (obj), TYPE_PNV_OCC)
47
48typedef struct PnvOCCClass {
49 DeviceClass parent_class;
50
51 int xscom_size;
52 const MemoryRegionOps *xscom_ops;
53 int psi_irq;
54} PnvOCCClass;
55
56#endif
57