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

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [include/] [acpi/] [acstruct.h] - Blame information for rev 62

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/******************************************************************************
2
 *
3
 * Name: acstruct.h - Internal structs
4
 *
5
 *****************************************************************************/
6
 
7
/*
8
 * Copyright (C) 2000 - 2007, 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 __ACSTRUCT_H__
45
#define __ACSTRUCT_H__
46
 
47
/* acpisrc:struct_defs -- for acpisrc conversion */
48
 
49
/*****************************************************************************
50
 *
51
 * Tree walking typedefs and structs
52
 *
53
 ****************************************************************************/
54
 
55
/*
56
 * Walk state - current state of a parse tree walk.  Used for both a leisurely
57
 * stroll through the tree (for whatever reason), and for control method
58
 * execution.
59
 */
60
#define ACPI_NEXT_OP_DOWNWARD       1
61
#define ACPI_NEXT_OP_UPWARD         2
62
 
63
/*
64
 * Groups of definitions for walk_type used for different implementations of
65
 * walkers (never simultaneously) - flags for interpreter:
66
 */
67
#define ACPI_WALK_NON_METHOD        0
68
#define ACPI_WALK_METHOD            0x01
69
#define ACPI_WALK_METHOD_RESTART    0x02
70
 
71
/* Flags for i_aSL compiler only */
72
 
73
#define ACPI_WALK_CONST_REQUIRED    0x10
74
#define ACPI_WALK_CONST_OPTIONAL    0x20
75
 
76
struct acpi_walk_state {
77
        struct acpi_walk_state *next;   /* Next walk_state in list */
78
        u8 descriptor_type;     /* To differentiate various internal objs */
79
        u8 walk_type;
80
        u16 opcode;             /* Current AML opcode */
81
        u8 next_op_info;        /* Info about next_op */
82
        u8 num_operands;        /* Stack pointer for Operands[] array */
83
        acpi_owner_id owner_id; /* Owner of objects created during the walk */
84
        u8 last_predicate;      /* Result of last predicate */
85
        u8 current_result;
86
        u8 return_used;
87
        u8 scope_depth;
88
        u8 pass_number;         /* Parse pass during table load */
89
        u32 aml_offset;
90
        u32 arg_types;
91
        u32 method_breakpoint;  /* For single stepping */
92
        u32 user_breakpoint;    /* User AML breakpoint */
93
        u32 parse_flags;
94
 
95
        struct acpi_parse_state parser_state;   /* Current state of parser */
96
        u32 prev_arg_types;
97
        u32 arg_count;          /* push for fixed or var args */
98
 
99
        struct acpi_namespace_node arguments[ACPI_METHOD_NUM_ARGS];     /* Control method arguments */
100
        struct acpi_namespace_node local_variables[ACPI_METHOD_NUM_LOCALS];     /* Control method locals */
101
        union acpi_operand_object *operands[ACPI_OBJ_NUM_OPERANDS + 1]; /* Operands passed to the interpreter (+1 for NULL terminator) */
102
        union acpi_operand_object **params;
103
 
104
        u8 *aml_last_while;
105
        union acpi_operand_object **caller_return_desc;
106
        union acpi_generic_state *control_state;        /* List of control states (nested IFs) */
107
        struct acpi_namespace_node *deferred_node;      /* Used when executing deferred opcodes */
108
        struct acpi_gpe_event_info *gpe_event_info;     /* Info for GPE (_Lxx/_Exx methods only */
109
        union acpi_operand_object *implicit_return_obj;
110
        struct acpi_namespace_node *method_call_node;   /* Called method Node */
111
        union acpi_parse_object *method_call_op;        /* method_call Op if running a method */
112
        union acpi_operand_object *method_desc; /* Method descriptor if running a method */
113
        struct acpi_namespace_node *method_node;        /* Method node if running a method. */
114
        union acpi_parse_object *op;    /* Current parser op */
115
        const struct acpi_opcode_info *op_info; /* Info on current opcode */
116
        union acpi_parse_object *origin;        /* Start of walk [Obsolete] */
117
        union acpi_operand_object *result_obj;
118
        union acpi_generic_state *results;      /* Stack of accumulated results */
119
        union acpi_operand_object *return_desc; /* Return object, if any */
120
        union acpi_generic_state *scope_info;   /* Stack of nested scopes */
121
        union acpi_parse_object *prev_op;       /* Last op that was processed */
122
        union acpi_parse_object *next_op;       /* next op to be processed */
123
        struct acpi_thread_state *thread;
124
        acpi_parse_downwards descending_callback;
125
        acpi_parse_upwards ascending_callback;
126
};
127
 
