acevents.h 6.9 KB
Newer Older
L
Linus Torvalds 已提交
1 2 3 4 5 6 7
/******************************************************************************
 *
 * Name: acevents.h - Event subcomponent prototypes and defines
 *
 *****************************************************************************/

/*
8
 * Copyright (C) 2000 - 2010, Intel Corp.
L
Linus Torvalds 已提交
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
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions, and the following disclaimer,
 *    without modification.
 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
 *    substantially similar to the "NO WARRANTY" disclaimer below
 *    ("Disclaimer") and any redistribution must be conditioned upon
 *    including a substantially similar Disclaimer requirement for further
 *    binary redistribution.
 * 3. Neither the names of the above-listed copyright holders nor the names
 *    of any contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * Alternatively, this software may be distributed under the terms of the
 * GNU General Public License ("GPL") version 2 as published by the Free
 * Software Foundation.
 *
 * NO WARRANTY
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGES.
 */

#ifndef __ACEVENTS_H__
#define __ACEVENTS_H__

R
Robert Moore 已提交
47 48 49
/*
 * evevent
 */
L
Len Brown 已提交
50
acpi_status acpi_ev_initialize_events(void);
L
Linus Torvalds 已提交
51

L
Len Brown 已提交
52
acpi_status acpi_ev_install_xrupt_handlers(void);
L
Linus Torvalds 已提交
53

B
Bob Moore 已提交
54 55
acpi_status acpi_ev_install_fadt_gpes(void);

L
Len Brown 已提交
56
u32 acpi_ev_fixed_event_detect(void);
L
Linus Torvalds 已提交
57 58

/*
R
Robert Moore 已提交
59
 * evmisc
L
Linus Torvalds 已提交
60
 */
L
Len Brown 已提交
61
u8 acpi_ev_is_notify_object(struct acpi_namespace_node *node);
L
Linus Torvalds 已提交
62

L
Len Brown 已提交
63
acpi_status acpi_ev_acquire_global_lock(u16 timeout);
L
Linus Torvalds 已提交
64

L
Len Brown 已提交
65
acpi_status acpi_ev_release_global_lock(void);
L
Linus Torvalds 已提交
66

L
Len Brown 已提交
67
acpi_status acpi_ev_init_global_lock_handler(void);
L
Linus Torvalds 已提交
68

L
Len Brown 已提交
69
u32 acpi_ev_get_gpe_number_index(u32 gpe_number);
L
Linus Torvalds 已提交
70 71

acpi_status
L
Len Brown 已提交
72 73
acpi_ev_queue_notify_request(struct acpi_namespace_node *node,
			     u32 notify_value);
L
Linus Torvalds 已提交
74 75

/*
B
Bob Moore 已提交
76
 * evgpe - Low-level GPE support
L
Linus Torvalds 已提交
77
 */
B
Bob Moore 已提交
78 79
u32 acpi_ev_gpe_detect(struct acpi_gpe_xrupt_info *gpe_xrupt_list);

L
Linus Torvalds 已提交
80
acpi_status
81
acpi_ev_update_gpe_enable_mask(struct acpi_gpe_event_info *gpe_event_info);
L
Linus Torvalds 已提交
82

83 84
acpi_status acpi_ev_enable_gpe(struct acpi_gpe_event_info *gpe_event_info);

L
Len Brown 已提交
85 86
struct acpi_gpe_event_info *acpi_ev_get_gpe_event_info(acpi_handle gpe_device,
						       u32 gpe_number);
R
Robert Moore 已提交
87

88 89 90 91
struct acpi_gpe_event_info *acpi_ev_low_get_gpe_info(u32 gpe_number,
						     struct acpi_gpe_block_info
						     *gpe_block);

R
Robert Moore 已提交
92
/*
B
Bob Moore 已提交
93
 * evgpeblk - Upper-level GPE block support
R
Robert Moore 已提交
94
 */
L
Linus Torvalds 已提交
95
acpi_status
L
Len Brown 已提交
96 97 98 99 100 101
acpi_ev_create_gpe_block(struct acpi_namespace_node *gpe_device,
			 struct acpi_generic_address *gpe_block_address,
			 u32 register_count,
			 u8 gpe_block_base_number,
			 u32 interrupt_number,
			 struct acpi_gpe_block_info **return_gpe_block);
L
Linus Torvalds 已提交
102

B
Bob Moore 已提交
103 104 105 106
acpi_status
acpi_ev_initialize_gpe_block(struct acpi_namespace_node *gpe_device,
			     struct acpi_gpe_block_info *gpe_block);

L
Len Brown 已提交
107
acpi_status acpi_ev_delete_gpe_block(struct acpi_gpe_block_info *gpe_block);
L
Linus Torvalds 已提交
108 109

u32
L
Len Brown 已提交
110 111
acpi_ev_gpe_dispatch(struct acpi_gpe_event_info *gpe_event_info,
		     u32 gpe_number);
L
Linus Torvalds 已提交
112

B
Bob Moore 已提交
113 114 115
/*
 * evgpeinit - GPE initialization and update
 */
L
Len Brown 已提交
116
acpi_status acpi_ev_gpe_initialize(void);
R
Robert Moore 已提交
117

B
Bob Moore 已提交
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
void acpi_ev_update_gpes(acpi_owner_id table_owner_id);

acpi_status
acpi_ev_match_gpe_method(acpi_handle obj_handle,
			 u32 level, void *context, void **return_value);

