summaryrefslogtreecommitdiffstats
path: root/drivers/acpi/Ics.h
blob: 8289c90253cc3afaadf529f802aaf925f027bb09 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
#include <types.h>


class Ics
{
    protected:
        const uint8 type;
        const uint8 length;
    public:
        Ics() = delete;
        Ics(const Ics &) = delete;
        uint8 getLength() const;
};

class LapicStruct : public Ics
{
    private:
        const uint8 acpiProcUid;
        const uint8 apicId;
        const uint32 flags;
    public:
        LapicStruct() = delete;
        LapicStruct(const LapicStruct &) = delete;
};

class IoapicStruct : public Ics
{
    private:
        const uint8 ioapicId;
        const uint8 reserved;
        const uint32 ioapicAddr;
        const uint32 globalSysIntBase;
    public:
        IoapicStruct() = delete;
        IoapicStruct(const IoapicStruct &) = delete;
};

class IsoStruct : public Ics
{
    private:
        const uint8 bus;
        const uint8 source;
        const uint32 globalSysInt;
        const uint16 flags;
    public:
        IsoStruct() = delete;
        IsoStruct(const IsoStruct &) = delete;
};

class NmiSourceStruct: public Ics
{
    private:
        const uint16 flags;
        const uint32 globalSysInt;
    public:
        NmiSourceStruct() = delete;
        NmiSourceStruct(const NmiSourceStruct &) = delete;
};

class LapicNmiStruct : public Ics
{
    private:
        const uint8 acpiProcUid;
        const uint16 flags;
        const uint8 localApicLint;
    public:
        LapicNmiStruct() = delete;
        LapicNmiStruct(const LapicNmiStruct &) = delete;
};

class LapicAddrOverrrideStruct : public Ics
{
    private:
        const uint16 reserved;
        const uint64 lapicAddr;
    public:
        LapicAddrOverrrideStruct() = delete;
        LapicAddrOverrrideStruct(const LapicAddrOverrrideStruct &) = delete;
};

class IosapicStruct : public Ics
{
    private:
        const uint8 ioapicId;
        const uint8 reserved;
        const uint32 globSysIntBase;
        const uint64 iosapicAddr;
    public:
        IosapicStruct() = delete;
        IosapicStruct(const IosapicStruct &) = delete;
};

class LsapicStruct : public Ics
{
    private:
        const uint8 acpiProcId;
        const uint8 lsapicId;
        const uint8 lsapicUid;
        const uint8 reserved[3];
        const uint32 flags;
        const uint32 acpiProcUidValue;
        const uint8 acpiProcUidStringBegin;
    public:
        LsapicStruct() = delete;
        LsapicStruct(const LsapicStruct &) = delete;
};

class PlatformIntSourceStruct : public Ics
{
    private:
        const uint16 flags;
        const uint8 intType;
        const uint8 procId;
        const uint8 procEid;
        const uint8 iosapicVector;
        const uint32 globSysInt;
        const uint32 platformIntSourceFlags;
    public:
        PlatformIntSourceStruct() = delete;
        PlatformIntSourceStruct(const PlatformIntSourceStruct &) = delete;
};

class ProcLxapicStruct : public Ics
{
    private:
        const uint16 reserved;
        const uint32 xapicId;
        const uint32 flags;
        const uint32 acpiProcUid;
    public:
        ProcLxapicStruct() = delete;
        ProcLxapicStruct(const ProcLxapicStruct &) = delete;
};

class LocalXapicNmiStruct : public Ics
{
    private:
        const uint16 flags;
        const uint32 acpiProcUid;
        const uint8 localXapicLint;
        const uint8 reserved[3];
    public:
        LocalXapicNmiStruct() = delete;
        LocalXapicNmiStruct(const LocalXapicNmiStruct &) = delete;
};

class GiccStruct : public Ics
{
    private:
        const uint16 reservedBegin;
        const uint32 cpuInterfaceNumber;
        const uint32 acpiProcUid;
        const uint32 flags;
        const uint32 parkingProtocolVersion;
        const uint32 performanceIntGsiv;
        const uint64 parkedAddr;
        const uint64 physBaseAddr;
        const uint64 gicv;
        const uint64 gich;
        const uint32 vgicMaintenanceInt;
        const uint64 gicrBaseAddr;
        const uint64 mpidr;
        const uint8 ProcPowerEfficiencyClass;
        const uint8 reservedEnd;
        const uint16 speOverflowInterrupt;
    public:
        GiccStruct() = delete;
        GiccStruct(const GiccStruct &) = delete;
};

class GicdStruct : public Ics
{
    private:
        const uint16 reservedBegin;
        const uint32 gicId;
        const uint64 physBaseAddr;
        const uint32 sysVectorBase;
        const uint8 gicVersion;
        const uint8 reservedEnd[3];
    public:
        GicdStruct() = delete;
        GicdStruct(const GicdStruct &) = delete;
};

class GisMsiFrameStruct : public Ics
{
    private:
        const uint16 reserved;
        const uint32 gicMsiFrameId;
        const uint64 physBaseAddr;
        const uint32 flags;
        const uint16 spiCount;
        const uint16 spiBase;
    public:
        GisMsiFrameStruct() = delete;
        GisMsiFrameStruct(const GisMsiFrameStruct &) = delete;
};

class GicrStruct : public Ics
{
    private:
        const uint16 reserved;
        const uint64 discoveryRangeBaseAddr;
        const uint32 discoveryRangeLength;
    public:
        GicrStruct() = delete;
        GicrStruct(const GicrStruct &) = delete;
};

class ItsStruct : public Ics
{
    private:
        const uint16 reserved;
        const uint32 GicItsId;
        const uint64 physBaseAddr;
        const uint32 reservedEnd;
    public:
        ItsStruct() = delete;
        ItsStruct(const ItsStruct &) = delete;
};

class MprocWakeupStruct : Ics
{
    private:
        const uint16 mailBoxVersion;
        const uint32 reserved;
        const uint64 mailBoxAddr;
    public:
        MprocWakeupStruct() = delete;
        MprocWakeupStruct(const MprocWakeupStruct &) = delete;
};