128
/* Info used by acpi_ps_init_objects */
129
 
130
struct acpi_init_walk_info {
131
        u16 method_count;
132
        u16 device_count;
133
        u16 op_region_count;
134
        u16 field_count;
135
        u16 buffer_count;
136
        u16 package_count;
137
        u16 op_region_init;
138
        u16 field_init;
139
        u16 buffer_init;
140
        u16 package_init;
141
        u16 object_count;
142
        acpi_owner_id owner_id;
143
        acpi_native_uint table_index;
144
};
145
 
146
struct acpi_get_devices_info {
147
        acpi_walk_callback user_function;
148
        void *context;
149
        const char *hid;
150
};
151
 
152
union acpi_aml_operands {
153
        union acpi_operand_object *operands[7];
154
 
155
        struct {
156
                struct acpi_object_integer *type;
157
                struct acpi_object_integer *code;
158
                struct acpi_object_integer *argument;
159
 
160
        } fatal;
161
 
162
        struct {
163
                union acpi_operand_object *source;
164
                struct acpi_object_integer *index;
165
                union acpi_operand_object *target;
166
 
167
        } index;
168
 
169
        struct {
170
                union acpi_operand_object *source;
171
                struct acpi_object_integer *index;
172
                struct acpi_object_integer *length;
173
                union acpi_operand_object *target;
174
 
175
        } mid;
176
};
177
 
178
/*
179
 * Structure used to pass object evaluation parameters.
180
 * Purpose is to reduce CPU stack use.
181
 */
182
struct acpi_evaluate_info {
183
        struct acpi_namespace_node *prefix_node;
184
        char *pathname;
185
        union acpi_operand_object *obj_desc;
186
        union acpi_operand_object **parameters;
187
        struct acpi_namespace_node *resolved_node;
188
        union acpi_operand_object *return_object;
189
        u8 pass_number;
190
        u8 parameter_type;
191
        u8 return_object_type;
192
        u8 flags;
193
};
194
 
195
/* Types for parameter_type above */
196
 
197
#define ACPI_PARAM_ARGS                 0
198
#define ACPI_PARAM_GPE                  1
199
 
200
/* Values for Flags above */
201
 
202
#define ACPI_IGNORE_RETURN_VALUE        1
203
 
204
/* Info used by acpi_ns_initialize_devices */
205
 
206
struct acpi_device_walk_info {
207
        u16 device_count;
208
        u16 num_STA;
209
        u16 num_INI;
210
        struct acpi_table_desc *table_desc;
211
        struct acpi_evaluate_info *evaluate_info;
212
};
213
 
214
/* TBD: [Restructure] Merge with struct above */
215
 
216
struct acpi_walk_info {
217
        u32 debug_level;
218
        u32 count;
219
        acpi_owner_id owner_id;
220
        u8 display_type;
221
};
222
 
223
/* Display Types */
224
 
225
#define ACPI_DISPLAY_SUMMARY        (u8) 0
226
#define ACPI_DISPLAY_OBJECTS        (u8) 1
227
#define ACPI_DISPLAY_MASK           (u8) 1
228
 
229
#define ACPI_DISPLAY_SHORT          (u8) 2
230
 
231
#endif

powered by: WebSVN 2.1.0

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