OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [acpi/] [actbl.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/******************************************************************************
2
 *
3
 * Name: actbl.h - Table data structures defined in ACPI specification
4
 *
5
 *****************************************************************************/
6
 
7
/*
8
 * Copyright (C) 2000 - 2004, R. Byron Moore
9
 * All rights reserved.
10
 *
11
 * Redistribution and use in source and binary forms, with or without
12
 * modification, are permitted provided that the following conditions
13
 * are met:
14
 * 1. Redistributions of source code must retain the above copyright
15
 *    notice, this list of conditions, and the following disclaimer,
16
 *    without modification.
17
 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18
 *    substantially similar to the "NO WARRANTY" disclaimer below
19
 *    ("Disclaimer") and any redistribution must be conditioned upon
20
 *    including a substantially similar Disclaimer requirement for further
21
 *    binary redistribution.
22
 * 3. Neither the names of the above-listed copyright holders nor the names
23
 *    of any contributors may be used to endorse or promote products derived
24
 *    from this software without specific prior written permission.
25
 *
26
 * Alternatively, this software may be distributed under the terms of the
27
 * GNU General Public License ("GPL") version 2 as published by the Free
28
 * Software Foundation.
29
 *
30
 * NO WARRANTY
31
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35
 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40
 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41
 * POSSIBILITY OF SUCH DAMAGES.
42
 */
43
 
44
#ifndef __ACTBL_H__
45
#define __ACTBL_H__
46
 
47
 
48
/*
49
 *  Values for description table header signatures
50
 */
51
#define RSDP_NAME               "RSDP"
52
#define RSDP_SIG                "RSD PTR "  /* RSDT Pointer signature */
53
#define APIC_SIG                "APIC"      /* Multiple APIC Description Table */
54
#define DSDT_SIG                "DSDT"      /* Differentiated System Description Table */
55
#define FADT_SIG                "FACP"      /* Fixed ACPI Description Table */
56
#define FACS_SIG                "FACS"      /* Firmware ACPI Control Structure */
57
#define PSDT_SIG                "PSDT"      /* Persistent System Description Table */
58
#define RSDT_SIG                "RSDT"      /* Root System Description Table */
59
#define XSDT_SIG                "XSDT"      /* Extended  System Description Table */
60
#define SSDT_SIG                "SSDT"      /* Secondary System Description Table */
61
#define SBST_SIG                "SBST"      /* Smart Battery Specification Table */
62
#define SPIC_SIG                "SPIC"      /* IOSAPIC table */
63
#define BOOT_SIG                "BOOT"      /* Boot table */
64
 
65
 
66
#define GL_OWNED                0x02        /* Ownership of global lock is bit 1 */
67
 
68
 
69
/*
70
 * Common table types.  The base code can remain
71
 * constant if the underlying tables are changed
72
 */
73
#define RSDT_DESCRIPTOR         struct rsdt_descriptor_rev2
74
#define XSDT_DESCRIPTOR         struct xsdt_descriptor_rev2
75
#define FACS_DESCRIPTOR         struct facs_descriptor_rev2
76
#define FADT_DESCRIPTOR         struct fadt_descriptor_rev2
77
 
78
 
79
#pragma pack(1)
80
 
81
/*
82
 * ACPI Version-independent tables
83
 *
84
 * NOTE: The tables that are specific to ACPI versions (1.0, 2.0, etc.)
85
 * are in separate files.
86
 */
87
struct rsdp_descriptor         /* Root System Descriptor Pointer */
88
{
89
        char                            signature [8];          /* ACPI signature, contains "RSD PTR " */
90
        u8                              checksum;               /* To make sum of struct == 0 */
91
        char                            oem_id [6];             /* OEM identification */
92
        u8                              revision;               /* Must be 0 for 1.0, 2 for 2.0 */
93
        u32                             rsdt_physical_address;  /* 32-bit physical address of RSDT */
94
        u32                             length;                 /* XSDT Length in bytes including hdr */
95
        u64                             xsdt_physical_address;  /* 64-bit physical address of XSDT */
96
        u8                              extended_checksum;      /* Checksum of entire table */
97
        char                            reserved [3];           /* Reserved field must be 0 */
98
};
99
 
100
 
101
struct acpi_common_facs          /* Common FACS for internal use */
102
{
103
        u32                             *global_lock;
104
        u64                             *firmware_waking_vector;
105
        u8                              vector_width;
106
};
107
 
108
 
109
#define ACPI_TABLE_HEADER_DEF   /* ACPI common table header */ \
110
        char                            signature [4];          /* ACPI signature (4 ASCII characters) */\
111
        u32                             length;                 /* Length of table, in bytes, including header */\
112
        u8                              revision;               /* ACPI Specification minor version # */\
113
        u8                              checksum;               /* To make sum of entire table == 0 */\
114
        char                            oem_id [6];             /* OEM identification */\
115
        char                            oem_table_id [8];       /* OEM table identification */\
116
        u32                             oem_revision;           /* OEM revision number */\
117
        char                            asl_compiler_id [4];    /* ASL compiler vendor ID */\
118
        u32                             asl_compiler_revision;  /* ASL compiler revision number */
119
 
120
 
121
struct acpi_table_header         /* ACPI common table header */
122
{
123
        ACPI_TABLE_HEADER_DEF
124
};
125
 
126
 
127
/*
128
 * MADT values and structures
129
 */
130
 
131
/* Values for MADT PCATCompat */
132
 
133
#define DUAL_PIC                0
134
#define MULTIPLE_APIC           1
135
 
136
 
137
/* Master MADT */
138
 
139
struct multiple_apic_table
140
{
141
        ACPI_TABLE_HEADER_DEF                           /* ACPI common table header */
142
        u32                             local_apic_address;     /* Physical address of local APIC */
143
        u32                             PCATcompat      : 1;    /* A one indicates system also has dual 8259s */
144
        u32                             reserved1       : 31;
145
};
146
 
147
 
148
/* Values for Type in APIC_HEADER_DEF */
149
 
150
#define APIC_PROCESSOR          0
151
#define APIC_IO                 1
152
#define APIC_XRUPT_OVERRIDE     2
153
#define APIC_NMI                3
154
#define APIC_LOCAL_NMI          4
155
#define APIC_ADDRESS_OVERRIDE   5
156
#define APIC_IO_SAPIC           6
157
#define APIC_LOCAL_SAPIC        7
158
#define APIC_XRUPT_SOURCE       8
159
#define APIC_RESERVED           9           /* 9 and greater are reserved */
160
 
161
/*
162
 * MADT sub-structures (Follow MULTIPLE_APIC_DESCRIPTION_TABLE)
163
 */
164
#define APIC_HEADER_DEF                     /* Common APIC sub-structure header */\
165
        u8                              type; \
166
        u8                              length;
167
 
168
struct apic_header
169
{
170
        APIC_HEADER_DEF
171
};
172
 
173
/* Values for MPS INTI flags */
174
 
175
#define POLARITY_CONFORMS       0
176
#define POLARITY_ACTIVE_HIGH    1
177
#define POLARITY_RESERVED       2
178
#define POLARITY_ACTIVE_LOW     3
179
 
180
#define TRIGGER_CONFORMS        0
181
#define TRIGGER_EDGE            1
182
#define TRIGGER_RESERVED        2
183
#define TRIGGER_LEVEL           3
184
 
185
/* Common flag definitions */
186
 
187
#define MPS_INTI_FLAGS \
188
        u16                             polarity        : 2;    /* Polarity of APIC I/O input signals */\
189
        u16                             trigger_mode    : 2;    /* Trigger mode of APIC input signals */\
190
        u16                             reserved1       : 12;   /* Reserved, must be zero */
191
 
192
#define LOCAL_APIC_FLAGS \
193
        u32                             processor_enabled: 1;   /* Processor is usable if set */\
194
        u32                             reserved2       : 31;   /* Reserved, must be zero */
195
 
196
/* Sub-structures for MADT */
197
 
198
struct madt_processor_apic
199
{
200
        APIC_HEADER_DEF
201
        u8                              processor_id;           /* ACPI processor id */
202
        u8                              local_apic_id;          /* Processor's local APIC id */
203
        LOCAL_APIC_FLAGS
204
};
205
 
206
struct madt_io_apic
207
{
208
        APIC_HEADER_DEF
209
        u8                              io_apic_id;             /* I/O APIC ID */
210
        u8                              reserved;               /* Reserved - must be zero */
211
        u32                             address;                /* APIC physical address */
212
        u32                             interrupt;              /* Global system interrupt where INTI
213
                          * lines start */
214
};
215
 
216
struct madt_interrupt_override
217
{
218
        APIC_HEADER_DEF
219
        u8                              bus;                    /* 0 - ISA */
220
        u8                              source;                 /* Interrupt source (IRQ) */
221
        u32                             interrupt;              /* Global system interrupt */
222
        MPS_INTI_FLAGS
223
};
224
 
225
struct madt_nmi_source
226
{
227
        APIC_HEADER_DEF
228
        MPS_INTI_FLAGS
229
        u32                             interrupt;              /* Global system interrupt */
230
};
231
 
232
struct madt_local_apic_nmi
233
{
234
        APIC_HEADER_DEF
235
        u8                              processor_id;           /* ACPI processor id */
236
        MPS_INTI_FLAGS
237
        u8                              lint;                   /* LINTn to which NMI is connected */
238
};
239
 
240
struct madt_address_override
241
{
242
        APIC_HEADER_DEF
243
        u16                             reserved;               /* Reserved - must be zero */
244
        u64                             address;                /* APIC physical address */
245
};
246
 
247
struct madt_io_sapic
248
{
249
        APIC_HEADER_DEF
250
        u8                              io_sapic_id;            /* I/O SAPIC ID */
251
        u8                              reserved;               /* Reserved - must be zero */
252
        u32                             interrupt_base;         /* Glocal interrupt for SAPIC start */
253
        u64                             address;                /* SAPIC physical address */
254
};
255
 
256
struct madt_local_sapic
257
{
258
        APIC_HEADER_DEF
259
        u8                              processor_id;           /* ACPI processor id */
260
        u8                              local_sapic_id;         /* SAPIC ID */
261
        u8                              local_sapic_eid;        /* SAPIC EID */
262
        u8                              reserved [3];           /* Reserved - must be zero */
263
        LOCAL_APIC_FLAGS
264
};
265
 
266
struct madt_interrupt_source
267
{
268
        APIC_HEADER_DEF
269
        MPS_INTI_FLAGS
270
        u8                              interrupt_type;         /* 1=PMI, 2=INIT, 3=corrected */
271
        u8                              processor_id;           /* Processor ID */
272
        u8                              processor_eid;          /* Processor EID */
273
        u8                              io_sapic_vector;        /* Vector value for PMI interrupts */
274
        u32                             interrupt;              /* Global system interrupt */
275
        u32                             reserved;               /* Reserved - must be zero */
276
};
277
 
278
 
279
/*
280
 * Smart Battery
281
 */
282
struct smart_battery_table
283
{
284
        ACPI_TABLE_HEADER_DEF
285
        u32                             warning_level;
286
        u32                             low_level;
287
        u32                             critical_level;
288
};
289
 
290
 
291
/*
292
 * High performance timer
293
 */
294
struct hpet_table
295
{
296
        ACPI_TABLE_HEADER_DEF
297
        u32                             hardware_id;
298
        u32                             base_address [3];
299
        u8                              hpet_number;
300
        u16                             clock_tick;
301
        u8                              attributes;
302
};
303
 
304
#pragma pack()
305
 
306
 
307
/*
308
 * ACPI Table information.  We save the table address, length,
309
 * and type of memory allocation (mapped or allocated) for each
310
 * table for 1) when we exit, and 2) if a new table is installed
311
 */
312
#define ACPI_MEM_NOT_ALLOCATED  0
313
#define ACPI_MEM_ALLOCATED      1
314
#define ACPI_MEM_MAPPED         2
315
 
316
/* Definitions for the Flags bitfield member of struct acpi_table_support */
317
 
318
#define ACPI_TABLE_SINGLE       0x00
319
#define ACPI_TABLE_MULTIPLE     0x01
320
#define ACPI_TABLE_EXECUTABLE   0x02
321
 
322
#define ACPI_TABLE_ROOT         0x00
323
#define ACPI_TABLE_PRIMARY      0x10
324
#define ACPI_TABLE_SECONDARY    0x20
325
#define ACPI_TABLE_ALL          0x30
326
#define ACPI_TABLE_TYPE_MASK    0x30
327
 
328
/* Data about each known table type */
329
 
330
struct acpi_table_support
331
{
332
        char                            *name;
333
        char                            *signature;
334
        void                            **global_ptr;
335
        u8                              sig_length;
336
        u8                              flags;
337
};
338
 
339
 
340
/*
341
 * Get the ACPI version-specific tables
342
 */
343
#include "actbl1.h"   /* Acpi 1.0 table definitions */
344
#include "actbl2.h"   /* Acpi 2.0 table definitions */
345
 
346
 
347
#endif /* __ACTBL_H__ */

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.