Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 /******************************************************************************
  2  *
  3  * Name: acinterp.h - Interpreter subcomponent prototypes and defines
  4  *
  5  *****************************************************************************/
  6 
  7 /*
  8  * Copyright (C) 2000 - 2005, 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 __ACINTERP_H__
 45 #define __ACINTERP_H__
 46 
 47 
 48 #define ACPI_WALK_OPERANDS       (&(walk_state->operands [walk_state->num_operands -1]))
 49 
 50 
 51 acpi_status
 52 acpi_ex_resolve_operands (
 53         u16                             opcode,
 54         union acpi_operand_object       **stack_ptr,
 55         struct acpi_walk_state          *walk_state);
 56 
 57 acpi_status
 58 acpi_ex_check_object_type (
 59         acpi_object_type                type_needed,
 60         acpi_object_type                this_type,
 61         void                            *object);
 62 
 63 /*
 64  * exxface - External interpreter interfaces
 65  */
 66 
 67 acpi_status
 68 acpi_ex_load_table (
 69         acpi_table_type                 table_id);
 70 
 71 acpi_status
 72 acpi_ex_execute_method (
 73         struct acpi_namespace_node      *method_node,
 74         union acpi_operand_object       **params,
 75         union acpi_operand_object       **return_obj_desc);
 76 
 77 
 78 /*
 79  * exconvrt - object conversion
 80  */
 81 
 82 acpi_status
 83 acpi_ex_convert_to_integer (
 84         union acpi_operand_object       *obj_desc,
 85         union acpi_operand_object       **result_desc,
 86         u32                             flags);
 87 
 88 acpi_status
 89 acpi_ex_convert_to_buffer (
 90         union acpi_operand_object       *obj_desc,
 91         union acpi_operand_object       **result_desc);
 92 
 93 acpi_status
 94 acpi_ex_convert_to_string (
 95         union acpi_operand_object       *obj_desc,
 96         union acpi_operand_object       **result_desc,
 97         u32                             type);
 98 
 99 /* Types for ->String conversion */
