提交 8b6cd8ad 编写于 作者: L Lin Ming 提交者: Len Brown

ACPICA: New GPE handler callback definition

The new GPE handler callback has 2 additional parameters, gpe_device and
gpe_number.

typedef
u32 (*acpi_gpe_handler) (acpi_handle gpe_device, u32 gpe_number, void *context);
Signed-off-by: NLin Ming <ming.m.lin@intel.com>
Signed-off-by: NLen Brown <len.brown@intel.com>
上级 3a37898d
...@@ -112,7 +112,8 @@ acpi_ev_initialize_gpe_block(struct acpi_gpe_xrupt_info *gpe_xrupt_info, ...@@ -112,7 +112,8 @@ acpi_ev_initialize_gpe_block(struct acpi_gpe_xrupt_info *gpe_xrupt_info,
acpi_status acpi_ev_delete_gpe_block(struct acpi_gpe_block_info *gpe_block); acpi_status acpi_ev_delete_gpe_block(struct acpi_gpe_block_info *gpe_block);
u32 u32
acpi_ev_gpe_dispatch(struct acpi_gpe_event_info *gpe_event_info, acpi_ev_gpe_dispatch(struct acpi_namespace_node *gpe_device,
struct acpi_gpe_event_info *gpe_event_info,
u32 gpe_number); u32 gpe_number);
/* /*
......
...@@ -408,8 +408,8 @@ struct acpi_predefined_data { ...@@ -408,8 +408,8 @@ struct acpi_predefined_data {
/* Dispatch info for each GPE -- either a method or handler, cannot be both */ /* Dispatch info for each GPE -- either a method or handler, cannot be both */
struct acpi_handler_info { struct acpi_gpe_handler_info {
acpi_event_handler address; /* Address of handler, if any */ acpi_gpe_handler address; /* Address of handler, if any */
void *context; /* Context to be passed to handler */ void *context; /* Context to be passed to handler */
struct acpi_namespace_node *method_node; /* Method node for this GPE level (saved) */ struct acpi_namespace_node *method_node; /* Method node for this GPE level (saved) */
u8 original_flags; /* Original (pre-handler) GPE info */ u8 original_flags; /* Original (pre-handler) GPE info */
...@@ -418,7 +418,7 @@ struct acpi_handler_info { ...@@ -418,7 +418,7 @@ struct acpi_handler_info {
union acpi_gpe_dispatch_info { union acpi_gpe_dispatch_info {
struct acpi_namespace_node *method_node; /* Method node for this GPE level */ struct acpi_namespace_node *method_node; /* Method node for this GPE level */
struct acpi_handler_info *handler; /* Installed GPE handler */ struct acpi_gpe_handler_info *handler; /* Installed GPE handler */
}; };
/* /*
......
...@@ -409,7 +409,9 @@ u32 acpi_ev_gpe_detect(struct acpi_gpe_xrupt_info * gpe_xrupt_list) ...@@ -409,7 +409,9 @@ u32 acpi_ev_gpe_detect(struct acpi_gpe_xrupt_info * gpe_xrupt_list)
* or method. * or method.
*/ */
int_status |= int_status |=
acpi_ev_gpe_dispatch(&gpe_block-> acpi_ev_gpe_dispatch(gpe_block->
node,
&gpe_block->
event_info[((acpi_size) i * ACPI_GPE_REGISTER_WIDTH) + j], j + gpe_register_info->base_gpe_number); event_info[((acpi_size) i * ACPI_GPE_REGISTER_WIDTH) + j], j + gpe_register_info->base_gpe_number);
} }
} }
...@@ -542,7 +544,8 @@ static void acpi_ev_asynch_enable_gpe(void *context) ...@@ -542,7 +544,8 @@ static void acpi_ev_asynch_enable_gpe(void *context)
* *
* FUNCTION: acpi_ev_gpe_dispatch * FUNCTION: acpi_ev_gpe_dispatch
* *
* PARAMETERS: gpe_event_info - Info for this GPE * PARAMETERS: gpe_device - Device node. NULL for GPE0/GPE1
* gpe_event_info - Info for this GPE
* gpe_number - Number relative to the parent GPE block * gpe_number - Number relative to the parent GPE block
* *
* RETURN: INTERRUPT_HANDLED or INTERRUPT_NOT_HANDLED * RETURN: INTERRUPT_HANDLED or INTERRUPT_NOT_HANDLED
...@@ -555,7 +558,8 @@ static void acpi_ev_asynch_enable_gpe(void *context) ...@@ -555,7 +558,8 @@ static void acpi_ev_asynch_enable_gpe(void *context)
******************************************************************************/ ******************************************************************************/
u32 u32
acpi_ev_gpe_dispatch(struct acpi_gpe_event_info *gpe_event_info, u32 gpe_number) acpi_ev_gpe_dispatch(struct acpi_namespace_node *gpe_device,
struct acpi_gpe_event_info *gpe_event_info, u32 gpe_number)
{ {
acpi_status status; acpi_status status;
...@@ -593,7 +597,9 @@ acpi_ev_gpe_dispatch(struct acpi_gpe_event_info *gpe_event_info, u32 gpe_number) ...@@ -593,7 +597,9 @@ acpi_ev_gpe_dispatch(struct acpi_gpe_event_info *gpe_event_info, u32 gpe_number)
* Ignore return status for now. * Ignore return status for now.
* TBD: leave GPE disabled on error? * TBD: leave GPE disabled on error?
*/ */
(void)gpe_event_info->dispatch.handler->address(gpe_event_info-> (void)gpe_event_info->dispatch.handler->address(gpe_device,
gpe_number,
gpe_event_info->
dispatch. dispatch.
handler-> handler->
context); context);
......
...@@ -671,10 +671,10 @@ ACPI_EXPORT_SYMBOL(acpi_remove_notify_handler) ...@@ -671,10 +671,10 @@ ACPI_EXPORT_SYMBOL(acpi_remove_notify_handler)
acpi_status acpi_status
acpi_install_gpe_handler(acpi_handle gpe_device, acpi_install_gpe_handler(acpi_handle gpe_device,
u32 gpe_number, u32 gpe_number,
u32 type, acpi_event_handler address, void *context) u32 type, acpi_gpe_handler address, void *context)
{ {
struct acpi_gpe_event_info *gpe_event_info; struct acpi_gpe_event_info *gpe_event_info;
struct acpi_handler_info *handler; struct acpi_gpe_handler_info *handler;
acpi_status status; acpi_status status;
acpi_cpu_flags flags; acpi_cpu_flags flags;
...@@ -693,7 +693,7 @@ acpi_install_gpe_handler(acpi_handle gpe_device, ...@@ -693,7 +693,7 @@ acpi_install_gpe_handler(acpi_handle gpe_device,
/* Allocate memory for the handler object */ /* Allocate memory for the handler object */
handler = ACPI_ALLOCATE_ZEROED(sizeof(struct acpi_handler_info)); handler = ACPI_ALLOCATE_ZEROED(sizeof(struct acpi_gpe_handler_info));
if (!handler) { if (!handler) {
status = AE_NO_MEMORY; status = AE_NO_MEMORY;
goto unlock_and_exit; goto unlock_and_exit;
...@@ -777,10 +777,10 @@ ACPI_EXPORT_SYMBOL(acpi_install_gpe_handler) ...@@ -777,10 +777,10 @@ ACPI_EXPORT_SYMBOL(acpi_install_gpe_handler)
******************************************************************************/ ******************************************************************************/
acpi_status acpi_status
acpi_remove_gpe_handler(acpi_handle gpe_device, acpi_remove_gpe_handler(acpi_handle gpe_device,
u32 gpe_number, acpi_event_handler address) u32 gpe_number, acpi_gpe_handler address)
{ {
struct acpi_gpe_event_info *gpe_event_info; struct acpi_gpe_event_info *gpe_event_info;
struct acpi_handler_info *handler; struct acpi_gpe_handler_info *handler;
acpi_status status; acpi_status status;
acpi_cpu_flags flags; acpi_cpu_flags flags;
......
...@@ -606,7 +606,8 @@ static int ec_check_sci(struct acpi_ec *ec, u8 state) ...@@ -606,7 +606,8 @@ static int ec_check_sci(struct acpi_ec *ec, u8 state)
return 0; return 0;
} }
static u32 acpi_ec_gpe_handler(void *data) static u32 acpi_ec_gpe_handler(acpi_handle gpe_device,
u32 gpe_number, void *data)
{ {
struct acpi_ec *ec = data; struct acpi_ec *ec = data;
......
...@@ -1928,7 +1928,8 @@ static void __devinit hardcode_find_bmc(void) ...@@ -1928,7 +1928,8 @@ static void __devinit hardcode_find_bmc(void)
static int acpi_failure; static int acpi_failure;
/* For GPE-type interrupts. */ /* For GPE-type interrupts. */
static u32 ipmi_acpi_gpe(void *context) static u32 ipmi_acpi_gpe(acpi_handle gpe_device,
u32 gpe_number, void *context)
{ {
struct smi_info *smi_info = context; struct smi_info *smi_info = context;
unsigned long flags; unsigned long flags;
......
...@@ -258,11 +258,11 @@ acpi_remove_address_space_handler(acpi_handle device, ...@@ -258,11 +258,11 @@ acpi_remove_address_space_handler(acpi_handle device,
acpi_status acpi_status
acpi_install_gpe_handler(acpi_handle gpe_device, acpi_install_gpe_handler(acpi_handle gpe_device,
u32 gpe_number, u32 gpe_number,
u32 type, acpi_event_handler address, void *context); u32 type, acpi_gpe_handler address, void *context);
acpi_status acpi_status
acpi_remove_gpe_handler(acpi_handle gpe_device, acpi_remove_gpe_handler(acpi_handle gpe_device,
u32 gpe_number, acpi_event_handler address); u32 gpe_number, acpi_gpe_handler address);
#ifdef ACPI_FUTURE_USAGE #ifdef ACPI_FUTURE_USAGE
acpi_status acpi_install_exception_handler(acpi_exception_handler handler); acpi_status acpi_install_exception_handler(acpi_exception_handler handler);
......
...@@ -896,6 +896,9 @@ typedef void ...@@ -896,6 +896,9 @@ typedef void
*/ */
typedef u32(*acpi_event_handler) (void *context); typedef u32(*acpi_event_handler) (void *context);
typedef
u32 (*acpi_gpe_handler) (acpi_handle gpe_device, u32 gpe_number, void *context);
typedef typedef
void (*acpi_notify_handler) (acpi_handle device, u32 value, void *context); void (*acpi_notify_handler) (acpi_handle device, u32 value, void *context);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册