acpi_status
acpi_ev_match_prw_and_gpe(acpi_handle obj_handle,
			  u32 level, void *context, void **return_value);

/*
 * evgpeutil - GPE utilities
 */
acpi_status
acpi_ev_walk_gpe_list(acpi_gpe_callback gpe_walk_callback, void *context);

u8 acpi_ev_valid_gpe_event(struct acpi_gpe_event_info *gpe_event_info);

struct acpi_gpe_xrupt_info *acpi_ev_get_gpe_xrupt_block(u32 interrupt_number);

acpi_status acpi_ev_delete_gpe_xrupt(struct acpi_gpe_xrupt_info *gpe_xrupt);

acpi_status
acpi_ev_delete_gpe_handlers(struct acpi_gpe_xrupt_info *gpe_xrupt_info,
			    struct acpi_gpe_block_info *gpe_block,
			    void *context);

L
Linus Torvalds 已提交
145
/*
R
Robert Moore 已提交
146
 * evregion - Address Space handling
L
Linus Torvalds 已提交
147
 */
L
Len Brown 已提交
148
acpi_status acpi_ev_install_region_handlers(void);
L
Linus Torvalds 已提交
149

L
Len Brown 已提交
150
acpi_status acpi_ev_initialize_op_regions(void);
L
Linus Torvalds 已提交
151 152

acpi_status
L
Len Brown 已提交
153 154
acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,
			       u32 function,
155
			       u32 region_offset, u32 bit_width, u64 *value);
L
Linus Torvalds 已提交
156 157

acpi_status
L
Len Brown 已提交
158 159 160
acpi_ev_attach_region(union acpi_operand_object *handler_obj,
		      union acpi_operand_object *region_obj,
		      u8 acpi_ns_is_locked);
L
Linus Torvalds 已提交
161 162

void
L
Len Brown 已提交
163 164
acpi_ev_detach_region(union acpi_operand_object *region_obj,
		      u8 acpi_ns_is_locked);
L
Linus Torvalds 已提交
165 166

acpi_status
L
Len Brown 已提交
167 168 169 170
acpi_ev_install_space_handler(struct acpi_namespace_node *node,
			      acpi_adr_space_type space_id,
			      acpi_adr_space_handler handler,
			      acpi_adr_space_setup setup, void *context);
L
Linus Torvalds 已提交
171 172

acpi_status
L
Len Brown 已提交
173 174
acpi_ev_execute_reg_methods(struct acpi_namespace_node *node,
			    acpi_adr_space_type space_id);
L
Linus Torvalds 已提交
175 176

acpi_status
L
Len Brown 已提交
177
acpi_ev_execute_reg_method(union acpi_operand_object *region_obj, u32 function);
L
Linus Torvalds 已提交
178 179

/*
R
Robert Moore 已提交
180
 * evregini - Region initialization and setup
L
Linus Torvalds 已提交
181 182
 */
acpi_status
L
Len Brown 已提交
183 184 185 186
acpi_ev_system_memory_region_setup(acpi_handle handle,
				   u32 function,
				   void *handler_context,
				   void **region_context);
L
Linus Torvalds 已提交
187 188

acpi_status
L
Len Brown 已提交
189 190 191
acpi_ev_io_space_region_setup(acpi_handle handle,
			      u32 function,
			      void *handler_context, void **region_context);
L
Linus Torvalds 已提交
192 193

acpi_status
L
Len Brown 已提交
194 195 196
acpi_ev_pci_config_region_setup(acpi_handle handle,
				u32 function,
				void *handler_context, void **region_context);
L
Linus Torvalds 已提交
197 198

acpi_status
L
Len Brown 已提交
199 200 201
acpi_ev_cmos_region_setup(acpi_handle handle,
			  u32 function,
			  void *handler_context, void **region_context);
L
Linus Torvalds 已提交
202 203

acpi_status
L
Len Brown 已提交
204 205 206
acpi_ev_pci_bar_region_setup(acpi_handle handle,
			     u32 function,
			     void *handler_context, void **region_context);
L
Linus Torvalds 已提交
207 208

acpi_status
L
Len Brown 已提交
209 210 211
acpi_ev_default_region_setup(acpi_handle handle,
			     u32 function,
			     void *handler_context, void **region_context);
L
Linus Torvalds 已提交
212 213

acpi_status
L
Len Brown 已提交
214 215
acpi_ev_initialize_region(union acpi_operand_object *region_obj,
			  u8 acpi_ns_locked);
L
Linus Torvalds 已提交
216 217

/*
R
Robert Moore 已提交
218
 * evsci - SCI (System Control Interrupt) handling/dispatch
L
Linus Torvalds 已提交
219
 */
L
Len Brown 已提交
220
u32 ACPI_SYSTEM_XFACE acpi_ev_gpe_xrupt_handler(void *context);
L
Linus Torvalds 已提交
221

L
Len Brown 已提交
222
u32 acpi_ev_install_sci_handler(void);
L
Linus Torvalds 已提交
223

L
Len Brown 已提交
224
acpi_status acpi_ev_remove_sci_handler(void);
L
Linus Torvalds 已提交
225

L
Len Brown 已提交
226
u32 acpi_ev_initialize_sCI(u32 program_sCI);
L
Linus Torvalds 已提交
227

L
Len Brown 已提交
228
void acpi_ev_terminate(void);
L
Linus Torvalds 已提交
229

L
Len Brown 已提交
230
#endif				/* __ACEVENTS_H__  */