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 108 109 110
acpi_status
acpi_ev_initialize_gpe_block(struct acpi_namespace_node *gpe_device,
			     struct acpi_gpe_block_info *gpe_block);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

acpi_status
L
Len Brown 已提交
213 214 215
acpi_ev_default_region_setup(acpi_handle handle,
			     u32 function,
			     void *handler_context, void **region_context);
L
Linus Torvalds 已提交
216 217

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

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

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

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

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

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

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