acevents.h 6.8 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

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

86 87 88 89
struct acpi_gpe_event_info *acpi_ev_low_get_gpe_info(u32 gpe_number,
						     struct acpi_gpe_block_info
						     *gpe_block);

R
Robert Moore 已提交
90
/*
B
Bob Moore 已提交
91
 * evgpeblk - Upper-level GPE block support
R
Robert Moore 已提交
92
 */
L
Linus Torvalds 已提交
93
acpi_status
L
Len Brown 已提交
94 95 96 97 98 99
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 已提交
100

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

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

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

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

B
Bob Moore 已提交
116 117 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
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 已提交
143
/*
R
Robert Moore 已提交
144
 * evregion - Address Space handling
L
Linus Torvalds 已提交
145
 */
L
Len Brown 已提交
146
acpi_status acpi_ev_install_region_handlers(void);
L
Linus Torvalds 已提交
147

L
Len Brown 已提交
148
acpi_status acpi_ev_initialize_op_regions(void);
L
Linus Torvalds 已提交
149 150

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

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

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

acpi_status
L
Len Brown 已提交
165 166 167 168
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 已提交
169 170

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

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

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

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

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

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

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

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

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

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

L
Len Brown 已提交
220
u32 acpi_ev_install_sci_handler(void);
L
Linus Torvalds 已提交
221

L
Len Brown 已提交
222
acpi_status acpi_ev_remove_sci_handler(void);
L
Linus Torvalds 已提交
223

L
Len Brown 已提交
224
u32 acpi_ev_initialize_sCI(u32 program_sCI);
L
Linus Torvalds 已提交
225

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

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