100 
101 #define ACPI_EXPLICIT_BYTE_COPY         0x00000000
102 #define ACPI_EXPLICIT_CONVERT_HEX       0x00000001
103 #define ACPI_IMPLICIT_CONVERT_HEX       0x00000002
104 #define ACPI_EXPLICIT_CONVERT_DECIMAL   0x00000003
105 
106 acpi_status
107 acpi_ex_convert_to_target_type (
108         acpi_object_type                destination_type,
109         union acpi_operand_object       *source_desc,
110         union acpi_operand_object       **result_desc,
111         struct acpi_walk_state          *walk_state);
112 
113 u32
114 acpi_ex_convert_to_ascii (
115         acpi_integer                    integer,
116         u16                             base,
117         u8                              *string,
118         u8                              max_length);
119 
120 /*
121  * exfield - ACPI AML (p-code) execution - field manipulation
122  */
123 
124 acpi_status
125 acpi_ex_common_buffer_setup (
126         union acpi_operand_object       *obj_desc,
127         u32                             buffer_length,
128         u32                             *datum_count);
129 
130 acpi_status
131 acpi_ex_extract_from_field (
132         union acpi_operand_object       *obj_desc,
133         void                            *buffer,
134         u32                             buffer_length);
135 
136 acpi_status
137 acpi_ex_insert_into_field (
138         union acpi_operand_object       *obj_desc,
139         void                            *buffer,
140         u32                             buffer_length);
141 
142 acpi_status
143 acpi_ex_setup_region (
144         union acpi_operand_object       *obj_desc,
145         u32                             field_datum_byte_offset);
146 
147 acpi_status
148 acpi_ex_access_region (
149         union acpi_operand_object       *obj_desc,
150         u32                             field_datum_byte_offset,
151         acpi_integer                    *value,
152         u32                             read_write);
153 
154 u8
155 acpi_ex_register_overflow (
156         union acpi_operand_object       *obj_desc,
157         acpi_integer                    value);
158 
159 acpi_status
160 acpi_ex_field_datum_io (
161         union acpi_operand_object       *obj_desc,
162         u32                             field_datum_byte_offset,
163         acpi_integer                    *value,
164         u32                             read_write);
165 
166 acpi_status
167 acpi_ex_write_with_update_rule (
168         union acpi_operand_object       *obj_desc,
169         acpi_integer                    mask,
170         acpi_integer                    field_value,
171         u32                             field_datum_byte_offset);
172 
173 void
174 acpi_ex_get_buffer_datum(
175         acpi_integer                    *datum,
176         void                            *buffer,
177         u32                             buffer_length,
178         u32                             byte_granularity,
179         u32                             buffer_offset);
180 
181 void
182 acpi_ex_set_buffer_datum (
183         acpi_integer                    merged_datum,
184         void                            *buffer,
185         u32                             buffer_length,
186         u32                             byte_granularity,
187         u32                             buffer_offset);
188 
189 acpi_status
190 acpi_ex_read_data_from_field (
191         struct acpi_walk_state          *walk_state,
192         union acpi_operand_object       *obj_desc,
193         union acpi_operand_object       **ret_buffer_desc);
194 
195 acpi_status
196 acpi_ex_write_data_to_field (
197         union acpi_operand_object       *source_desc,
198         union acpi_operand_object       *obj_desc,
199         union acpi_operand_object       **result_desc);
200 
201 /*
202  * exmisc - ACPI AML (p-code) execution - specific opcodes
203  */
204 
205 acpi_status
206 acpi_ex_opcode_3A_0T_0R (
207         struct acpi_walk_state          *walk_state);
208 
209 acpi_status
210 acpi_ex_opcode_3A_1T_1R (
211         struct acpi_walk_state          *walk_state);
212 
213 acpi_status
214 acpi_ex_opcode_6A_0T_1R (
215         struct acpi_walk_state          *walk_state);
216 
217 u8
218 acpi_ex_do_match (
219         u32                             match_op,
220         union acpi_operand_object       *package_obj,
221         union acpi_operand_object       *match_obj);
222 
223 acpi_status
224 acpi_ex_get_object_reference (
225         union acpi_operand_object       *obj_desc,
226         union acpi_operand_object       **return_desc,
227         struct acpi_walk_state          *walk_state);
228 
229 acpi_status
230 acpi_ex_resolve_multiple (
231         struct acpi_walk_state          *walk_state,
232         union acpi_operand_object       *operand,
233         acpi_object_type                *return_type,
234         union acpi_operand_object       **return_desc);
235 
236 acpi_status
237 acpi_ex_concat_template (
238         union acpi_operand_object       *obj_desc,
239         union acpi_operand_object       *obj_desc2,
240         union acpi_operand_object       **actual_return_desc,
241         struct acpi_walk_state          *walk_state);
242 
243 acpi_status
244 acpi_ex_do_concatenate (
245         union acpi_operand_object       *obj_desc,
246         union acpi_operand_object       *obj_desc2,
247         union acpi_operand_object       **actual_return_desc,
248         struct acpi_walk_state          *walk_state);
249 
250 acpi_status
251 acpi_ex_do_logical_numeric_op (
252         u16                             opcode,
253         acpi_integer                    integer0,
254         acpi_integer                    integer1,
255         u8                              *logical_result);
256 
257 acpi_status
258 acpi_ex_do_logical_op (
259         u16                             opcode,
260         union acpi_operand_object       *operand0,
261         union acpi_operand_object       *operand1,
262         u8                              *logical_result);
263 
264 acpi_integer
265 acpi_ex_do_math_op (
266         u16                             opcode,
267         acpi_integer                    operand0,
268         acpi_integer                    operand1);
269 
270 acpi_status
271 acpi_ex_create_mutex (
272         struct acpi_walk_state          *walk_state);
273 
274 acpi_status
275 acpi_ex_create_processor (
276         struct acpi_walk_state          *walk_state);
277 
278 acpi_status
279 acpi_ex_create_power_resource (
280         struct acpi_walk_state          *walk_state);
281 
282 acpi_status
283 acpi_ex_create_region (
284         u8                              *aml_start,
285         u32                             aml_length,
286         u8                              region_space,
287         struct acpi_walk_state          *walk_state);
288 
289 acpi_status
290 acpi_ex_create_table_region (
291         struct acpi_walk_state          *walk_state);
292 
293 acpi_status
294 acpi_ex_create_event (
295         struct acpi_walk_state          *walk_state);
296 
297 acpi_status
298 acpi_ex_create_alias (
299         struct acpi_walk_state          *walk_state);
300 
301 acpi_status
302 acpi_ex_create_method (
303         u8                              *aml_start,
304         u32                             aml_length,
305         struct acpi_walk_state          *walk_state);
306 
307 
308 /*
309  * exconfig - dynamic table load/unload
310  */
311 
312 acpi_status
313 acpi_ex_add_table (
314         struct acpi_table_header        *table,
315         struct acpi_namespace_node      *parent_node,
316         union acpi_operand_object       **ddb_handle);
317 
318 acpi_status
319 acpi_ex_load_op (
320         union acpi_operand_object       *obj_desc,
321         union acpi_operand_object       *target,
322         struct acpi_walk_state          *walk_state);
323 
324 acpi_status
325 acpi_ex_load_table_op (
326         struct acpi_walk_state          *walk_state,
327         union acpi_operand_object       **return_desc);
328 
329 acpi_status
330 acpi_ex_unload_table (
331         union acpi_operand_object       *ddb_handle);
332 
333 
334 /*
335  * exmutex - mutex support
336  */
337 
338 acpi_status
339 acpi_ex_acquire_mutex (
340         union acpi_operand_object       *time_desc,
341         union acpi_operand_object       *obj_desc,
342         struct acpi_walk_state          *walk_state);
343 
344 acpi_status
345 acpi_ex_release_mutex (
346         union acpi_operand_object       *obj_desc,
347         struct acpi_walk_state          *walk_state);
348 
349 void
350 acpi_ex_release_all_mutexes (
351         struct acpi_thread_state        *thread);
352 
353 void
354 acpi_ex_unlink_mutex (
355         union acpi_operand_object       *obj_desc);
356 
357 void
358 acpi_ex_link_mutex (
359         union acpi_operand_object       *obj_desc,
360         struct acpi_thread_state        *thread);
361 
362 /*
363  * exprep - ACPI AML (p-code) execution - prep utilities
364  */
365 
366 acpi_status
367 acpi_ex_prep_common_field_object (
368         union acpi_operand_object       *obj_desc,
369         u8                              field_flags,
370         u8                              field_attribute,
371         u32                             field_bit_position,
372         u32                             field_bit_length);
373 
374 acpi_status
375 acpi_ex_prep_field_value (
376         struct acpi_create_field_info   *info);
377 
378 /*
379  * exsystem - Interface to OS services
380  */
381 
382 acpi_status
383 acpi_ex_system_do_notify_op (
384         union acpi_operand_object       *value,
385         union acpi_operand_object       *obj_desc);
386 
387 acpi_status
388 acpi_ex_system_do_suspend(
389         acpi_integer                    time);
390 
391 acpi_status
392 acpi_ex_system_do_stall (
393         u32                             time);
394 
395 acpi_status
396 acpi_ex_system_acquire_mutex(
397         union acpi_operand_object       *time,
398         union acpi_operand_object       *obj_desc);
399 
400 acpi_status
401 acpi_ex_system_release_mutex(
402         union acpi_operand_object       *obj_desc);
403 
404 acpi_status
405 acpi_ex_system_signal_event(
406         union acpi_operand_object       *obj_desc);
407 
408 acpi_status
409 acpi_ex_system_wait_event(
410         union acpi_operand_object       *time,
411         union acpi_operand_object       *obj_desc);
412 
413 acpi_status
414 acpi_ex_system_reset_event(
415         union acpi_operand_object       *obj_desc);
416 
417 acpi_status
418 acpi_ex_system_wait_semaphore (
419         acpi_handle                     semaphore,
420         u16                             timeout);
421 
422 
423 /*
424  * exmonadic - ACPI AML (p-code) execution, monadic operators
425  */
426 
427 acpi_status
428 acpi_ex_opcode_0A_0T_1R (
429         struct acpi_walk_state          *walk_state);
430 
431 acpi_status
432 acpi_ex_opcode_1A_0T_0R (
433         struct acpi_walk_state          *walk_state);
434 
435 acpi_status
436 acpi_ex_opcode_1A_0T_1R (
437         struct acpi_walk_state          *walk_state);
438 
439 acpi_status
440 acpi_ex_opcode_1A_1T_1R (
441         struct acpi_walk_state          *walk_state);
442 
443 acpi_status
444 acpi_ex_opcode_1A_1T_0R (
445         struct acpi_walk_state          *walk_state);
446 
447 /*
448  * exdyadic - ACPI AML (p-code) execution, dyadic operators
449  */
450 
451 acpi_status
452 acpi_ex_opcode_2A_0T_0R (
453         struct acpi_walk_state          *walk_state);
454 
455 acpi_status
456 acpi_ex_opcode_2A_0T_1R (
457         struct acpi_walk_state          *walk_state);
458 
459 acpi_status
460 acpi_ex_opcode_2A_1T_1R (
461         struct acpi_walk_state          *walk_state);
462 
463 acpi_status
464 acpi_ex_opcode_2A_2T_1R (
465         struct acpi_walk_state          *walk_state);
466 
467 
468 /*
469  * exresolv  - Object resolution and get value functions
470  */
471 
472 acpi_status
473 acpi_ex_resolve_to_value (
474         union acpi_operand_object       **stack_ptr,
475         struct acpi_walk_state          *walk_state);
476 
477 acpi_status
478 acpi_ex_resolve_node_to_value (
479         struct acpi_namespace_node      **stack_ptr,
480         struct acpi_walk_state          *walk_state);
481 
482 acpi_status
483 acpi_ex_resolve_object_to_value (
484         union acpi_operand_object       **stack_ptr,
485         struct acpi_walk_state          *walk_state);
486 
487 
488 /*
489  * exdump - Interpreter debug output routines
490  */
491 
492 void
493 acpi_ex_dump_operand (
494         union acpi_operand_object       *obj_desc,
495         u32                             depth);
496 
497 void
498 acpi_ex_dump_operands (
499         union acpi_operand_object       **operands,
500         acpi_interpreter_mode           interpreter_mode,
501         char                            *ident,
502         u32                             num_levels,
503         char                            *note,
504         char                            *module_name,
505         u32                             line_number);
506 
507 #ifdef ACPI_FUTURE_USAGE
508 void
509 acpi_ex_dump_object_descriptor (
510         union acpi_operand_object       *object,
511         u32                             flags);
512 
513 void
514 acpi_ex_dump_node (
515         struct acpi_namespace_node      *node,
516         u32                             flags);
517 
518 void
519 acpi_ex_out_string (
520         char                            *title,
521         char                            *value);
522 
523 void
524 acpi_ex_out_pointer (
525         char                            *title,
526         void                            *value);
527 
528 void
529 acpi_ex_out_integer (
530         char                            *title,
531         u32                             value);
532 
533 void
534 acpi_ex_out_address (
535         char                            *title,
536         acpi_physical_address           value);
537 #endif  /*  ACPI_FUTURE_USAGE  */
538 
539 /*
540  * exnames - interpreter/scanner name load/execute
541  */
542 
543 char *
544 acpi_ex_allocate_name_string (
545         u32                             prefix_count,
546         u32                             num_name_segs);
547 
548 u32
549 acpi_ex_good_char (
550         u32                             character);
551 
552 acpi_status
553 acpi_ex_name_segment (
554         u8                              **in_aml_address,
555         char                            *name_string);
556 
557 acpi_status
558 acpi_ex_get_name_string (
559         acpi_object_type                data_type,
560         u8                              *in_aml_address,
561         char                            **out_name_string,
562         u32                             *out_name_length);
563 
564 acpi_status
565 acpi_ex_do_name (
566         acpi_object_type                data_type,
567         acpi_interpreter_mode           load_exec_mode);
568 
569 
570 /*
571  * exstore - Object store support
572  */
573 
574 acpi_status
575 acpi_ex_store (
576         union acpi_operand_object       *val_desc,
577         union acpi_operand_object       *dest_desc,
578         struct acpi_walk_state          *walk_state);
579 
580 acpi_status
581 acpi_ex_store_object_to_index (
582         union acpi_operand_object       *val_desc,
583         union acpi_operand_object       *dest_desc,
584         struct acpi_walk_state          *walk_state);
585 
586 acpi_status
587 acpi_ex_store_object_to_node (
588         union acpi_operand_object       *source_desc,
589         struct acpi_namespace_node      *node,
590         struct acpi_walk_state          *walk_state,
591         u8                              implicit_conversion);
592 
593 #define ACPI_IMPLICIT_CONVERSION        TRUE
594 #define ACPI_NO_IMPLICIT_CONVERSION     FALSE
595 
596 /*
597  * exstoren
598  */
599 
600 acpi_status
601 acpi_ex_resolve_object (
602         union acpi_operand_object       **source_desc_ptr,
603         acpi_object_type                target_type,
604         struct acpi_walk_state          *walk_state);
605 
606 acpi_status
607 acpi_ex_store_object_to_object (
608         union acpi_operand_object       *source_desc,
609         union acpi_operand_object       *dest_desc,
610         union acpi_operand_object       **new_desc,
611         struct acpi_walk_state          *walk_state);
612 
613 
614 /*
615  * excopy - object copy
616  */
617 
618 acpi_status
619 acpi_ex_store_buffer_to_buffer (
620         acpi_object_type                original_src_type,
621         union acpi_operand_object       *source_desc,
622         union acpi_operand_object       *target_desc);
623 
624 acpi_status
625 acpi_ex_store_string_to_string (
626         union acpi_operand_object       *source_desc,
627         union acpi_operand_object       *target_desc);
628 
629 acpi_status
630 acpi_ex_copy_integer_to_index_field (
631         union acpi_operand_object       *source_desc,
632         union acpi_operand_object       *target_desc);
633 
634 acpi_status
635 acpi_ex_copy_integer_to_bank_field (
636         union acpi_operand_object       *source_desc,
637         union acpi_operand_object       *target_desc);
638 
639 acpi_status
640 acpi_ex_copy_data_to_named_field (
641         union acpi_operand_object       *source_desc,
642         struct acpi_namespace_node      *node);
643 
644 acpi_status
645 acpi_ex_copy_integer_to_buffer_field (
646         union acpi_operand_object       *source_desc,
647         union acpi_operand_object       *target_desc);
648 
649 /*
650  * exutils - interpreter/scanner utilities
651  */
652 
653 acpi_status
654 acpi_ex_enter_interpreter (
655         void);
656 
657 void
658 acpi_ex_exit_interpreter (
659         void);
660 
661 void
662 acpi_ex_truncate_for32bit_table (
663         union acpi_operand_object       *obj_desc);
664 
665 u8
666 acpi_ex_acquire_global_lock (
667         u32                             rule);
668 
669 void
670 acpi_ex_release_global_lock (
671         u8                              locked);
672 
673 u32
674 acpi_ex_digits_needed (
675         acpi_integer                    value,
676         u32                             base);
677 
678 void
679 acpi_ex_eisa_id_to_string (
680         u32                             numeric_id,
681         char                            *out_string);
682 
683 void
684 acpi_ex_unsigned_integer_to_string (
685         acpi_integer                    value,
686         char                            *out_string);
687 
688 
689 /*
690  * exregion - default op_region handlers
691  */
692 
693 acpi_status
694 acpi_ex_system_memory_space_handler (
695         u32                             function,
696         acpi_physical_address           address,
697         u32                             bit_width,
698         acpi_integer                    *value,
699         void                            *handler_context,
700         void                            *region_context);
701 
702 acpi_status
703 acpi_ex_system_io_space_handler (
704         u32                             function,
705         acpi_physical_address           address,
706         u32                             bit_width,
707         acpi_integer                    *value,
708         void                            *handler_context,
709         void                            *region_context);
710 
711 acpi_status
712 acpi_ex_pci_config_space_handler (
713         u32                             function,
714         acpi_physical_address           address,
715         u32                             bit_width,
716         acpi_integer                    *value,
717         void                            *handler_context,
718         void                            *region_context);
719 
720 acpi_status
721 acpi_ex_cmos_space_handler (
722         u32                             function,
723         acpi_physical_address           address,
724         u32                             bit_width,
725         acpi_integer                    *value,
726         void                            *handler_context,
727         void                            *region_context);
728 
729 acpi_status
730 acpi_ex_pci_bar_space_handler (
731         u32                             function,
732         acpi_physical_address           address,
733         u32                             bit_width,
734         acpi_integer                    *value,
735         void                            *handler_context,
736         void                            *region_context);
737 
738 acpi_status
739 acpi_ex_embedded_controller_space_handler (
740         u32                             function,
741         acpi_physical_address           address,
742         u32                             bit_width,
743         acpi_integer                    *value,
744         void                            *handler_context,
745         void                            *region_context);
746 
747 acpi_status
748 acpi_ex_sm_bus_space_handler (
749         u32                             function,
750         acpi_physical_address           address,
751         u32                             bit_width,
752         acpi_integer                    *value,
753         void                            *handler_context,
754         void                            *region_context);
755 
756 
757 acpi_status
758 acpi_ex_data_table_space_handler (
759         u32                             function,
760         acpi_physical_address           address,
761         u32                             bit_width,
762         acpi_integer                    *value,
763         void                            *handler_context,
764         void                            *region_context);
765 
766 #endif /* __INTERP_H__ */
767 
  This page was automatically generated by the LXR engine.