acevents.h 7.1 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
acpi_status acpi_ev_enable_gpe(struct acpi_gpe_event_info *gpe_event_info);
84 85 86 87

acpi_status acpi_raw_enable_gpe(struct acpi_gpe_event_info *gpe_event_info);

acpi_status acpi_raw_disable_gpe(struct acpi_gpe_event_info *gpe_event_info);
88

L
Len Brown 已提交
89 90
struct acpi_gpe_event_info *acpi_ev_get_gpe_event_info(acpi_handle gpe_device,
						       u32 gpe_number);
R
Robert Moore 已提交
91

92 93 94 95
struct acpi_gpe_event_info *acpi_ev_low_get_gpe_info(u32 gpe_number,
						     struct acpi_gpe_block_info
						     *gpe_block);

R
Robert Moore 已提交
96
/*
B
Bob Moore 已提交
97
 * evgpeblk - Upper-level GPE block support
R
Robert Moore 已提交
98
 */
L
Linus Torvalds 已提交
99
acpi_status
L
Len Brown 已提交
100 101 102 103 104 105
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 已提交
106

B
Bob Moore 已提交
107
acpi_status
108 109 110
acpi_ev_initialize_gpe_block(struct acpi_gpe_xrupt_info *gpe_xrupt_info,
			     struct acpi_gpe_block_info *gpe_block,
			     void *ignored);
B
Bob Moore 已提交
111

L
Len Brown 已提交
112
acpi_status acpi_ev_delete_gpe_block(struct acpi_gpe_block_info *gpe_block);
L
Linus Torvalds 已提交
113 114

u32
L
Len Brown 已提交
115 116
acpi_ev_gpe_dispatch(struct acpi_gpe_event_info *gpe_event_info,
		     u32 gpe_number);
L
Linus Torvalds 已提交
117

B
Bob Moore 已提交
118 119 120
/*
 * evgpeinit - GPE initialization and update
 */
L
Len Brown 已提交
121
acpi_status acpi_ev_gpe_initialize(void);
R
Robert Moore 已提交
122

B
Bob Moore 已提交
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
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 已提交
150
/*
R
Robert Moore 已提交
151
 * evregion - Address Space handling
L
Linus Torvalds 已提交
152
 */
L
Len Brown 已提交
153
acpi_status acpi_ev_install_region_handlers(void);
L
Linus Torvalds 已提交
154

L
Len Brown 已提交
155
acpi_status acpi_ev_initialize_op_regions(void);
L
Linus Torvalds 已提交
156 157

acpi_status
L
Len Brown 已提交
158 159
acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,
			       u32 function,
160
			       u32 region_offset, u32 bit_width, u64 *value);
L
Linus Torvalds 已提交
161 162

acpi_status
L
Len Brown 已提交
163 164 165
acpi_ev_attach_region(union acpi_operand_object *handler_obj,
		      union acpi_operand_object *region_obj,
		      u8 acpi_ns_is_locked);
L
Linus Torvalds 已提交
166 167

void
L
Len Brown 已提交
168 169
acpi_ev_detach_region(union acpi_operand_object *region_obj,
		      u8 acpi_ns_is_locked);
L
Linus Torvalds 已提交
170 171

acpi_status
L
Len Brown 已提交
172 173 174 175
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 已提交
176 177

acpi_status
L
Len Brown 已提交
178 179
acpi_ev_execute_reg_methods(struct acpi_namespace_node *node,
			    acpi_adr_space_type space_id);
L
Linus Torvalds 已提交
180 181

acpi_status
L
Len Brown 已提交
182
acpi_ev_execute_reg_method(union acpi_operand_object *region_obj, u32 function);
L
Linus Torvalds 已提交
183 184

/*
R
Robert Moore 已提交
185
 * evregini - Region initialization and setup
L
Linus Torvalds 已提交
186 187
 */
acpi_status
L
Len Brown 已提交
188 189 190 191
acpi_ev_system_memory_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_io_space_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_pci_config_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_cmos_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_pci_bar_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 216
acpi_ev_default_region_setup(acpi_handle handle,
			     u32 function,
			     void *handler_context, void **region_context);
L
Linus Torvalds 已提交
217 218

acpi_status
L
Len Brown 已提交
219 220
acpi_ev_initialize_region(union acpi_operand_object *region_obj,
			  u8 acpi_ns_locked);
L
Linus Torvalds 已提交
221 222

/*
R
Robert Moore 已提交
223
 * evsci - SCI (System Control Interrupt) handling/dispatch
L
Linus Torvalds 已提交
224
 */
L
Len Brown 已提交
225
u32 ACPI_SYSTEM_XFACE acpi_ev_gpe_xrupt_handler(void *context);
L
Linus Torvalds 已提交
226

L
Len Brown 已提交
227
u32 acpi_ev_install_sci_handler(void);
L
Linus Torvalds 已提交
228

L
Len Brown 已提交
229
acpi_status acpi_ev_remove_sci_handler(void);
L
Linus Torvalds 已提交
230

L
Len Brown 已提交
231
u32 acpi_ev_initialize_sCI(u32 program_sCI);
L
Linus Torvalds 已提交
232

L
Len Brown 已提交
233
void acpi_ev_terminate(void);
L
Linus Torvalds 已提交
234

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