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: Lin Ming <ming.m.lin@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
parent
3a37898d50
commit
8b6cd8ad18
@ -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 {
|
|||||||
|
|
||||||
/* 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 {
|
|||||||
|
|
||||||
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)
|
|||||||
* 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)
|
|||||||
*
|
*
|
||||||
* 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)
|
|||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
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)
|
|||||||
* 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)
|
|||||||
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,
|
|||||||
|
|
||||||
/* 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)
|
|||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
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)
|
|||||||
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)
|
|||||||
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,
|
|||||||
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
|
|||||||
*/
|
*/
|
||||||
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);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user