mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-31 04:01:48 -04:00
Merge branches 'battery-2.6.34', 'bugzilla-10805', 'bugzilla-14668', 'bugzilla-531916-power-state', 'ht-warn-2.6.34', 'pnp', 'processor-rename', 'sony-2.6.34', 'suse-bugzilla-531547', 'tz-check', 'video' and 'misc-2.6.34' into release
This commit is contained in:
parent
c67fcd670b
d060705091
f6bb13aa1e
0c99c5288e
4c81ba4900
7e0e9c0427
149fe9c293
cffdde993a
fa80945269
8b7ef6d8f1
70287db87c
38bcb37a6f
commit
ec28dcc6b4
8142 changed files with 499985 additions and 231466 deletions
|
|
@ -32,7 +32,7 @@ acpi-$(CONFIG_ACPI_SLEEP) += proc.o
|
|||
#
|
||||
acpi-y += bus.o glue.o
|
||||
acpi-y += scan.o
|
||||
acpi-y += processor_pdc.o
|
||||
acpi-y += processor_core.o
|
||||
acpi-y += ec.o
|
||||
acpi-$(CONFIG_ACPI_DOCK) += dock.o
|
||||
acpi-y += pci_root.o pci_link.o pci_irq.o pci_bind.o
|
||||
|
|
@ -61,7 +61,7 @@ obj-$(CONFIG_ACPI_SBS) += sbs.o
|
|||
obj-$(CONFIG_ACPI_POWER_METER) += power_meter.o
|
||||
|
||||
# processor has its own "processor." module_param namespace
|
||||
processor-y := processor_core.o processor_throttling.o
|
||||
processor-y := processor_driver.o processor_throttling.o
|
||||
processor-y += processor_idle.o processor_thermal.o
|
||||
processor-$(CONFIG_CPU_FREQ) += processor_perflib.o
|
||||
|
||||
|
|
|
|||
|
|
@ -208,7 +208,7 @@ static int power_saving_thread(void *data)
|
|||
* the mechanism only works when all CPUs have RT task running,
|
||||
* as if one CPU hasn't RT task, RT task from other CPUs will
|
||||
* borrow CPU time from this CPU and cause RT task use > 95%
|
||||
* CPU time. To make 'avoid staration' work, takes a nap here.
|
||||
* CPU time. To make 'avoid starvation' work, takes a nap here.
|
||||
*/
|
||||
if (do_sleep)
|
||||
schedule_timeout_killable(HZ * idle_pct / 100);
|
||||
|
|
@ -222,14 +222,18 @@ static struct task_struct *ps_tsks[NR_CPUS];
|
|||
static unsigned int ps_tsk_num;
|
||||
static int create_power_saving_task(void)
|
||||
{
|
||||
int rc = -ENOMEM;
|
||||
|
||||
ps_tsks[ps_tsk_num] = kthread_run(power_saving_thread,
|
||||
(void *)(unsigned long)ps_tsk_num,
|
||||
"power_saving/%d", ps_tsk_num);
|
||||
if (ps_tsks[ps_tsk_num]) {
|
||||
rc = IS_ERR(ps_tsks[ps_tsk_num]) ? PTR_ERR(ps_tsks[ps_tsk_num]) : 0;
|
||||
if (!rc)
|
||||
ps_tsk_num++;
|
||||
return 0;
|
||||
}
|
||||
return -EINVAL;
|
||||
else
|
||||
ps_tsks[ps_tsk_num] = NULL;
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
static void destroy_power_saving_task(void)
|
||||
|
|
@ -237,6 +241,7 @@ static void destroy_power_saving_task(void)
|
|||
if (ps_tsk_num > 0) {
|
||||
ps_tsk_num--;
|
||||
kthread_stop(ps_tsks[ps_tsk_num]);
|
||||
ps_tsks[ps_tsk_num] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -253,7 +258,7 @@ static void set_power_saving_task_num(unsigned int num)
|
|||
}
|
||||
}
|
||||
|
||||
static int acpi_pad_idle_cpus(unsigned int num_cpus)
|
||||
static void acpi_pad_idle_cpus(unsigned int num_cpus)
|
||||
{
|
||||
get_online_cpus();
|
||||
|
||||
|
|
@ -261,7 +266,6 @@ static int acpi_pad_idle_cpus(unsigned int num_cpus)
|
|||
set_power_saving_task_num(num_cpus);
|
||||
|
||||
put_online_cpus();
|
||||
return 0;
|
||||
}
|
||||
|
||||
static uint32_t acpi_pad_idle_cpus_num(void)
|
||||
|
|
@ -369,19 +373,21 @@ static void acpi_pad_remove_sysfs(struct acpi_device *device)
|
|||
static int acpi_pad_pur(acpi_handle handle, int *num_cpus)
|
||||
{
|
||||
struct acpi_buffer buffer = {ACPI_ALLOCATE_BUFFER, NULL};
|
||||
acpi_status status;
|
||||
union acpi_object *package;
|
||||
int rev, num, ret = -EINVAL;
|
||||
|
||||
status = acpi_evaluate_object(handle, "_PUR", NULL, &buffer);
|
||||
if (ACPI_FAILURE(status))
|
||||
if (ACPI_FAILURE(acpi_evaluate_object(handle, "_PUR", NULL, &buffer)))
|
||||
return -EINVAL;
|
||||
|
||||
if (!buffer.length || !buffer.pointer)
|
||||
return -EINVAL;
|
||||
|
||||
package = buffer.pointer;
|
||||
if (package->type != ACPI_TYPE_PACKAGE || package->package.count != 2)
|
||||
goto out;
|
||||
rev = package->package.elements[0].integer.value;
|
||||
num = package->package.elements[1].integer.value;
|
||||
if (rev != 1)
|
||||
if (rev != 1 || num < 0)
|
||||
goto out;
|
||||
*num_cpus = num;
|
||||
ret = 0;
|
||||
|
|
@ -410,7 +416,7 @@ static void acpi_pad_ost(acpi_handle handle, int stat,
|
|||
|
||||
static void acpi_pad_handle_notify(acpi_handle handle)
|
||||
{
|
||||
int num_cpus, ret;
|
||||
int num_cpus;
|
||||
uint32_t idle_cpus;
|
||||
|
||||
mutex_lock(&isolated_cpus_lock);
|
||||
|
|
@ -418,12 +424,9 @@ static void acpi_pad_handle_notify(acpi_handle handle)
|
|||
mutex_unlock(&isolated_cpus_lock);
|
||||
return;
|
||||
}
|
||||
ret = acpi_pad_idle_cpus(num_cpus);
|
||||
acpi_pad_idle_cpus(num_cpus);
|
||||
idle_cpus = acpi_pad_idle_cpus_num();
|
||||
if (!ret)
|
||||
acpi_pad_ost(handle, 0, idle_cpus);
|
||||
else
|
||||
acpi_pad_ost(handle, 1, 0);
|
||||
acpi_pad_ost(handle, 0, idle_cpus);
|
||||
mutex_unlock(&isolated_cpus_lock);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -76,12 +76,9 @@ acpi_ev_queue_notify_request(struct acpi_namespace_node *node,
|
|||
* evgpe - GPE handling and dispatch
|
||||
*/
|
||||
acpi_status
|
||||
acpi_ev_update_gpe_enable_masks(struct acpi_gpe_event_info *gpe_event_info,
|
||||
u8 type);
|
||||
acpi_ev_update_gpe_enable_masks(struct acpi_gpe_event_info *gpe_event_info);
|
||||
|
||||
acpi_status
|
||||
acpi_ev_enable_gpe(struct acpi_gpe_event_info *gpe_event_info,
|
||||
u8 write_to_hardware);
|
||||
acpi_status acpi_ev_enable_gpe(struct acpi_gpe_event_info *gpe_event_info);
|
||||
|
||||
acpi_status acpi_ev_disable_gpe(struct acpi_gpe_event_info *gpe_event_info);
|
||||
|
||||
|
|
@ -121,9 +118,6 @@ acpi_ev_gpe_dispatch(struct acpi_gpe_event_info *gpe_event_info,
|
|||
|
||||
u32 acpi_ev_gpe_detect(struct acpi_gpe_xrupt_info *gpe_xrupt_list);
|
||||
|
||||
acpi_status
|
||||
acpi_ev_set_gpe_type(struct acpi_gpe_event_info *gpe_event_info, u8 type);
|
||||
|
||||
acpi_status
|
||||
acpi_ev_check_for_wake_only_gpe(struct acpi_gpe_event_info *gpe_event_info);
|
||||
|
||||
|
|
@ -139,8 +133,7 @@ acpi_status acpi_ev_initialize_op_regions(void);
|
|||
acpi_status
|
||||
acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,
|
||||
u32 function,
|
||||
u32 region_offset,
|
||||
u32 bit_width, acpi_integer * value);
|
||||
u32 region_offset, u32 bit_width, u64 *value);
|
||||
|
||||
acpi_status
|
||||
acpi_ev_attach_region(union acpi_operand_object *handler_obj,
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -129,18 +129,17 @@ acpi_ex_common_buffer_setup(union acpi_operand_object *obj_desc,
|
|||
|
||||
acpi_status
|
||||
acpi_ex_write_with_update_rule(union acpi_operand_object *obj_desc,
|
||||
acpi_integer mask,
|
||||
acpi_integer field_value,
|
||||
u32 field_datum_byte_offset);
|
||||
u64 mask,
|
||||
u64 field_value, u32 field_datum_byte_offset);
|
||||
|
||||
void
|
||||
acpi_ex_get_buffer_datum(acpi_integer * datum,
|
||||
acpi_ex_get_buffer_datum(u64 *datum,
|
||||
void *buffer,
|
||||
u32 buffer_length,
|
||||
u32 byte_granularity, u32 buffer_offset);
|
||||
|
||||
void
|
||||
acpi_ex_set_buffer_datum(acpi_integer merged_datum,
|
||||
acpi_ex_set_buffer_datum(u64 merged_datum,
|
||||
void *buffer,
|
||||
u32 buffer_length,
|
||||
u32 byte_granularity, u32 buffer_offset);
|
||||
|
|
@ -168,8 +167,7 @@ acpi_ex_insert_into_field(union acpi_operand_object *obj_desc,
|
|||
|
||||
acpi_status
|
||||
acpi_ex_access_region(union acpi_operand_object *obj_desc,
|
||||
u32 field_datum_byte_offset,
|
||||
acpi_integer * value, u32 read_write);
|
||||
u32 field_datum_byte_offset, u64 *value, u32 read_write);
|
||||
|
||||
/*
|
||||
* exmisc - misc support routines
|
||||
|
|
@ -193,16 +191,14 @@ acpi_ex_do_concatenate(union acpi_operand_object *obj_desc,
|
|||
|
||||
acpi_status
|
||||
acpi_ex_do_logical_numeric_op(u16 opcode,
|
||||
acpi_integer integer0,
|
||||
acpi_integer integer1, u8 * logical_result);
|
||||
u64 integer0, u64 integer1, u8 *logical_result);
|
||||
|
||||
acpi_status
|
||||
acpi_ex_do_logical_op(u16 opcode,
|
||||
union acpi_operand_object *operand0,
|
||||
union acpi_operand_object *operand1, u8 * logical_result);
|
||||
union acpi_operand_object *operand1, u8 *logical_result);
|
||||
|
||||
acpi_integer
|
||||
acpi_ex_do_math_op(u16 opcode, acpi_integer operand0, acpi_integer operand1);
|
||||
u64 acpi_ex_do_math_op(u16 opcode, u64 operand0, u64 operand1);
|
||||
|
||||
acpi_status acpi_ex_create_mutex(struct acpi_walk_state *walk_state);
|
||||
|
||||
|
|
@ -278,7 +274,7 @@ acpi_status
|
|||
acpi_ex_system_do_notify_op(union acpi_operand_object *value,
|
||||
union acpi_operand_object *obj_desc);
|
||||
|
||||
acpi_status acpi_ex_system_do_suspend(acpi_integer time);
|
||||
acpi_status acpi_ex_system_do_suspend(u64 time);
|
||||
|
||||
acpi_status acpi_ex_system_do_stall(u32 time);
|
||||
|
||||
|
|
@ -461,9 +457,9 @@ void acpi_ex_acquire_global_lock(u32 rule);
|
|||
|
||||
void acpi_ex_release_global_lock(u32 rule);
|
||||
|
||||
void acpi_ex_eisa_id_to_string(char *dest, acpi_integer compressed_id);
|
||||
void acpi_ex_eisa_id_to_string(char *dest, u64 compressed_id);
|
||||
|
||||
void acpi_ex_integer_to_string(char *dest, acpi_integer value);
|
||||
void acpi_ex_integer_to_string(char *dest, u64 value);
|
||||
|
||||
/*
|
||||
* exregion - default op_region handlers
|
||||
|
|
@ -472,7 +468,7 @@ acpi_status
|
|||
acpi_ex_system_memory_space_handler(u32 function,
|
||||
acpi_physical_address address,
|
||||
u32 bit_width,
|
||||
acpi_integer * value,
|
||||
u64 *value,
|
||||
void *handler_context,
|
||||
void *region_context);
|
||||
|
||||
|
|
@ -480,35 +476,35 @@ acpi_status
|
|||
acpi_ex_system_io_space_handler(u32 function,
|
||||
acpi_physical_address address,
|
||||
u32 bit_width,
|
||||
acpi_integer * value,
|
||||
u64 *value,
|
||||
void *handler_context, void *region_context);
|
||||
|
||||
acpi_status
|
||||
acpi_ex_pci_config_space_handler(u32 function,
|
||||
acpi_physical_address address,
|
||||
u32 bit_width,
|
||||
acpi_integer * value,
|
||||
u64 *value,
|
||||
void *handler_context, void *region_context);
|
||||
|
||||
acpi_status
|
||||
acpi_ex_cmos_space_handler(u32 function,
|
||||
acpi_physical_address address,
|
||||
u32 bit_width,
|
||||
acpi_integer * value,
|
||||
u64 *value,
|
||||
void *handler_context, void *region_context);
|
||||
|
||||
acpi_status
|
||||
acpi_ex_pci_bar_space_handler(u32 function,
|
||||
acpi_physical_address address,
|
||||
u32 bit_width,
|
||||
acpi_integer * value,
|
||||
u64 *value,
|
||||
void *handler_context, void *region_context);
|
||||
|
||||
acpi_status
|
||||
acpi_ex_embedded_controller_space_handler(u32 function,
|
||||
acpi_physical_address address,
|
||||
u32 bit_width,
|
||||
acpi_integer * value,
|
||||
u64 *value,
|
||||
void *handler_context,
|
||||
void *region_context);
|
||||
|
||||
|
|
@ -516,14 +512,14 @@ acpi_status
|
|||
acpi_ex_sm_bus_space_handler(u32 function,
|
||||
acpi_physical_address address,
|
||||
u32 bit_width,
|
||||
acpi_integer * value,
|
||||
u64 *value,
|
||||
void *handler_context, void *region_context);
|
||||
|
||||
acpi_status
|
||||
acpi_ex_data_table_space_handler(u32 function,
|
||||
acpi_physical_address address,
|
||||
u32 bit_width,
|
||||
acpi_integer * value,
|
||||
u64 *value,
|
||||
void *handler_context, void *region_context);
|
||||
|
||||
#endif /* __INTERP_H__ */
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -374,6 +374,7 @@ union acpi_predefined_info {
|
|||
struct acpi_predefined_data {
|
||||
char *pathname;
|
||||
const union acpi_predefined_info *predefined;
|
||||
union acpi_operand_object *parent_package;
|
||||
u32 flags;
|
||||
u8 node_flags;
|
||||
};
|
||||
|
|
@ -426,6 +427,8 @@ struct acpi_gpe_event_info {
|
|||
struct acpi_gpe_register_info *register_info; /* Backpointer to register info */
|
||||
u8 flags; /* Misc info about this GPE */
|
||||
u8 gpe_number; /* This GPE */
|
||||
u8 runtime_count;
|
||||
u8 wakeup_count;
|
||||
};
|
||||
|
||||
/* Information about a GPE register pair, one per each status/enable pair in an array */
|
||||
|
|
@ -649,8 +652,7 @@ struct acpi_opcode_info {
|
|||
};
|
||||
|
||||
union acpi_parse_value {
|
||||
acpi_integer integer; /* Integer constant (Up to 64 bits) */
|
||||
struct uint64_struct integer64; /* Structure overlay for 2 32-bit Dwords */
|
||||
u64 integer; /* Integer constant (Up to 64 bits) */
|
||||
u32 size; /* bytelist or field size */
|
||||
char *string; /* NULL terminated string */
|
||||
u8 *buffer; /* buffer or string */
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -272,8 +272,8 @@
|
|||
* MASK_BITS_ABOVE creates a mask starting AT the position and above
|
||||
* MASK_BITS_BELOW creates a mask starting one bit BELOW the position
|
||||
*/
|
||||
#define ACPI_MASK_BITS_ABOVE(position) (~((ACPI_INTEGER_MAX) << ((u32) (position))))
|
||||
#define ACPI_MASK_BITS_BELOW(position) ((ACPI_INTEGER_MAX) << ((u32) (position)))
|
||||
#define ACPI_MASK_BITS_ABOVE(position) (~((ACPI_UINT64_MAX) << ((u32) (position))))
|
||||
#define ACPI_MASK_BITS_BELOW(position) ((ACPI_UINT64_MAX) << ((u32) (position)))
|
||||
|
||||
/* Bitfields within ACPI registers */
|
||||
|
||||
|
|
@ -414,16 +414,16 @@
|
|||
acpi_ut_ptr_exit (ACPI_DEBUG_PARAMETERS, (u8 *) _s); \
|
||||
return (_s); })
|
||||
#define return_VALUE(s) ACPI_DO_WHILE0 ({ \
|
||||
register acpi_integer _s = (s); \
|
||||
register u64 _s = (s); \
|
||||
acpi_ut_value_exit (ACPI_DEBUG_PARAMETERS, _s); \
|
||||
return (_s); })
|
||||
#define return_UINT8(s) ACPI_DO_WHILE0 ({ \
|
||||
register u8 _s = (u8) (s); \
|
||||
acpi_ut_value_exit (ACPI_DEBUG_PARAMETERS, (acpi_integer) _s); \
|
||||
acpi_ut_value_exit (ACPI_DEBUG_PARAMETERS, (u64) _s); \
|
||||
return (_s); })
|
||||
#define return_UINT32(s) ACPI_DO_WHILE0 ({ \
|
||||
register u32 _s = (u32) (s); \
|
||||
acpi_ut_value_exit (ACPI_DEBUG_PARAMETERS, (acpi_integer) _s); \
|
||||
acpi_ut_value_exit (ACPI_DEBUG_PARAMETERS, (u64) _s); \
|
||||
return (_s); })
|
||||
#else /* Use original less-safe macros */
|
||||
|
||||
|
|
@ -434,7 +434,7 @@
|
|||
acpi_ut_ptr_exit (ACPI_DEBUG_PARAMETERS, (u8 *) (s)); \
|
||||
return((s)); })
|
||||
#define return_VALUE(s) ACPI_DO_WHILE0 ({ \
|
||||
acpi_ut_value_exit (ACPI_DEBUG_PARAMETERS, (acpi_integer) (s)); \
|
||||
acpi_ut_value_exit (ACPI_DEBUG_PARAMETERS, (u64) (s)); \
|
||||
return((s)); })
|
||||
#define return_UINT8(s) return_VALUE(s)
|
||||
#define return_UINT32(s) return_VALUE(s)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -286,6 +286,17 @@ acpi_status
|
|||
acpi_ns_repair_package_list(struct acpi_predefined_data *data,
|
||||
union acpi_operand_object **obj_desc_ptr);
|
||||
|
||||
acpi_status
|
||||
acpi_ns_repair_null_element(struct acpi_predefined_data *data,
|
||||
u32 expected_btypes,
|
||||
u32 package_index,
|
||||
union acpi_operand_object **return_object_ptr);
|
||||
|
||||
void
|
||||
acpi_ns_remove_null_elements(struct acpi_predefined_data *data,
|
||||
u8 package_type,
|
||||
union acpi_operand_object *obj_desc);
|
||||
|
||||
/*
|
||||
* nsrepair2 - Return object repair for specific
|
||||
* predefined methods/objects
|
||||
|
|
@ -296,11 +307,6 @@ acpi_ns_complex_repairs(struct acpi_predefined_data *data,
|
|||
acpi_status validate_status,
|
||||
union acpi_operand_object **return_object_ptr);
|
||||
|
||||
void
|
||||
acpi_ns_remove_null_elements(struct acpi_predefined_data *data,
|
||||
u8 package_type,
|
||||
union acpi_operand_object *obj_desc);
|
||||
|
||||
/*
|
||||
* nssearch - Namespace searching and entry
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -111,7 +111,7 @@ ACPI_OBJECT_COMMON_HEADER};
|
|||
|
||||
struct acpi_object_integer {
|
||||
ACPI_OBJECT_COMMON_HEADER u8 fill[3]; /* Prevent warning on some compilers */
|
||||
acpi_integer value;
|
||||
u64 value;
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
@ -287,8 +287,10 @@ struct acpi_object_buffer_field {
|
|||
|
||||
struct acpi_object_notify_handler {
|
||||
ACPI_OBJECT_COMMON_HEADER struct acpi_namespace_node *node; /* Parent device */
|
||||
u32 handler_type;
|
||||
acpi_notify_handler handler;
|
||||
void *context;
|
||||
struct acpi_object_notify_handler *next;
|
||||
};
|
||||
|
||||
struct acpi_object_addr_handler {
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -134,7 +134,7 @@ char *acpi_ut_get_region_name(u8 space_id);
|
|||
|
||||
char *acpi_ut_get_event_name(u32 event_id);
|
||||
|
||||
char acpi_ut_hex_to_ascii_char(acpi_integer integer, u32 position);
|
||||
char acpi_ut_hex_to_ascii_char(u64 integer, u32 position);
|
||||
|
||||
u8 acpi_ut_valid_object_type(acpi_object_type type);
|
||||
|
||||
|
|
@ -279,8 +279,7 @@ acpi_ut_status_exit(u32 line_number,
|
|||
void
|
||||
acpi_ut_value_exit(u32 line_number,
|
||||
const char *function_name,
|
||||
const char *module_name,
|
||||
u32 component_id, acpi_integer value);
|
||||
const char *module_name, u32 component_id, u64 value);
|
||||
|
||||
void
|
||||
acpi_ut_ptr_exit(u32 line_number,
|
||||
|
|
@ -324,7 +323,7 @@ acpi_ut_evaluate_object(struct acpi_namespace_node *prefix_node,
|
|||
acpi_status
|
||||
acpi_ut_evaluate_numeric_object(char *object_name,
|
||||
struct acpi_namespace_node *device_node,
|
||||
acpi_integer *value);
|
||||
u64 *value);
|
||||
|
||||
acpi_status
|
||||
acpi_ut_execute_STA(struct acpi_namespace_node *device_node, u32 *status_flags);
|
||||
|
|
@ -437,14 +436,12 @@ void acpi_ut_delete_generic_state(union acpi_generic_state *state);
|
|||
* utmath
|
||||
*/
|
||||
acpi_status
|
||||
acpi_ut_divide(acpi_integer in_dividend,
|
||||
acpi_integer in_divisor,
|
||||
acpi_integer * out_quotient, acpi_integer * out_remainder);
|
||||
acpi_ut_divide(u64 in_dividend,
|
||||
u64 in_divisor, u64 *out_quotient, u64 *out_remainder);
|
||||
|
||||
acpi_status
|
||||
acpi_ut_short_divide(acpi_integer in_dividend,
|
||||
u32 divisor,
|
||||
acpi_integer * out_quotient, u32 * out_remainder);
|
||||
acpi_ut_short_divide(u64 in_dividend,
|
||||
u32 divisor, u64 *out_quotient, u32 *out_remainder);
|
||||
|
||||
/*
|
||||
* utmisc
|
||||
|
|
@ -474,8 +471,7 @@ acpi_name acpi_ut_repair_name(char *name);
|
|||
|
||||
u8 acpi_ut_valid_acpi_char(char character, u32 position);
|
||||
|
||||
acpi_status
|
||||
acpi_ut_strtoul64(char *string, u32 base, acpi_integer * ret_integer);
|
||||
acpi_status acpi_ut_strtoul64(char *string, u32 base, u64 * ret_integer);
|
||||
|
||||
void ACPI_INTERNAL_VAR_XFACE
|
||||
acpi_ut_predefined_warning(const char *module_name,
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -220,7 +220,7 @@ acpi_ds_get_field_names(struct acpi_create_field_info *info,
|
|||
union acpi_parse_object *arg)
|
||||
{
|
||||
acpi_status status;
|
||||
acpi_integer position;
|
||||
u64 position;
|
||||
|
||||
ACPI_FUNCTION_TRACE_PTR(ds_get_field_names, info);
|
||||
|
||||
|
|
@ -240,8 +240,8 @@ acpi_ds_get_field_names(struct acpi_create_field_info *info,
|
|||
switch (arg->common.aml_opcode) {
|
||||
case AML_INT_RESERVEDFIELD_OP:
|
||||
|
||||
position = (acpi_integer) info->field_bit_position
|
||||
+ (acpi_integer) arg->common.value.size;
|
||||
position = (u64) info->field_bit_position
|
||||
+ (u64) arg->common.value.size;
|
||||
|
||||
if (position > ACPI_UINT32_MAX) {
|
||||
ACPI_ERROR((AE_INFO,
|
||||
|
|
@ -305,8 +305,8 @@ acpi_ds_get_field_names(struct acpi_create_field_info *info,
|
|||
|
||||
/* Keep track of bit position for the next field */
|
||||
|
||||
position = (acpi_integer) info->field_bit_position
|
||||
+ (acpi_integer) arg->common.value.size;
|
||||
position = (u64) info->field_bit_position
|
||||
+ (u64) arg->common.value.size;
|
||||
|
||||
if (position > ACPI_UINT32_MAX) {
|
||||
ACPI_ERROR((AE_INFO,
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
******************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -684,7 +684,7 @@ acpi_ds_init_object_from_op(struct acpi_walk_state *walk_state,
|
|||
|
||||
case AML_ONES_OP:
|
||||
|
||||
obj_desc->integer.value = ACPI_INTEGER_MAX;
|
||||
obj_desc->integer.value = ACPI_UINT64_MAX;
|
||||
|
||||
/* Truncate value if we are executing from a 32-bit ACPI table */
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
******************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -52,56 +52,11 @@ ACPI_MODULE_NAME("evgpe")
|
|||
/* Local prototypes */
|
||||
static void ACPI_SYSTEM_XFACE acpi_ev_asynch_execute_gpe_method(void *context);
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ev_set_gpe_type
|
||||
*
|
||||
* PARAMETERS: gpe_event_info - GPE to set
|
||||
* Type - New type
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Sets the new type for the GPE (wake, run, or wake/run)
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
acpi_status
|
||||
acpi_ev_set_gpe_type(struct acpi_gpe_event_info *gpe_event_info, u8 type)
|
||||
{
|
||||
acpi_status status;
|
||||
|
||||
ACPI_FUNCTION_TRACE(ev_set_gpe_type);
|
||||
|
||||
/* Validate type and update register enable masks */
|
||||
|
||||
switch (type) {
|
||||
case ACPI_GPE_TYPE_WAKE:
|
||||
case ACPI_GPE_TYPE_RUNTIME:
|
||||
case ACPI_GPE_TYPE_WAKE_RUN:
|
||||
break;
|
||||
|
||||
default:
|
||||
return_ACPI_STATUS(AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
/* Disable the GPE if currently enabled */
|
||||
|
||||
status = acpi_ev_disable_gpe(gpe_event_info);
|
||||
|
||||
/* Clear the type bits and insert the new Type */
|
||||
|
||||
gpe_event_info->flags &= ~ACPI_GPE_TYPE_MASK;
|
||||
gpe_event_info->flags |= type;
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ev_update_gpe_enable_masks
|
||||
*
|
||||
* PARAMETERS: gpe_event_info - GPE to update
|
||||
* Type - What to do: ACPI_GPE_DISABLE or
|
||||
* ACPI_GPE_ENABLE
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
|
|
@ -110,8 +65,7 @@ acpi_ev_set_gpe_type(struct acpi_gpe_event_info *gpe_event_info, u8 type)
|
|||
******************************************************************************/
|
||||
|
||||
acpi_status
|
||||
acpi_ev_update_gpe_enable_masks(struct acpi_gpe_event_info *gpe_event_info,
|
||||
u8 type)
|
||||
acpi_ev_update_gpe_enable_masks(struct acpi_gpe_event_info *gpe_event_info)
|
||||
{
|
||||
struct acpi_gpe_register_info *gpe_register_info;
|
||||
u8 register_bit;
|
||||
|
|
@ -127,37 +81,14 @@ acpi_ev_update_gpe_enable_masks(struct acpi_gpe_event_info *gpe_event_info,
|
|||
(1 <<
|
||||
(gpe_event_info->gpe_number - gpe_register_info->base_gpe_number));
|
||||
|
||||
/* 1) Disable case. Simply clear all enable bits */
|
||||
ACPI_CLEAR_BIT(gpe_register_info->enable_for_wake, register_bit);
|
||||
ACPI_CLEAR_BIT(gpe_register_info->enable_for_run, register_bit);
|
||||
|
||||
if (type == ACPI_GPE_DISABLE) {
|
||||
ACPI_CLEAR_BIT(gpe_register_info->enable_for_wake,
|
||||
register_bit);
|
||||
ACPI_CLEAR_BIT(gpe_register_info->enable_for_run, register_bit);
|
||||
return_ACPI_STATUS(AE_OK);
|
||||
}
|
||||
|
||||
/* 2) Enable case. Set/Clear the appropriate enable bits */
|
||||
|
||||
switch (gpe_event_info->flags & ACPI_GPE_TYPE_MASK) {
|
||||
case ACPI_GPE_TYPE_WAKE:
|
||||
ACPI_SET_BIT(gpe_register_info->enable_for_wake, register_bit);
|
||||
ACPI_CLEAR_BIT(gpe_register_info->enable_for_run, register_bit);
|
||||
break;
|
||||
|
||||
case ACPI_GPE_TYPE_RUNTIME:
|
||||
ACPI_CLEAR_BIT(gpe_register_info->enable_for_wake,
|
||||
register_bit);
|
||||
if (gpe_event_info->runtime_count)
|
||||
ACPI_SET_BIT(gpe_register_info->enable_for_run, register_bit);
|
||||
break;
|
||||
|
||||
case ACPI_GPE_TYPE_WAKE_RUN:
|
||||
if (gpe_event_info->wakeup_count)
|
||||
ACPI_SET_BIT(gpe_register_info->enable_for_wake, register_bit);
|
||||
ACPI_SET_BIT(gpe_register_info->enable_for_run, register_bit);
|
||||
break;
|
||||
|
||||
default:
|
||||
return_ACPI_STATUS(AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
return_ACPI_STATUS(AE_OK);
|
||||
}
|
||||
|
|
@ -167,8 +98,6 @@ acpi_ev_update_gpe_enable_masks(struct acpi_gpe_event_info *gpe_event_info,
|
|||
* FUNCTION: acpi_ev_enable_gpe
|
||||
*
|
||||
* PARAMETERS: gpe_event_info - GPE to enable
|
||||
* write_to_hardware - Enable now, or just mark data structs
|
||||
* (WAKE GPEs should be deferred)
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
|
|
@ -176,9 +105,7 @@ acpi_ev_update_gpe_enable_masks(struct acpi_gpe_event_info *gpe_event_info,
|
|||
*
|
||||
******************************************************************************/
|
||||
|
||||
acpi_status
|
||||
acpi_ev_enable_gpe(struct acpi_gpe_event_info *gpe_event_info,
|
||||
u8 write_to_hardware)
|
||||
acpi_status acpi_ev_enable_gpe(struct acpi_gpe_event_info *gpe_event_info)
|
||||
{
|
||||
acpi_status status;
|
||||
|
||||
|
|
@ -186,47 +113,20 @@ acpi_ev_enable_gpe(struct acpi_gpe_event_info *gpe_event_info,
|
|||
|
||||
/* Make sure HW enable masks are updated */
|
||||
|
||||
status =
|
||||
acpi_ev_update_gpe_enable_masks(gpe_event_info, ACPI_GPE_ENABLE);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
status = acpi_ev_update_gpe_enable_masks(gpe_event_info);
|
||||
if (ACPI_FAILURE(status))
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
/* Mark wake-enabled or HW enable, or both */
|
||||
|
||||
switch (gpe_event_info->flags & ACPI_GPE_TYPE_MASK) {
|
||||
case ACPI_GPE_TYPE_WAKE:
|
||||
if (gpe_event_info->runtime_count) {
|
||||
/* Clear the GPE (of stale events), then enable it */
|
||||
status = acpi_hw_clear_gpe(gpe_event_info);
|
||||
if (ACPI_FAILURE(status))
|
||||
return_ACPI_STATUS(status);
|
||||
|
||||
ACPI_SET_BIT(gpe_event_info->flags, ACPI_GPE_WAKE_ENABLED);
|
||||
break;
|
||||
|
||||
case ACPI_GPE_TYPE_WAKE_RUN:
|
||||
|
||||
ACPI_SET_BIT(gpe_event_info->flags, ACPI_GPE_WAKE_ENABLED);
|
||||
|
||||
/*lint -fallthrough */
|
||||
|
||||
case ACPI_GPE_TYPE_RUNTIME:
|
||||
|
||||
ACPI_SET_BIT(gpe_event_info->flags, ACPI_GPE_RUN_ENABLED);
|
||||
|
||||
if (write_to_hardware) {
|
||||
|
||||
/* Clear the GPE (of stale events), then enable it */
|
||||
|
||||
status = acpi_hw_clear_gpe(gpe_event_info);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
/* Enable the requested runtime GPE */
|
||||
|
||||
status = acpi_hw_write_gpe_enable_reg(gpe_event_info);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
return_ACPI_STATUS(AE_BAD_PARAMETER);
|
||||
/* Enable the requested runtime GPE */
|
||||
status = acpi_hw_write_gpe_enable_reg(gpe_event_info);
|
||||
}
|
||||
|
||||
return_ACPI_STATUS(AE_OK);
|
||||
|
|
@ -252,34 +152,9 @@ acpi_status acpi_ev_disable_gpe(struct acpi_gpe_event_info *gpe_event_info)
|
|||
|
||||
/* Make sure HW enable masks are updated */
|
||||
|
||||
status =
|
||||
acpi_ev_update_gpe_enable_masks(gpe_event_info, ACPI_GPE_DISABLE);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
status = acpi_ev_update_gpe_enable_masks(gpe_event_info);
|
||||
if (ACPI_FAILURE(status))
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
/* Clear the appropriate enabled flags for this GPE */
|
||||
|
||||
switch (gpe_event_info->flags & ACPI_GPE_TYPE_MASK) {
|
||||
case ACPI_GPE_TYPE_WAKE:
|
||||
ACPI_CLEAR_BIT(gpe_event_info->flags, ACPI_GPE_WAKE_ENABLED);
|
||||
break;
|
||||
|
||||
case ACPI_GPE_TYPE_WAKE_RUN:
|
||||
ACPI_CLEAR_BIT(gpe_event_info->flags, ACPI_GPE_WAKE_ENABLED);
|
||||
|
||||
/* fallthrough */
|
||||
|
||||
case ACPI_GPE_TYPE_RUNTIME:
|
||||
|
||||
/* Disable the requested runtime GPE */
|
||||
|
||||
ACPI_CLEAR_BIT(gpe_event_info->flags, ACPI_GPE_RUN_ENABLED);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* Even if we don't know the GPE type, make sure that we always
|
||||
|
|
@ -521,7 +396,7 @@ static void ACPI_SYSTEM_XFACE acpi_ev_asynch_execute_gpe_method(void *context)
|
|||
|
||||
/* Set the GPE flags for return to enabled state */
|
||||
|
||||
(void)acpi_ev_enable_gpe(gpe_event_info, FALSE);
|
||||
(void)acpi_ev_update_gpe_enable_masks(gpe_event_info);
|
||||
|
||||
/*
|
||||
* Take a snapshot of the GPE info for this level - we copy the info to
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -258,7 +258,6 @@ acpi_ev_save_method_info(acpi_handle obj_handle,
|
|||
u32 gpe_number;
|
||||
char name[ACPI_NAME_SIZE + 1];
|
||||
u8 type;
|
||||
acpi_status status;
|
||||
|
||||
ACPI_FUNCTION_TRACE(ev_save_method_info);
|
||||
|
||||
|
|
@ -325,26 +324,20 @@ acpi_ev_save_method_info(acpi_handle obj_handle,
|
|||
|
||||
/*
|
||||
* Now we can add this information to the gpe_event_info block for use
|
||||
* during dispatch of this GPE. Default type is RUNTIME, although this may
|
||||
* change when the _PRW methods are executed later.
|
||||
* during dispatch of this GPE.
|
||||
*/
|
||||
gpe_event_info =
|
||||
&gpe_block->event_info[gpe_number - gpe_block->block_base_number];
|
||||
|
||||
gpe_event_info->flags = (u8)
|
||||
(type | ACPI_GPE_DISPATCH_METHOD | ACPI_GPE_TYPE_RUNTIME);
|
||||
gpe_event_info->flags = (u8) (type | ACPI_GPE_DISPATCH_METHOD);
|
||||
|
||||
gpe_event_info->dispatch.method_node =
|
||||
(struct acpi_namespace_node *)obj_handle;
|
||||
|
||||
/* Update enable mask, but don't enable the HW GPE as of yet */
|
||||
|
||||
status = acpi_ev_enable_gpe(gpe_event_info, FALSE);
|
||||
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_LOAD,
|
||||
"Registered GPE method %s as GPE number 0x%.2X\n",
|
||||
name, gpe_number));
|
||||
return_ACPI_STATUS(status);
|
||||
return_ACPI_STATUS(AE_OK);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
|
|
@ -454,20 +447,7 @@ acpi_ev_match_prw_and_gpe(acpi_handle obj_handle,
|
|||
gpe_block->
|
||||
block_base_number];
|
||||
|
||||
/* Mark GPE for WAKE-ONLY but WAKE_DISABLED */
|
||||
|
||||
gpe_event_info->flags &=
|
||||
~(ACPI_GPE_WAKE_ENABLED | ACPI_GPE_RUN_ENABLED);
|
||||
|
||||
status =
|
||||
acpi_ev_set_gpe_type(gpe_event_info, ACPI_GPE_TYPE_WAKE);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
status =
|
||||
acpi_ev_update_gpe_enable_masks(gpe_event_info,
|
||||
ACPI_GPE_DISABLE);
|
||||
gpe_event_info->flags |= ACPI_GPE_CAN_WAKE;
|
||||
}
|
||||
|
||||
cleanup:
|
||||
|
|
@ -989,7 +969,6 @@ acpi_status
|
|||
acpi_ev_initialize_gpe_block(struct acpi_namespace_node *gpe_device,
|
||||
struct acpi_gpe_block_info *gpe_block)
|
||||
{
|
||||
acpi_status status;
|
||||
struct acpi_gpe_event_info *gpe_event_info;
|
||||
struct acpi_gpe_walk_info gpe_info;
|
||||
u32 wake_gpe_count;
|
||||
|
|
@ -1019,42 +998,50 @@ acpi_ev_initialize_gpe_block(struct acpi_namespace_node *gpe_device,
|
|||
gpe_info.gpe_block = gpe_block;
|
||||
gpe_info.gpe_device = gpe_device;
|
||||
|
||||
status =
|
||||
acpi_ns_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
|
||||
acpi_ns_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
|
||||
ACPI_UINT32_MAX, ACPI_NS_WALK_UNLOCK,
|
||||
acpi_ev_match_prw_and_gpe, NULL,
|
||||
&gpe_info, NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* Enable all GPEs in this block that have these attributes:
|
||||
* 1) are "runtime" or "run/wake" GPEs, and
|
||||
* 2) have a corresponding _Lxx or _Exx method
|
||||
*
|
||||
* Any other GPEs within this block must be enabled via the
|
||||
* acpi_enable_gpe() external interface.
|
||||
* Enable all GPEs that have a corresponding method and aren't
|
||||
* capable of generating wakeups. Any other GPEs within this block
|
||||
* must be enabled via the acpi_enable_gpe() interface.
|
||||
*/
|
||||
wake_gpe_count = 0;
|
||||
gpe_enabled_count = 0;
|
||||
if (gpe_device == acpi_gbl_fadt_gpe_device)
|
||||
gpe_device = NULL;
|
||||
|
||||
for (i = 0; i < gpe_block->register_count; i++) {
|
||||
for (j = 0; j < 8; j++) {
|
||||
for (j = 0; j < ACPI_GPE_REGISTER_WIDTH; j++) {
|
||||
acpi_status status;
|
||||
acpi_size gpe_index;
|
||||
int gpe_number;
|
||||
|
||||
/* Get the info block for this particular GPE */
|
||||
gpe_index = (acpi_size)i * ACPI_GPE_REGISTER_WIDTH + j;
|
||||
gpe_event_info = &gpe_block->event_info[gpe_index];
|
||||
|
||||
gpe_event_info = &gpe_block->event_info[((acpi_size) i *
|
||||
ACPI_GPE_REGISTER_WIDTH)
|
||||
+ j];
|
||||
|
||||
if (((gpe_event_info->flags & ACPI_GPE_DISPATCH_MASK) ==
|
||||
ACPI_GPE_DISPATCH_METHOD) &&
|
||||
(gpe_event_info->flags & ACPI_GPE_TYPE_RUNTIME)) {
|
||||
gpe_enabled_count++;
|
||||
}
|
||||
|
||||
if (gpe_event_info->flags & ACPI_GPE_TYPE_WAKE) {
|
||||
if (gpe_event_info->flags & ACPI_GPE_CAN_WAKE) {
|
||||
wake_gpe_count++;
|
||||
if (acpi_gbl_leave_wake_gpes_disabled)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!(gpe_event_info->flags & ACPI_GPE_DISPATCH_METHOD))
|
||||
continue;
|
||||
|
||||
gpe_number = gpe_index + gpe_block->block_base_number;
|
||||
status = acpi_enable_gpe(gpe_device, gpe_number,
|
||||
ACPI_GPE_TYPE_RUNTIME);
|
||||
if (ACPI_FAILURE(status))
|
||||
ACPI_ERROR((AE_INFO,
|
||||
"Failed to enable GPE %02X\n",
|
||||
gpe_number));
|
||||
else
|
||||
gpe_enabled_count++;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1062,15 +1049,7 @@ acpi_ev_initialize_gpe_block(struct acpi_namespace_node *gpe_device,
|
|||
"Found %u Wake, Enabled %u Runtime GPEs in this block\n",
|
||||
wake_gpe_count, gpe_enabled_count));
|
||||
|
||||
/* Enable all valid runtime GPEs found above */
|
||||
|
||||
status = acpi_hw_enable_runtime_gpe_block(NULL, gpe_block, NULL);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
ACPI_ERROR((AE_INFO, "Could not enable GPEs in GpeBlock %p",
|
||||
gpe_block));
|
||||
}
|
||||
|
||||
return_ACPI_STATUS(status);
|
||||
return_ACPI_STATUS(AE_OK);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -259,9 +259,15 @@ static void ACPI_SYSTEM_XFACE acpi_ev_notify_dispatch(void *context)
|
|||
|
||||
handler_obj = notify_info->notify.handler_obj;
|
||||
if (handler_obj) {
|
||||
handler_obj->notify.handler(notify_info->notify.node,
|
||||
notify_info->notify.value,
|
||||
handler_obj->notify.context);
|
||||
struct acpi_object_notify_handler *notifier;
|
||||
|
||||
notifier = &handler_obj->notify;
|
||||
while (notifier) {
|
||||
notifier->handler(notify_info->notify.node,
|
||||
notify_info->notify.value,
|
||||
notifier->context);
|
||||
notifier = notifier->next;
|
||||
}
|
||||
}
|
||||
|
||||
/* All done with the info object */
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -329,7 +329,7 @@ acpi_ev_execute_reg_method(union acpi_operand_object *region_obj, u32 function)
|
|||
* region_offset - Where in the region to read or write
|
||||
* bit_width - Field width in bits (8, 16, 32, or 64)
|
||||
* Value - Pointer to in or out value, must be
|
||||
* full 64-bit acpi_integer
|
||||
* a full 64-bit integer
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
|
|
@ -341,8 +341,7 @@ acpi_ev_execute_reg_method(union acpi_operand_object *region_obj, u32 function)
|
|||
acpi_status
|
||||
acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,
|
||||
u32 function,
|
||||
u32 region_offset,
|
||||
u32 bit_width, acpi_integer * value)
|
||||
u32 region_offset, u32 bit_width, u64 *value)
|
||||
{
|
||||
acpi_status status;
|
||||
acpi_adr_space_handler handler;
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -168,7 +168,7 @@ acpi_ev_pci_config_region_setup(acpi_handle handle,
|
|||
void *handler_context, void **region_context)
|
||||
{
|
||||
acpi_status status = AE_OK;
|
||||
acpi_integer pci_value;
|
||||
u64 pci_value;
|
||||
struct acpi_pci_id *pci_id = *region_context;
|
||||
union acpi_operand_object *handler_obj;
|
||||
struct acpi_namespace_node *parent_node;
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
******************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -216,6 +216,72 @@ acpi_remove_fixed_event_handler(u32 event, acpi_event_handler handler)
|
|||
|
||||
ACPI_EXPORT_SYMBOL(acpi_remove_fixed_event_handler)
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_populate_handler_object
|
||||
*
|
||||
* PARAMETERS: handler_obj - Handler object to populate
|
||||
* handler_type - The type of handler:
|
||||
* ACPI_SYSTEM_NOTIFY: system_handler (00-7f)
|
||||
* ACPI_DEVICE_NOTIFY: driver_handler (80-ff)
|
||||
* ACPI_ALL_NOTIFY: both system and device
|
||||
* handler - Address of the handler
|
||||
* context - Value passed to the handler on each GPE
|
||||
* next - Address of a handler object to link to
|
||||
*
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: Populate a handler object.
|
||||
*
|
||||
******************************************************************************/
|
||||
static void
|
||||
acpi_populate_handler_object(struct acpi_object_notify_handler *handler_obj,
|
||||
u32 handler_type,
|
||||
acpi_notify_handler handler, void *context,
|
||||
struct acpi_object_notify_handler *next)
|
||||
{
|
||||
handler_obj->handler_type = handler_type;
|
||||
handler_obj->handler = handler;
|
||||
handler_obj->context = context;
|
||||
handler_obj->next = next;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_add_handler_object
|
||||
*
|
||||
* PARAMETERS: parent_obj - Parent of the new object
|
||||
* handler - Address of the handler
|
||||
* context - Value passed to the handler on each GPE
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Create a new handler object and populate it.
|
||||
*
|
||||
******************************************************************************/
|
||||
static acpi_status
|
||||
acpi_add_handler_object(struct acpi_object_notify_handler *parent_obj,
|
||||
acpi_notify_handler handler, void *context)
|
||||
{
|
||||
struct acpi_object_notify_handler *handler_obj;
|
||||
|
||||
/* The parent must not be a defice notify handler object. */
|
||||
if (parent_obj->handler_type & ACPI_DEVICE_NOTIFY)
|
||||
return AE_BAD_PARAMETER;
|
||||
|
||||
handler_obj = ACPI_ALLOCATE_ZEROED(sizeof(*handler_obj));
|
||||
if (!handler_obj)
|
||||
return AE_NO_MEMORY;
|
||||
|
||||
acpi_populate_handler_object(handler_obj,
|
||||
ACPI_SYSTEM_NOTIFY,
|
||||
handler, context,
|
||||
parent_obj->next);
|
||||
parent_obj->next = handler_obj;
|
||||
|
||||
return AE_OK;
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_install_notify_handler
|
||||
|
|
@ -316,15 +382,32 @@ acpi_install_notify_handler(acpi_handle device,
|
|||
obj_desc = acpi_ns_get_attached_object(node);
|
||||
if (obj_desc) {
|
||||
|
||||
/* Object exists - make sure there's no handler */
|
||||
/* Object exists. */
|
||||
|
||||
if (((handler_type & ACPI_SYSTEM_NOTIFY) &&
|
||||
obj_desc->common_notify.system_notify) ||
|
||||
((handler_type & ACPI_DEVICE_NOTIFY) &&
|
||||
obj_desc->common_notify.device_notify)) {
|
||||
/* For a device notify, make sure there's no handler. */
|
||||
if ((handler_type & ACPI_DEVICE_NOTIFY) &&
|
||||
obj_desc->common_notify.device_notify) {
|
||||
status = AE_ALREADY_EXISTS;
|
||||
goto unlock_and_exit;
|
||||
}
|
||||
|
||||
/* System notifies may have more handlers installed. */
|
||||
notify_obj = obj_desc->common_notify.system_notify;
|
||||
|
||||
if ((handler_type & ACPI_SYSTEM_NOTIFY) && notify_obj) {
|
||||
struct acpi_object_notify_handler *parent_obj;
|
||||
|
||||
if (handler_type & ACPI_DEVICE_NOTIFY) {
|
||||
status = AE_ALREADY_EXISTS;
|
||||
goto unlock_and_exit;
|
||||
}
|
||||
|
||||
parent_obj = ¬ify_obj->notify;
|
||||
status = acpi_add_handler_object(parent_obj,
|
||||
handler,
|
||||
context);
|
||||
goto unlock_and_exit;
|
||||
}
|
||||
} else {
|
||||
/* Create a new object */
|
||||
|
||||
|
|
@ -356,9 +439,10 @@ acpi_install_notify_handler(acpi_handle device,
|
|||
goto unlock_and_exit;
|
||||
}
|
||||
|
||||
notify_obj->notify.node = node;
|
||||
notify_obj->notify.handler = handler;
|
||||
notify_obj->notify.context = context;
|
||||
acpi_populate_handler_object(¬ify_obj->notify,
|
||||
handler_type,
|
||||
handler, context,
|
||||
NULL);
|
||||
|
||||
if (handler_type & ACPI_SYSTEM_NOTIFY) {
|
||||
obj_desc->common_notify.system_notify = notify_obj;
|
||||
|
|
@ -418,6 +502,10 @@ acpi_remove_notify_handler(acpi_handle device,
|
|||
goto exit;
|
||||
}
|
||||
|
||||
|
||||
/* Make sure all deferred tasks are completed */
|
||||
acpi_os_wait_events_complete(NULL);
|
||||
|
||||
status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
goto exit;
|
||||
|
|
@ -445,15 +533,6 @@ acpi_remove_notify_handler(acpi_handle device,
|
|||
goto unlock_and_exit;
|
||||
}
|
||||
|
||||
/* Make sure all deferred tasks are completed */
|
||||
|
||||
(void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);
|
||||
acpi_os_wait_events_complete(NULL);
|
||||
status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
goto exit;
|
||||
}
|
||||
|
||||
if (handler_type & ACPI_SYSTEM_NOTIFY) {
|
||||
acpi_gbl_system_notify.node = NULL;
|
||||
acpi_gbl_system_notify.handler = NULL;
|
||||
|
|
@ -488,28 +567,60 @@ acpi_remove_notify_handler(acpi_handle device,
|
|||
/* Object exists - make sure there's an existing handler */
|
||||
|
||||
if (handler_type & ACPI_SYSTEM_NOTIFY) {
|
||||
struct acpi_object_notify_handler *handler_obj;
|
||||
struct acpi_object_notify_handler *parent_obj;
|
||||
|
||||
notify_obj = obj_desc->common_notify.system_notify;
|
||||
if (!notify_obj) {
|
||||
status = AE_NOT_EXIST;
|
||||
goto unlock_and_exit;
|
||||
}
|
||||
|
||||
if (notify_obj->notify.handler != handler) {
|
||||
handler_obj = ¬ify_obj->notify;
|
||||
parent_obj = NULL;
|
||||
while (handler_obj->handler != handler) {
|
||||
if (handler_obj->next) {
|
||||
parent_obj = handler_obj;
|
||||
handler_obj = handler_obj->next;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (handler_obj->handler != handler) {
|
||||
status = AE_BAD_PARAMETER;
|
||||
goto unlock_and_exit;
|
||||
}
|
||||
/* Make sure all deferred tasks are completed */
|
||||
|
||||
(void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);
|
||||
acpi_os_wait_events_complete(NULL);
|
||||
status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
goto exit;
|
||||
/*
|
||||
* Remove the handler. There are three possible cases.
|
||||
* First, we may need to remove a non-embedded object.
|
||||
* Second, we may need to remove the embedded object's
|
||||
* handler data, while non-embedded objects exist.
|
||||
* Finally, we may need to remove the embedded object
|
||||
* entirely along with its container.
|
||||
*/
|
||||
if (parent_obj) {
|
||||
/* Non-embedded object is being removed. */
|
||||
parent_obj->next = handler_obj->next;
|
||||
ACPI_FREE(handler_obj);
|
||||
} else if (notify_obj->notify.next) {
|
||||
/*
|
||||
* The handler matches the embedded object, but
|
||||
* there are more handler objects in the list.
|
||||
* Replace the embedded object's data with the
|
||||
* first next object's data and remove that
|
||||
* object.
|
||||
*/
|
||||
parent_obj = ¬ify_obj->notify;
|
||||
handler_obj = notify_obj->notify.next;
|
||||
*parent_obj = *handler_obj;
|
||||
ACPI_FREE(handler_obj);
|
||||
} else {
|
||||
/* No more handler objects in the list. */
|
||||
obj_desc->common_notify.system_notify = NULL;
|
||||
acpi_ut_remove_reference(notify_obj);
|
||||
}
|
||||
|
||||
/* Remove the handler */
|
||||
obj_desc->common_notify.system_notify = NULL;
|
||||
acpi_ut_remove_reference(notify_obj);
|
||||
}
|
||||
|
||||
if (handler_type & ACPI_DEVICE_NOTIFY) {
|
||||
|
|
@ -523,14 +634,6 @@ acpi_remove_notify_handler(acpi_handle device,
|
|||
status = AE_BAD_PARAMETER;
|
||||
goto unlock_and_exit;
|
||||
}
|
||||
/* Make sure all deferred tasks are completed */
|
||||
|
||||
(void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);
|
||||
acpi_os_wait_events_complete(NULL);
|
||||
status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
goto exit;
|
||||
}
|
||||
|
||||
/* Remove the handler */
|
||||
obj_desc->common_notify.device_notify = NULL;
|
||||
|
|
@ -617,13 +720,6 @@ acpi_install_gpe_handler(acpi_handle gpe_device,
|
|||
handler->context = context;
|
||||
handler->method_node = gpe_event_info->dispatch.method_node;
|
||||
|
||||
/* Disable the GPE before installing the handler */
|
||||
|
||||
status = acpi_ev_disable_gpe(gpe_event_info);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
goto unlock_and_exit;
|
||||
}
|
||||
|
||||
/* Install the handler */
|
||||
|
||||
flags = acpi_os_acquire_lock(acpi_gbl_gpe_lock);
|
||||
|
|
@ -707,13 +803,6 @@ acpi_remove_gpe_handler(acpi_handle gpe_device,
|
|||
goto unlock_and_exit;
|
||||
}
|
||||
|
||||
/* Disable the GPE before removing the handler */
|
||||
|
||||
status = acpi_ev_disable_gpe(gpe_event_info);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
goto unlock_and_exit;
|
||||
}
|
||||
|
||||
/* Make sure all deferred tasks are completed */
|
||||
|
||||
(void)acpi_ut_release_mutex(ACPI_MTX_EVENTS);
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -201,67 +201,25 @@ ACPI_EXPORT_SYMBOL(acpi_enable_event)
|
|||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_set_gpe_type
|
||||
* FUNCTION: acpi_set_gpe
|
||||
*
|
||||
* PARAMETERS: gpe_device - Parent GPE Device
|
||||
* gpe_number - GPE level within the GPE block
|
||||
* Type - New GPE type
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Set the type of an individual GPE
|
||||
*
|
||||
******************************************************************************/
|
||||
acpi_status acpi_set_gpe_type(acpi_handle gpe_device, u32 gpe_number, u8 type)
|
||||
{
|
||||
acpi_status status = AE_OK;
|
||||
struct acpi_gpe_event_info *gpe_event_info;
|
||||
|
||||
ACPI_FUNCTION_TRACE(acpi_set_gpe_type);
|
||||
|
||||
/* Ensure that we have a valid GPE number */
|
||||
|
||||
gpe_event_info = acpi_ev_get_gpe_event_info(gpe_device, gpe_number);
|
||||
if (!gpe_event_info) {
|
||||
status = AE_BAD_PARAMETER;
|
||||
goto unlock_and_exit;
|
||||
}
|
||||
|
||||
if ((gpe_event_info->flags & ACPI_GPE_TYPE_MASK) == type) {
|
||||
return_ACPI_STATUS(AE_OK);
|
||||
}
|
||||
|
||||
/* Set the new type (will disable GPE if currently enabled) */
|
||||
|
||||
status = acpi_ev_set_gpe_type(gpe_event_info, type);
|
||||
|
||||
unlock_and_exit:
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
ACPI_EXPORT_SYMBOL(acpi_set_gpe_type)
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_enable_gpe
|
||||
*
|
||||
* PARAMETERS: gpe_device - Parent GPE Device
|
||||
* gpe_number - GPE level within the GPE block
|
||||
* Flags - Just enable, or also wake enable?
|
||||
* action - Enable or disable
|
||||
* Called from ISR or not
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Enable an ACPI event (general purpose)
|
||||
* DESCRIPTION: Enable or disable an ACPI event (general purpose)
|
||||
*
|
||||
******************************************************************************/
|
||||
acpi_status acpi_enable_gpe(acpi_handle gpe_device, u32 gpe_number)
|
||||
acpi_status acpi_set_gpe(acpi_handle gpe_device, u32 gpe_number, u8 action)
|
||||
{
|
||||
acpi_status status = AE_OK;
|
||||
acpi_cpu_flags flags;
|
||||
struct acpi_gpe_event_info *gpe_event_info;
|
||||
|
||||
ACPI_FUNCTION_TRACE(acpi_enable_gpe);
|
||||
ACPI_FUNCTION_TRACE(acpi_set_gpe);
|
||||
|
||||
flags = acpi_os_acquire_lock(acpi_gbl_gpe_lock);
|
||||
|
||||
|
|
@ -273,15 +231,90 @@ acpi_status acpi_enable_gpe(acpi_handle gpe_device, u32 gpe_number)
|
|||
goto unlock_and_exit;
|
||||
}
|
||||
|
||||
/* Perform the enable */
|
||||
/* Perform the action */
|
||||
|
||||
status = acpi_ev_enable_gpe(gpe_event_info, TRUE);
|
||||
switch (action) {
|
||||
case ACPI_GPE_ENABLE:
|
||||
status = acpi_ev_enable_gpe(gpe_event_info);
|
||||
break;
|
||||
|
||||
case ACPI_GPE_DISABLE:
|
||||
status = acpi_ev_disable_gpe(gpe_event_info);
|
||||
break;
|
||||
|
||||
default:
|
||||
ACPI_ERROR((AE_INFO, "Invalid action\n"));
|
||||
status = AE_BAD_PARAMETER;
|
||||
break;
|
||||
}
|
||||
|
||||
unlock_and_exit:
|
||||
acpi_os_release_lock(acpi_gbl_gpe_lock, flags);
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
ACPI_EXPORT_SYMBOL(acpi_set_gpe)
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_enable_gpe
|
||||
*
|
||||
* PARAMETERS: gpe_device - Parent GPE Device
|
||||
* gpe_number - GPE level within the GPE block
|
||||
* type - Purpose the GPE will be used for
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Take a reference to a GPE and enable it if necessary
|
||||
*
|
||||
******************************************************************************/
|
||||
acpi_status acpi_enable_gpe(acpi_handle gpe_device, u32 gpe_number, u8 type)
|
||||
{
|
||||
acpi_status status = AE_OK;
|
||||
acpi_cpu_flags flags;
|
||||
struct acpi_gpe_event_info *gpe_event_info;
|
||||
|
||||
ACPI_FUNCTION_TRACE(acpi_enable_gpe);
|
||||
|
||||
if (type & ~ACPI_GPE_TYPE_WAKE_RUN)
|
||||
return_ACPI_STATUS(AE_BAD_PARAMETER);
|
||||
|
||||
flags = acpi_os_acquire_lock(acpi_gbl_gpe_lock);
|
||||
|
||||
/* Ensure that we have a valid GPE number */
|
||||
|
||||
gpe_event_info = acpi_ev_get_gpe_event_info(gpe_device, gpe_number);
|
||||
if (!gpe_event_info) {
|
||||
status = AE_BAD_PARAMETER;
|
||||
goto unlock_and_exit;
|
||||
}
|
||||
|
||||
if (type & ACPI_GPE_TYPE_RUNTIME) {
|
||||
if (++gpe_event_info->runtime_count == 1) {
|
||||
status = acpi_ev_enable_gpe(gpe_event_info);
|
||||
if (ACPI_FAILURE(status))
|
||||
gpe_event_info->runtime_count--;
|
||||
}
|
||||
}
|
||||
|
||||
if (type & ACPI_GPE_TYPE_WAKE) {
|
||||
if (!(gpe_event_info->flags & ACPI_GPE_CAN_WAKE)) {
|
||||
status = AE_BAD_PARAMETER;
|
||||
goto unlock_and_exit;
|
||||
}
|
||||
|
||||
/*
|
||||
* Wake-up GPEs are only enabled right prior to putting the
|
||||
* system into a sleep state.
|
||||
*/
|
||||
if (++gpe_event_info->wakeup_count == 1)
|
||||
acpi_ev_update_gpe_enable_masks(gpe_event_info);
|
||||
}
|
||||
|
||||
unlock_and_exit:
|
||||
acpi_os_release_lock(acpi_gbl_gpe_lock, flags);
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
ACPI_EXPORT_SYMBOL(acpi_enable_gpe)
|
||||
|
||||
/*******************************************************************************
|
||||
|
|
@ -290,15 +323,14 @@ ACPI_EXPORT_SYMBOL(acpi_enable_gpe)
|
|||
*
|
||||
* PARAMETERS: gpe_device - Parent GPE Device
|
||||
* gpe_number - GPE level within the GPE block
|
||||
* Flags - Just disable, or also wake disable?
|
||||
* Called from ISR or not
|
||||
* type - Purpose the GPE won't be used for any more
|
||||
*
|
||||
* RETURN: Status
|
||||
*
|
||||
* DESCRIPTION: Disable an ACPI event (general purpose)
|
||||
* DESCRIPTION: Release a reference to a GPE and disable it if necessary
|
||||
*
|
||||
******************************************************************************/
|
||||
acpi_status acpi_disable_gpe(acpi_handle gpe_device, u32 gpe_number)
|
||||
acpi_status acpi_disable_gpe(acpi_handle gpe_device, u32 gpe_number, u8 type)
|
||||
{
|
||||
acpi_status status = AE_OK;
|
||||
acpi_cpu_flags flags;
|
||||
|
|
@ -306,6 +338,9 @@ acpi_status acpi_disable_gpe(acpi_handle gpe_device, u32 gpe_number)
|
|||
|
||||
ACPI_FUNCTION_TRACE(acpi_disable_gpe);
|
||||
|
||||
if (type & ~ACPI_GPE_TYPE_WAKE_RUN)
|
||||
return_ACPI_STATUS(AE_BAD_PARAMETER);
|
||||
|
||||
flags = acpi_os_acquire_lock(acpi_gbl_gpe_lock);
|
||||
/* Ensure that we have a valid GPE number */
|
||||
|
||||
|
|
@ -315,13 +350,24 @@ acpi_status acpi_disable_gpe(acpi_handle gpe_device, u32 gpe_number)
|
|||
goto unlock_and_exit;
|
||||
}
|
||||
|
||||
status = acpi_ev_disable_gpe(gpe_event_info);
|
||||
if ((type & ACPI_GPE_TYPE_RUNTIME) && gpe_event_info->runtime_count) {
|
||||
if (--gpe_event_info->runtime_count == 0)
|
||||
status = acpi_ev_disable_gpe(gpe_event_info);
|
||||
}
|
||||
|
||||
if ((type & ACPI_GPE_TYPE_WAKE) && gpe_event_info->wakeup_count) {
|
||||
/*
|
||||
* Wake-up GPEs are not enabled after leaving system sleep
|
||||
* states, so we don't need to disable them here.
|
||||
*/
|
||||
if (--gpe_event_info->wakeup_count == 0)
|
||||
acpi_ev_update_gpe_enable_masks(gpe_event_info);
|
||||
}
|
||||
|
||||
unlock_and_exit:
|
||||
acpi_os_release_lock(acpi_gbl_gpe_lock, flags);
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
ACPI_EXPORT_SYMBOL(acpi_disable_gpe)
|
||||
|
||||
/*******************************************************************************
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -284,7 +284,7 @@ static acpi_status
|
|||
acpi_ex_region_read(union acpi_operand_object *obj_desc, u32 length, u8 *buffer)
|
||||
{
|
||||
acpi_status status;
|
||||
acpi_integer value;
|
||||
u64 value;
|
||||
u32 region_offset = 0;
|
||||
u32 i;
|
||||
|
||||
|
|
@ -490,7 +490,11 @@ acpi_ex_load_op(union acpi_operand_object *obj_desc,
|
|||
|
||||
status = acpi_tb_add_table(&table_desc, &table_index);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
goto cleanup;
|
||||
|
||||
/* Delete allocated table buffer */
|
||||
|
||||
acpi_tb_delete_table(&table_desc);
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -533,13 +537,6 @@ acpi_ex_load_op(union acpi_operand_object *obj_desc,
|
|||
acpi_gbl_table_handler_context);
|
||||
}
|
||||
|
||||
cleanup:
|
||||
if (ACPI_FAILURE(status)) {
|
||||
|
||||
/* Delete allocated table buffer */
|
||||
|
||||
acpi_tb_delete_table(&table_desc);
|
||||
}
|
||||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -51,8 +51,7 @@ ACPI_MODULE_NAME("exconvrt")
|
|||
|
||||
/* Local prototypes */
|
||||
static u32
|
||||
acpi_ex_convert_to_ascii(acpi_integer integer,
|
||||
u16 base, u8 * string, u8 max_length);
|
||||
acpi_ex_convert_to_ascii(u64 integer, u16 base, u8 *string, u8 max_length);
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
|
|
@ -75,7 +74,7 @@ acpi_ex_convert_to_integer(union acpi_operand_object *obj_desc,
|
|||
{
|
||||
union acpi_operand_object *return_desc;
|
||||
u8 *pointer;
|
||||
acpi_integer result;
|
||||
u64 result;
|
||||
u32 i;
|
||||
u32 count;
|
||||
acpi_status status;
|
||||
|
|
@ -155,7 +154,7 @@ acpi_ex_convert_to_integer(union acpi_operand_object *obj_desc,
|
|||
* Little endian is used, meaning that the first byte of the buffer
|
||||
* is the LSB of the integer
|
||||
*/
|
||||
result |= (((acpi_integer) pointer[i]) << (i * 8));
|
||||
result |= (((u64) pointer[i]) << (i * 8));
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
@ -285,10 +284,9 @@ acpi_ex_convert_to_buffer(union acpi_operand_object *obj_desc,
|
|||
******************************************************************************/
|
||||
|
||||
static u32
|
||||
acpi_ex_convert_to_ascii(acpi_integer integer,
|
||||
u16 base, u8 * string, u8 data_width)
|
||||
acpi_ex_convert_to_ascii(u64 integer, u16 base, u8 *string, u8 data_width)
|
||||
{
|
||||
acpi_integer digit;
|
||||
u64 digit;
|
||||
u32 i;
|
||||
u32 j;
|
||||
u32 k = 0;
|
||||
|
|
@ -531,10 +529,9 @@ acpi_ex_convert_to_string(union acpi_operand_object * obj_desc,
|
|||
* (separated by commas or spaces)
|
||||
*/
|
||||
for (i = 0; i < obj_desc->buffer.length; i++) {
|
||||
new_buf += acpi_ex_convert_to_ascii((acpi_integer)
|
||||
obj_desc->buffer.
|
||||
pointer[i], base,
|
||||
new_buf, 1);
|
||||
new_buf += acpi_ex_convert_to_ascii((u64) obj_desc->
|
||||
buffer.pointer[i],
|
||||
base, new_buf, 1);
|
||||
*new_buf++ = separator; /* each separated by a comma or space */
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -130,7 +130,7 @@ acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
|
|||
/* Call the region handler for the read */
|
||||
|
||||
status = acpi_ex_access_region(obj_desc, 0,
|
||||
ACPI_CAST_PTR(acpi_integer,
|
||||
ACPI_CAST_PTR(u64,
|
||||
buffer_desc->
|
||||
buffer.pointer),
|
||||
function);
|
||||
|
|
@ -141,7 +141,7 @@ acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
|
|||
/*
|
||||
* Allocate a buffer for the contents of the field.
|
||||
*
|
||||
* If the field is larger than the size of an acpi_integer, create
|
||||
* If the field is larger than the current integer width, create
|
||||
* a BUFFER to hold it. Otherwise, use an INTEGER. This allows
|
||||
* the use of arithmetic operators on the returned value if the
|
||||
* field size is equal or smaller than an Integer.
|
||||
|
|
@ -306,8 +306,7 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc,
|
|||
* same buffer)
|
||||
*/
|
||||
status = acpi_ex_access_region(obj_desc, 0,
|
||||
(acpi_integer *) buffer,
|
||||
function);
|
||||
(u64 *) buffer, function);
|
||||
acpi_ex_release_global_lock(obj_desc->common_field.field_flags);
|
||||
|
||||
*result_desc = buffer_desc;
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -55,11 +55,10 @@ ACPI_MODULE_NAME("exfldio")
|
|||
static acpi_status
|
||||
acpi_ex_field_datum_io(union acpi_operand_object *obj_desc,
|
||||
u32 field_datum_byte_offset,
|
||||
acpi_integer * value, u32 read_write);
|
||||
u64 *value, u32 read_write);
|
||||
|
||||
static u8
|
||||
acpi_ex_register_overflow(union acpi_operand_object *obj_desc,
|
||||
acpi_integer value);
|
||||
acpi_ex_register_overflow(union acpi_operand_object *obj_desc, u64 value);
|
||||
|
||||
static acpi_status
|
||||
acpi_ex_setup_region(union acpi_operand_object *obj_desc,
|
||||
|
|
@ -212,7 +211,7 @@ acpi_ex_setup_region(union acpi_operand_object *obj_desc,
|
|||
* field_datum_byte_offset - Byte offset of this datum within the
|
||||
* parent field
|
||||
* Value - Where to store value (must at least
|
||||
* the size of acpi_integer)
|
||||
* 64 bits)
|
||||
* Function - Read or Write flag plus other region-
|
||||
* dependent flags
|
||||
*
|
||||
|
|
@ -224,8 +223,7 @@ acpi_ex_setup_region(union acpi_operand_object *obj_desc,
|
|||
|
||||
acpi_status
|
||||
acpi_ex_access_region(union acpi_operand_object *obj_desc,
|
||||
u32 field_datum_byte_offset,
|
||||
acpi_integer * value, u32 function)
|
||||
u32 field_datum_byte_offset, u64 *value, u32 function)
|
||||
{
|
||||
acpi_status status;
|
||||
union acpi_operand_object *rgn_desc;
|
||||
|
|
@ -317,8 +315,7 @@ acpi_ex_access_region(union acpi_operand_object *obj_desc,
|
|||
******************************************************************************/
|
||||
|
||||
static u8
|
||||
acpi_ex_register_overflow(union acpi_operand_object *obj_desc,
|
||||
acpi_integer value)
|
||||
acpi_ex_register_overflow(union acpi_operand_object *obj_desc, u64 value)
|
||||
{
|
||||
|
||||
if (obj_desc->common_field.bit_length >= ACPI_INTEGER_BIT_SIZE) {
|
||||
|
|
@ -329,7 +326,7 @@ acpi_ex_register_overflow(union acpi_operand_object *obj_desc,
|
|||
return (FALSE);
|
||||
}
|
||||
|
||||
if (value >= ((acpi_integer) 1 << obj_desc->common_field.bit_length)) {
|
||||
if (value >= ((u64) 1 << obj_desc->common_field.bit_length)) {
|
||||
/*
|
||||
* The Value is larger than the maximum value that can fit into
|
||||
* the register.
|
||||
|
|
@ -362,11 +359,10 @@ acpi_ex_register_overflow(union acpi_operand_object *obj_desc,
|
|||
|
||||
static acpi_status
|
||||
acpi_ex_field_datum_io(union acpi_operand_object *obj_desc,
|
||||
u32 field_datum_byte_offset,
|
||||
acpi_integer * value, u32 read_write)
|
||||
u32 field_datum_byte_offset, u64 *value, u32 read_write)
|
||||
{
|
||||
acpi_status status;
|
||||
acpi_integer local_value;
|
||||
u64 local_value;
|
||||
|
||||
ACPI_FUNCTION_TRACE_U32(ex_field_datum_io, field_datum_byte_offset);
|
||||
|
||||
|
|
@ -439,8 +435,8 @@ acpi_ex_field_datum_io(union acpi_operand_object *obj_desc,
|
|||
* the register
|
||||
*/
|
||||
if (acpi_ex_register_overflow(obj_desc->bank_field.bank_obj,
|
||||
(acpi_integer) obj_desc->
|
||||
bank_field.value)) {
|
||||
(u64) obj_desc->bank_field.
|
||||
value)) {
|
||||
return_ACPI_STATUS(AE_AML_REGISTER_LIMIT);
|
||||
}
|
||||
|
||||
|
|
@ -481,8 +477,8 @@ acpi_ex_field_datum_io(union acpi_operand_object *obj_desc,
|
|||
* the register
|
||||
*/
|
||||
if (acpi_ex_register_overflow(obj_desc->index_field.index_obj,
|
||||
(acpi_integer) obj_desc->
|
||||
index_field.value)) {
|
||||
(u64) obj_desc->index_field.
|
||||
value)) {
|
||||
return_ACPI_STATUS(AE_AML_REGISTER_LIMIT);
|
||||
}
|
||||
|
||||
|
|
@ -512,7 +508,7 @@ acpi_ex_field_datum_io(union acpi_operand_object *obj_desc,
|
|||
status =
|
||||
acpi_ex_extract_from_field(obj_desc->index_field.
|
||||
data_obj, value,
|
||||
sizeof(acpi_integer));
|
||||
sizeof(u64));
|
||||
} else {
|
||||
/* Write the datum to the data_register */
|
||||
|
||||
|
|
@ -523,7 +519,7 @@ acpi_ex_field_datum_io(union acpi_operand_object *obj_desc,
|
|||
status =
|
||||
acpi_ex_insert_into_field(obj_desc->index_field.
|
||||
data_obj, value,
|
||||
sizeof(acpi_integer));
|
||||
sizeof(u64));
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
@ -571,13 +567,12 @@ acpi_ex_field_datum_io(union acpi_operand_object *obj_desc,
|
|||
|
||||
acpi_status
|
||||
acpi_ex_write_with_update_rule(union acpi_operand_object *obj_desc,
|
||||
acpi_integer mask,
|
||||
acpi_integer field_value,
|
||||
u32 field_datum_byte_offset)
|
||||
u64 mask,
|
||||
u64 field_value, u32 field_datum_byte_offset)
|
||||
{
|
||||
acpi_status status = AE_OK;
|
||||
acpi_integer merged_value;
|
||||
acpi_integer current_value;
|
||||
u64 merged_value;
|
||||
u64 current_value;
|
||||
|
||||
ACPI_FUNCTION_TRACE_U32(ex_write_with_update_rule, mask);
|
||||
|
||||
|
|
@ -587,7 +582,7 @@ acpi_ex_write_with_update_rule(union acpi_operand_object *obj_desc,
|
|||
|
||||
/* If the mask is all ones, we don't need to worry about the update rule */
|
||||
|
||||
if (mask != ACPI_INTEGER_MAX) {
|
||||
if (mask != ACPI_UINT64_MAX) {
|
||||
|
||||
/* Decode the update rule */
|
||||
|
||||
|
|
@ -678,8 +673,8 @@ acpi_ex_extract_from_field(union acpi_operand_object *obj_desc,
|
|||
void *buffer, u32 buffer_length)
|
||||
{
|
||||
acpi_status status;
|
||||
acpi_integer raw_datum;
|
||||
acpi_integer merged_datum;
|
||||
u64 raw_datum;
|
||||
u64 merged_datum;
|
||||
u32 field_offset = 0;
|
||||
u32 buffer_offset = 0;
|
||||
u32 buffer_tail_bits;
|
||||
|
|
@ -804,10 +799,10 @@ acpi_ex_insert_into_field(union acpi_operand_object *obj_desc,
|
|||
void *buffer, u32 buffer_length)
|
||||
{
|
||||
acpi_status status;
|
||||
acpi_integer mask;
|
||||
acpi_integer width_mask;
|
||||
acpi_integer merged_datum;
|
||||
acpi_integer raw_datum = 0;
|
||||
u64 mask;
|
||||
u64 width_mask;
|
||||
u64 merged_datum;
|
||||
u64 raw_datum = 0;
|
||||
u32 field_offset = 0;
|
||||
u32 buffer_offset = 0;
|
||||
u32 buffer_tail_bits;
|
||||
|
|
@ -855,7 +850,7 @@ acpi_ex_insert_into_field(union acpi_operand_object *obj_desc,
|
|||
* shift operator
|
||||
*/
|
||||
if (obj_desc->common_field.access_bit_width == ACPI_INTEGER_BIT_SIZE) {
|
||||
width_mask = ACPI_INTEGER_MAX;
|
||||
width_mask = ACPI_UINT64_MAX;
|
||||
} else {
|
||||
width_mask =
|
||||
ACPI_MASK_BITS_ABOVE(obj_desc->common_field.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -409,8 +409,7 @@ acpi_ex_do_concatenate(union acpi_operand_object *operand0,
|
|||
*
|
||||
******************************************************************************/
|
||||
|
||||
acpi_integer
|
||||
acpi_ex_do_math_op(u16 opcode, acpi_integer integer0, acpi_integer integer1)
|
||||
u64 acpi_ex_do_math_op(u16 opcode, u64 integer0, u64 integer1)
|
||||
{
|
||||
|
||||
ACPI_FUNCTION_ENTRY();
|
||||
|
|
@ -498,8 +497,7 @@ acpi_ex_do_math_op(u16 opcode, acpi_integer integer0, acpi_integer integer1)
|
|||
|
||||
acpi_status
|
||||
acpi_ex_do_logical_numeric_op(u16 opcode,
|
||||
acpi_integer integer0,
|
||||
acpi_integer integer1, u8 * logical_result)
|
||||
u64 integer0, u64 integer1, u8 *logical_result)
|
||||
{
|
||||
acpi_status status = AE_OK;
|
||||
u8 local_result = FALSE;
|
||||
|
|
@ -564,8 +562,8 @@ acpi_ex_do_logical_op(u16 opcode,
|
|||
union acpi_operand_object *operand1, u8 * logical_result)
|
||||
{
|
||||
union acpi_operand_object *local_operand1 = operand1;
|
||||
acpi_integer integer0;
|
||||
acpi_integer integer1;
|
||||
u64 integer0;
|
||||
u64 integer1;
|
||||
u32 length0;
|
||||
u32 length1;
|
||||
acpi_status status = AE_OK;
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -375,8 +375,7 @@ acpi_ex_release_mutex(union acpi_operand_object *obj_desc,
|
|||
return_ACPI_STATUS(AE_AML_MUTEX_NOT_ACQUIRED);
|
||||
}
|
||||
|
||||
/* Must have a valid thread ID */
|
||||
|
||||
/* Must have a valid thread. */
|
||||
if (!walk_state->thread) {
|
||||
ACPI_ERROR((AE_INFO,
|
||||
"Cannot release Mutex [%4.4s], null thread info",
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -261,8 +261,8 @@ acpi_status acpi_ex_opcode_1A_1T_1R(struct acpi_walk_state *walk_state)
|
|||
union acpi_operand_object *return_desc2 = NULL;
|
||||
u32 temp32;
|
||||
u32 i;
|
||||
acpi_integer power_of_ten;
|
||||
acpi_integer digit;
|
||||
u64 power_of_ten;
|
||||
u64 digit;
|
||||
|
||||
ACPI_FUNCTION_TRACE_STR(ex_opcode_1A_1T_1R,
|
||||
acpi_ps_get_opcode_name(walk_state->opcode));
|
||||
|
|
@ -362,7 +362,7 @@ acpi_status acpi_ex_opcode_1A_1T_1R(struct acpi_walk_state *walk_state)
|
|||
/* Sum the digit into the result with the current power of 10 */
|
||||
|
||||
return_desc->integer.value +=
|
||||
(((acpi_integer) temp32) * power_of_ten);
|
||||
(((u64) temp32) * power_of_ten);
|
||||
|
||||
/* Shift to next BCD digit */
|
||||
|
||||
|
|
@ -392,7 +392,7 @@ acpi_status acpi_ex_opcode_1A_1T_1R(struct acpi_walk_state *walk_state)
|
|||
* remainder from above
|
||||
*/
|
||||
return_desc->integer.value |=
|
||||
(((acpi_integer) temp32) << ACPI_MUL_4(i));
|
||||
(((u64) temp32) << ACPI_MUL_4(i));
|
||||
}
|
||||
|
||||
/* Overflow if there is any data left in Digit */
|
||||
|
|
@ -439,7 +439,7 @@ acpi_status acpi_ex_opcode_1A_1T_1R(struct acpi_walk_state *walk_state)
|
|||
|
||||
/* The object exists in the namespace, return TRUE */
|
||||
|
||||
return_desc->integer.value = ACPI_INTEGER_MAX;
|
||||
return_desc->integer.value = ACPI_UINT64_MAX;
|
||||
goto cleanup;
|
||||
|
||||
default:
|
||||
|
|
@ -589,7 +589,7 @@ acpi_status acpi_ex_opcode_1A_0T_1R(struct acpi_walk_state *walk_state)
|
|||
union acpi_operand_object *return_desc = NULL;
|
||||
acpi_status status = AE_OK;
|
||||
u32 type;
|
||||
acpi_integer value;
|
||||
u64 value;
|
||||
|
||||
ACPI_FUNCTION_TRACE_STR(ex_opcode_1A_0T_1R,
|
||||
acpi_ps_get_opcode_name(walk_state->opcode));
|
||||
|
|
@ -610,7 +610,7 @@ acpi_status acpi_ex_opcode_1A_0T_1R(struct acpi_walk_state *walk_state)
|
|||
* return_desc->Integer.Value is initially == 0 (FALSE) from above.
|
||||
*/
|
||||
if (!operand[0]->integer.value) {
|
||||
return_desc->integer.value = ACPI_INTEGER_MAX;
|
||||
return_desc->integer.value = ACPI_UINT64_MAX;
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -282,7 +282,7 @@ acpi_status acpi_ex_opcode_2A_1T_1R(struct acpi_walk_state *walk_state)
|
|||
{
|
||||
union acpi_operand_object **operand = &walk_state->operands[0];
|
||||
union acpi_operand_object *return_desc = NULL;
|
||||
acpi_integer index;
|
||||
u64 index;
|
||||
acpi_status status = AE_OK;
|
||||
acpi_size length;
|
||||
|
||||
|
|
@ -584,7 +584,7 @@ acpi_status acpi_ex_opcode_2A_0T_1R(struct acpi_walk_state *walk_state)
|
|||
* Default is FALSE (zero)
|
||||
*/
|
||||
if (logical_result) {
|
||||
return_desc->integer.value = ACPI_INTEGER_MAX;
|
||||
return_desc->integer.value = ACPI_UINT64_MAX;
|
||||
}
|
||||
|
||||
cleanup:
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -148,7 +148,7 @@ acpi_status acpi_ex_opcode_3A_1T_1R(struct acpi_walk_state *walk_state)
|
|||
union acpi_operand_object *return_desc = NULL;
|
||||
char *buffer = NULL;
|
||||
acpi_status status = AE_OK;
|
||||
acpi_integer index;
|
||||
u64 index;
|
||||
acpi_size length;
|
||||
|
||||
ACPI_FUNCTION_TRACE_STR(ex_opcode_3A_1T_1R,
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -218,7 +218,7 @@ acpi_status acpi_ex_opcode_6A_0T_1R(struct acpi_walk_state * walk_state)
|
|||
union acpi_operand_object **operand = &walk_state->operands[0];
|
||||
union acpi_operand_object *return_desc = NULL;
|
||||
acpi_status status = AE_OK;
|
||||
acpi_integer index;
|
||||
u64 index;
|
||||
union acpi_operand_object *this_element;
|
||||
|
||||
ACPI_FUNCTION_TRACE_STR(ex_opcode_6A_0T_1R,
|
||||
|
|
@ -253,9 +253,9 @@ acpi_status acpi_ex_opcode_6A_0T_1R(struct acpi_walk_state * walk_state)
|
|||
}
|
||||
|
||||
/* Create an integer for the return value */
|
||||
/* Default return value is ACPI_INTEGER_MAX if no match found */
|
||||
/* Default return value is ACPI_UINT64_MAX if no match found */
|
||||
|
||||
return_desc = acpi_ut_create_integer_object(ACPI_INTEGER_MAX);
|
||||
return_desc = acpi_ut_create_integer_object(ACPI_UINT64_MAX);
|
||||
if (!return_desc) {
|
||||
status = AE_NO_MEMORY;
|
||||
goto cleanup;
|
||||
|
|
@ -270,7 +270,7 @@ acpi_status acpi_ex_opcode_6A_0T_1R(struct acpi_walk_state * walk_state)
|
|||
*
|
||||
* Upon finding a match, the loop will terminate via "break" at
|
||||
* the bottom. If it terminates "normally", match_value will be
|
||||
* ACPI_INTEGER_MAX (Ones) (its initial value) indicating that no
|
||||
* ACPI_UINT64_MAX (Ones) (its initial value) indicating that no
|
||||
* match was found.
|
||||
*/
|
||||
for (; index < operand[0]->package.count; index++) {
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -70,7 +70,7 @@ acpi_status
|
|||
acpi_ex_system_memory_space_handler(u32 function,
|
||||
acpi_physical_address address,
|
||||
u32 bit_width,
|
||||
acpi_integer * value,
|
||||
u64 *value,
|
||||
void *handler_context, void *region_context)
|
||||
{
|
||||
acpi_status status = AE_OK;
|
||||
|
|
@ -115,8 +115,7 @@ acpi_ex_system_memory_space_handler(u32 function,
|
|||
* Hardware does not support non-aligned data transfers, we must verify
|
||||
* the request.
|
||||
*/
|
||||
(void)acpi_ut_short_divide((acpi_integer) address, length, NULL,
|
||||
&remainder);
|
||||
(void)acpi_ut_short_divide((u64) address, length, NULL, &remainder);
|
||||
if (remainder != 0) {
|
||||
return_ACPI_STATUS(AE_AML_ALIGNMENT);
|
||||
}
|
||||
|
|
@ -128,10 +127,9 @@ acpi_ex_system_memory_space_handler(u32 function,
|
|||
* 2) Address beyond the current mapping?
|
||||
*/
|
||||
if ((address < mem_info->mapped_physical_address) ||
|
||||
(((acpi_integer) address + length) > ((acpi_integer)
|
||||
mem_info->
|
||||
mapped_physical_address +
|
||||
mem_info->mapped_length))) {
|
||||
(((u64) address + length) > ((u64)
|
||||
mem_info->mapped_physical_address +
|
||||
mem_info->mapped_length))) {
|
||||
/*
|
||||
* The request cannot be resolved by the current memory mapping;
|
||||
* Delete the existing mapping and create a new one.
|
||||
|
|
@ -193,8 +191,7 @@ acpi_ex_system_memory_space_handler(u32 function,
|
|||
* access
|
||||
*/
|
||||
logical_addr_ptr = mem_info->mapped_logical_address +
|
||||
((acpi_integer) address -
|
||||
(acpi_integer) mem_info->mapped_physical_address);
|
||||
((u64) address - (u64) mem_info->mapped_physical_address);
|
||||
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO,
|
||||
"System-Memory (width %d) R/W %d Address=%8.8X%8.8X\n",
|
||||
|
|
@ -215,19 +212,19 @@ acpi_ex_system_memory_space_handler(u32 function,
|
|||
*value = 0;
|
||||
switch (bit_width) {
|
||||
case 8:
|
||||
*value = (acpi_integer) ACPI_GET8(logical_addr_ptr);
|
||||
*value = (u64) ACPI_GET8(logical_addr_ptr);
|
||||
break;
|
||||
|
||||
case 16:
|
||||
*value = (acpi_integer) ACPI_GET16(logical_addr_ptr);
|
||||
*value = (u64) ACPI_GET16(logical_addr_ptr);
|
||||
break;
|
||||
|
||||
case 32:
|
||||
*value = (acpi_integer) ACPI_GET32(logical_addr_ptr);
|
||||
*value = (u64) ACPI_GET32(logical_addr_ptr);
|
||||
break;
|
||||
|
||||
case 64:
|
||||
*value = (acpi_integer) ACPI_GET64(logical_addr_ptr);
|
||||
*value = (u64) ACPI_GET64(logical_addr_ptr);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
@ -291,7 +288,7 @@ acpi_status
|
|||
acpi_ex_system_io_space_handler(u32 function,
|
||||
acpi_physical_address address,
|
||||
u32 bit_width,
|
||||
acpi_integer * value,
|
||||
u64 *value,
|
||||
void *handler_context, void *region_context)
|
||||
{
|
||||
acpi_status status = AE_OK;
|
||||
|
|
@ -350,7 +347,7 @@ acpi_status
|
|||
acpi_ex_pci_config_space_handler(u32 function,
|
||||
acpi_physical_address address,
|
||||
u32 bit_width,
|
||||
acpi_integer * value,
|
||||
u64 *value,
|
||||
void *handler_context, void *region_context)
|
||||
{
|
||||
acpi_status status = AE_OK;
|
||||
|
|
@ -425,7 +422,7 @@ acpi_status
|
|||
acpi_ex_cmos_space_handler(u32 function,
|
||||
acpi_physical_address address,
|
||||
u32 bit_width,
|
||||
acpi_integer * value,
|
||||
u64 *value,
|
||||
void *handler_context, void *region_context)
|
||||
{
|
||||
acpi_status status = AE_OK;
|
||||
|
|
@ -457,7 +454,7 @@ acpi_status
|
|||
acpi_ex_pci_bar_space_handler(u32 function,
|
||||
acpi_physical_address address,
|
||||
u32 bit_width,
|
||||
acpi_integer * value,
|
||||
u64 *value,
|
||||
void *handler_context, void *region_context)
|
||||
{
|
||||
acpi_status status = AE_OK;
|
||||
|
|
@ -489,7 +486,7 @@ acpi_status
|
|||
acpi_ex_data_table_space_handler(u32 function,
|
||||
acpi_physical_address address,
|
||||
u32 bit_width,
|
||||
acpi_integer * value,
|
||||
u64 *value,
|
||||
void *handler_context, void *region_context)
|
||||
{
|
||||
ACPI_FUNCTION_TRACE(ex_data_table_space_handler);
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -193,7 +193,7 @@ acpi_status acpi_ex_system_do_stall(u32 how_long)
|
|||
*
|
||||
******************************************************************************/
|
||||
|
||||
acpi_status acpi_ex_system_do_suspend(acpi_integer how_long)
|
||||
acpi_status acpi_ex_system_do_suspend(u64 how_long)
|
||||
{
|
||||
ACPI_FUNCTION_ENTRY();
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -67,7 +67,7 @@
|
|||
ACPI_MODULE_NAME("exutils")
|
||||
|
||||
/* Local prototypes */
|
||||
static u32 acpi_ex_digits_needed(acpi_integer value, u32 base);
|
||||
static u32 acpi_ex_digits_needed(u64 value, u32 base);
|
||||
|
||||
#ifndef ACPI_NO_METHOD_EXECUTION
|
||||
/*******************************************************************************
|
||||
|
|
@ -230,7 +230,7 @@ void acpi_ex_truncate_for32bit_table(union acpi_operand_object *obj_desc)
|
|||
* We are running a method that exists in a 32-bit ACPI table.
|
||||
* Truncate the value to 32 bits by zeroing out the upper 32-bit field
|
||||
*/
|
||||
obj_desc->integer.value &= (acpi_integer) ACPI_UINT32_MAX;
|
||||
obj_desc->integer.value &= (u64) ACPI_UINT32_MAX;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -327,14 +327,14 @@ void acpi_ex_release_global_lock(u32 field_flags)
|
|||
*
|
||||
******************************************************************************/
|
||||
|
||||
static u32 acpi_ex_digits_needed(acpi_integer value, u32 base)
|
||||
static u32 acpi_ex_digits_needed(u64 value, u32 base)
|
||||
{
|
||||
u32 num_digits;
|
||||
acpi_integer current_value;
|
||||
u64 current_value;
|
||||
|
||||
ACPI_FUNCTION_TRACE(ex_digits_needed);
|
||||
|
||||
/* acpi_integer is unsigned, so we don't worry about a '-' prefix */
|
||||
/* u64 is unsigned, so we don't worry about a '-' prefix */
|
||||
|
||||
if (value == 0) {
|
||||
return_UINT32(1);
|
||||
|
|
@ -370,7 +370,7 @@ static u32 acpi_ex_digits_needed(acpi_integer value, u32 base)
|
|||
*
|
||||
******************************************************************************/
|
||||
|
||||
void acpi_ex_eisa_id_to_string(char *out_string, acpi_integer compressed_id)
|
||||
void acpi_ex_eisa_id_to_string(char *out_string, u64 compressed_id)
|
||||
{
|
||||
u32 swapped_id;
|
||||
|
||||
|
|
@ -394,10 +394,10 @@ void acpi_ex_eisa_id_to_string(char *out_string, acpi_integer compressed_id)
|
|||
(char)(0x40 + (((unsigned long)swapped_id >> 26) & 0x1F));
|
||||
out_string[1] = (char)(0x40 + ((swapped_id >> 21) & 0x1F));
|
||||
out_string[2] = (char)(0x40 + ((swapped_id >> 16) & 0x1F));
|
||||
out_string[3] = acpi_ut_hex_to_ascii_char((acpi_integer)swapped_id, 12);
|
||||
out_string[4] = acpi_ut_hex_to_ascii_char((acpi_integer)swapped_id, 8);
|
||||
out_string[5] = acpi_ut_hex_to_ascii_char((acpi_integer)swapped_id, 4);
|
||||
out_string[6] = acpi_ut_hex_to_ascii_char((acpi_integer)swapped_id, 0);
|
||||
out_string[3] = acpi_ut_hex_to_ascii_char((u64) swapped_id, 12);
|
||||
out_string[4] = acpi_ut_hex_to_ascii_char((u64) swapped_id, 8);
|
||||
out_string[5] = acpi_ut_hex_to_ascii_char((u64) swapped_id, 4);
|
||||
out_string[6] = acpi_ut_hex_to_ascii_char((u64) swapped_id, 0);
|
||||
out_string[7] = 0;
|
||||
}
|
||||
|
||||
|
|
@ -418,7 +418,7 @@ void acpi_ex_eisa_id_to_string(char *out_string, acpi_integer compressed_id)
|
|||
*
|
||||
******************************************************************************/
|
||||
|
||||
void acpi_ex_integer_to_string(char *out_string, acpi_integer value)
|
||||
void acpi_ex_integer_to_string(char *out_string, u64 value)
|
||||
{
|
||||
u32 count;
|
||||
u32 digits_needed;
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -224,7 +224,7 @@ acpi_hw_get_gpe_status(struct acpi_gpe_event_info * gpe_event_info,
|
|||
|
||||
status = acpi_hw_read(&in_byte, &gpe_register_info->status_address);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
goto unlock_and_exit;
|
||||
return (status);
|
||||
}
|
||||
|
||||
if (register_bit & in_byte) {
|
||||
|
|
@ -234,9 +234,7 @@ acpi_hw_get_gpe_status(struct acpi_gpe_event_info * gpe_event_info,
|
|||
/* Set return value */
|
||||
|
||||
(*event_status) = local_event_status;
|
||||
|
||||
unlock_and_exit:
|
||||
return (status);
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
******************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -140,7 +140,7 @@ acpi_get_timer_duration(u32 start_ticks, u32 end_ticks, u32 * time_elapsed)
|
|||
{
|
||||
acpi_status status;
|
||||
u32 delta_ticks;
|
||||
acpi_integer quotient;
|
||||
u64 quotient;
|
||||
|
||||
ACPI_FUNCTION_TRACE(acpi_get_timer_duration);
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2009, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
******************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
******************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
******************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
******************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
******************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -231,6 +231,7 @@ acpi_ns_check_predefined_names(struct acpi_namespace_node *node,
|
|||
* Note: Package may have been newly created by call above.
|
||||
*/
|
||||
if ((*return_object_ptr)->common.type == ACPI_TYPE_PACKAGE) {
|
||||
data->parent_package = *return_object_ptr;
|
||||
status = acpi_ns_check_package(data, return_object_ptr);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
goto exit;
|
||||
|
|
@ -710,6 +711,7 @@ acpi_ns_check_package_list(struct acpi_predefined_data *data,
|
|||
for (i = 0; i < count; i++) {
|
||||
sub_package = *elements;
|
||||
sub_elements = sub_package->package.elements;
|
||||
data->parent_package = sub_package;
|
||||
|
||||
/* Each sub-object must be of type Package */
|
||||
|
||||
|
|
@ -721,6 +723,7 @@ acpi_ns_check_package_list(struct acpi_predefined_data *data,
|
|||
|
||||
/* Examine the different types of expected sub-packages */
|
||||
|
||||
data->parent_package = sub_package;
|
||||
switch (package->ret_info.type) {
|
||||
case ACPI_PTYPE2:
|
||||
case ACPI_PTYPE2_PKG_COUNT:
|
||||
|
|
@ -800,7 +803,7 @@ acpi_ns_check_package_list(struct acpi_predefined_data *data,
|
|||
|
||||
/*
|
||||
* First element is the (Integer) count of elements, including
|
||||
* the count field.
|
||||
* the count field (the ACPI name is num_elements)
|
||||
*/
|
||||
status = acpi_ns_check_object_type(data, sub_elements,
|
||||
ACPI_RTYPE_INTEGER,
|
||||
|
|
@ -822,6 +825,16 @@ acpi_ns_check_package_list(struct acpi_predefined_data *data,
|
|||
expected_count = package->ret_info.count1;
|
||||
goto package_too_small;
|
||||
}
|
||||
if (expected_count == 0) {
|
||||
/*
|
||||
* Either the num_entries element was originally zero or it was
|
||||
* a NULL element and repaired to an Integer of value zero.
|
||||
* In either case, repair it by setting num_entries to be the
|
||||
* actual size of the subpackage.
|
||||
*/
|
||||
expected_count = sub_package->package.count;
|
||||
(*sub_elements)->integer.value = expected_count;
|
||||
}
|
||||
|
||||
/* Check the type of each sub-package element */
|
||||
|
||||
|
|
@ -945,10 +958,18 @@ acpi_ns_check_object_type(struct acpi_predefined_data *data,
|
|||
char type_buffer[48]; /* Room for 5 types */
|
||||
|
||||
/*
|
||||
* If we get a NULL return_object here, it is a NULL package element,
|
||||
* and this is always an error.
|
||||
* If we get a NULL return_object here, it is a NULL package element.
|
||||
* Since all extraneous NULL package elements were removed earlier by a
|
||||
* call to acpi_ns_remove_null_elements, this is an unexpected NULL element.
|
||||
* We will attempt to repair it.
|
||||
*/
|
||||
if (!return_object) {
|
||||
status = acpi_ns_repair_null_element(data, expected_btypes,
|
||||
package_index,
|
||||
return_object_ptr);
|
||||
if (ACPI_SUCCESS(status)) {
|
||||
return (AE_OK); /* Repair was successful */
|
||||
}
|
||||
goto type_error_exit;
|
||||
}
|
||||
|
||||
|
|
@ -1000,27 +1021,25 @@ acpi_ns_check_object_type(struct acpi_predefined_data *data,
|
|||
|
||||
/* Is the object one of the expected types? */
|
||||
|
||||
if (!(return_btype & expected_btypes)) {
|
||||
if (return_btype & expected_btypes) {
|
||||
|
||||
/* Type mismatch -- attempt repair of the returned object */
|
||||
/* For reference objects, check that the reference type is correct */
|
||||
|
||||
status = acpi_ns_repair_object(data, expected_btypes,
|
||||
package_index,
|
||||
return_object_ptr);
|
||||
if (ACPI_SUCCESS(status)) {
|
||||
return (AE_OK); /* Repair was successful */
|
||||
if (return_object->common.type == ACPI_TYPE_LOCAL_REFERENCE) {
|
||||
status = acpi_ns_check_reference(data, return_object);
|
||||
}
|
||||
goto type_error_exit;
|
||||
|
||||
return (status);
|
||||
}
|
||||
|
||||
/* For reference objects, check that the reference type is correct */
|
||||
/* Type mismatch -- attempt repair of the returned object */
|
||||
|
||||
if (return_object->common.type == ACPI_TYPE_LOCAL_REFERENCE) {
|
||||
status = acpi_ns_check_reference(data, return_object);
|
||||
status = acpi_ns_repair_object(data, expected_btypes,
|
||||
package_index, return_object_ptr);
|
||||
if (ACPI_SUCCESS(status)) {
|
||||
return (AE_OK); /* Repair was successful */
|
||||
}
|
||||
|
||||
return (status);
|
||||
|
||||
type_error_exit:
|
||||
|
||||
/* Create a string with all expected types for this predefined object */
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2009, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -45,6 +45,7 @@
|
|||
#include "accommon.h"
|
||||
#include "acnamesp.h"
|
||||
#include "acinterp.h"
|
||||
#include "acpredef.h"
|
||||
|
||||
#define _COMPONENT ACPI_NAMESPACE
|
||||
ACPI_MODULE_NAME("nsrepair")
|
||||
|
|
@ -71,6 +72,12 @@ ACPI_MODULE_NAME("nsrepair")
|
|||
* Buffer -> Package of Integers
|
||||
* Package -> Package of one Package
|
||||
*
|
||||
* Additional possible repairs:
|
||||
*
|
||||
* Optional/unnecessary NULL package elements removed
|
||||
* Required package elements that are NULL replaced by Integer/String/Buffer
|
||||
* Incorrect standalone package wrapped with required outer package
|
||||
*
|
||||
******************************************************************************/
|
||||
/* Local prototypes */
|
||||
static acpi_status
|
||||
|
|
@ -504,6 +511,172 @@ acpi_ns_convert_to_package(union acpi_operand_object *original_object,
|
|||
return (AE_OK);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ns_repair_null_element
|
||||
*
|
||||
* PARAMETERS: Data - Pointer to validation data structure
|
||||
* expected_btypes - Object types expected
|
||||
* package_index - Index of object within parent package (if
|
||||
* applicable - ACPI_NOT_PACKAGE_ELEMENT
|
||||
* otherwise)
|
||||
* return_object_ptr - Pointer to the object returned from the
|
||||
* evaluation of a method or object
|
||||
*
|
||||
* RETURN: Status. AE_OK if repair was successful.
|
||||
*
|
||||
* DESCRIPTION: Attempt to repair a NULL element of a returned Package object.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
acpi_status
|
||||
acpi_ns_repair_null_element(struct acpi_predefined_data *data,
|
||||
u32 expected_btypes,
|
||||
u32 package_index,
|
||||
union acpi_operand_object **return_object_ptr)
|
||||
{
|
||||
union acpi_operand_object *return_object = *return_object_ptr;
|
||||
union acpi_operand_object *new_object;
|
||||
|
||||
ACPI_FUNCTION_NAME(ns_repair_null_element);
|
||||
|
||||
/* No repair needed if return object is non-NULL */
|
||||
|
||||
if (return_object) {
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
/*
|
||||
* Attempt to repair a NULL element of a Package object. This applies to
|
||||
* predefined names that return a fixed-length package and each element
|
||||
* is required. It does not apply to variable-length packages where NULL
|
||||
* elements are allowed, especially at the end of the package.
|
||||
*/
|
||||
if (expected_btypes & ACPI_RTYPE_INTEGER) {
|
||||
|
||||
/* Need an Integer - create a zero-value integer */
|
||||
|
||||
new_object = acpi_ut_create_integer_object(0);
|
||||
} else if (expected_btypes & ACPI_RTYPE_STRING) {
|
||||
|
||||
/* Need a String - create a NULL string */
|
||||
|
||||
new_object = acpi_ut_create_string_object(0);
|
||||
} else if (expected_btypes & ACPI_RTYPE_BUFFER) {
|
||||
|
||||
/* Need a Buffer - create a zero-length buffer */
|
||||
|
||||
new_object = acpi_ut_create_buffer_object(0);
|
||||
} else {
|
||||
/* Error for all other expected types */
|
||||
|
||||
return (AE_AML_OPERAND_TYPE);
|
||||
}
|
||||
|
||||
if (!new_object) {
|
||||
return (AE_NO_MEMORY);
|
||||
}
|
||||
|
||||
/* Set the reference count according to the parent Package object */
|
||||
|
||||
new_object->common.reference_count =
|
||||
data->parent_package->common.reference_count;
|
||||
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_REPAIR,
|
||||
"%s: Converted NULL package element to expected %s at index %u\n",
|
||||
data->pathname,
|
||||
acpi_ut_get_object_type_name(new_object),
|
||||
package_index));
|
||||
|
||||
*return_object_ptr = new_object;
|
||||
data->flags |= ACPI_OBJECT_REPAIRED;
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ns_remove_null_elements
|
||||
*
|
||||
* PARAMETERS: Data - Pointer to validation data structure
|
||||
* package_type - An acpi_return_package_types value
|
||||
* obj_desc - A Package object
|
||||
*
|
||||
* RETURN: None.
|
||||
*
|
||||
* DESCRIPTION: Remove all NULL package elements from packages that contain
|
||||
* a variable number of sub-packages. For these types of
|
||||
* packages, NULL elements can be safely removed.
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
void
|
||||
acpi_ns_remove_null_elements(struct acpi_predefined_data *data,
|
||||
u8 package_type,
|
||||
union acpi_operand_object *obj_desc)
|
||||
{
|
||||
union acpi_operand_object **source;
|
||||
union acpi_operand_object **dest;
|
||||
u32 count;
|
||||
u32 new_count;
|
||||
u32 i;
|
||||
|
||||
ACPI_FUNCTION_NAME(ns_remove_null_elements);
|
||||
|
||||
/*
|
||||
* PTYPE1 packages contain no subpackages.
|
||||
* PTYPE2 packages contain a variable number of sub-packages. We can
|
||||
* safely remove all NULL elements from the PTYPE2 packages.
|
||||
*/
|
||||
switch (package_type) {
|
||||
case ACPI_PTYPE1_FIXED:
|
||||
case ACPI_PTYPE1_VAR:
|
||||
case ACPI_PTYPE1_OPTION:
|
||||
return;
|
||||
|
||||
case ACPI_PTYPE2:
|
||||
case ACPI_PTYPE2_COUNT:
|
||||
case ACPI_PTYPE2_PKG_COUNT:
|
||||
case ACPI_PTYPE2_FIXED:
|
||||
case ACPI_PTYPE2_MIN:
|
||||
case ACPI_PTYPE2_REV_FIXED:
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
count = obj_desc->package.count;
|
||||
new_count = count;
|
||||
|
||||
source = obj_desc->package.elements;
|
||||
dest = source;
|
||||
|
||||
/* Examine all elements of the package object, remove nulls */
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
if (!*source) {
|
||||
new_count--;
|
||||
} else {
|
||||
*dest = *source;
|
||||
dest++;
|
||||
}
|
||||
source++;
|
||||
}
|
||||
|
||||
/* Update parent package if any null elements were removed */
|
||||
|
||||
if (new_count < count) {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_REPAIR,
|
||||
"%s: Found and removed %u NULL elements\n",
|
||||
data->pathname, (count - new_count)));
|
||||
|
||||
/* NULL terminate list and update the package count */
|
||||
|
||||
*dest = NULL;
|
||||
obj_desc->package.count = new_count;
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ns_repair_package_list
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2009, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -45,7 +45,6 @@
|
|||
#include <acpi/acpi.h>
|
||||
#include "accommon.h"
|
||||
#include "acnamesp.h"
|
||||
#include "acpredef.h"
|
||||
|
||||
#define _COMPONENT ACPI_NAMESPACE
|
||||
ACPI_MODULE_NAME("nsrepair2")
|
||||
|
|
@ -93,7 +92,7 @@ acpi_ns_check_sorted_list(struct acpi_predefined_data *data,
|
|||
u32 sort_index,
|
||||
u8 sort_direction, char *sort_key_name);
|
||||
|
||||
static acpi_status
|
||||
static void
|
||||
acpi_ns_sort_list(union acpi_operand_object **elements,
|
||||
u32 count, u32 index, u8 sort_direction);
|
||||
|
||||
|
|
@ -443,7 +442,6 @@ acpi_ns_check_sorted_list(struct acpi_predefined_data *data,
|
|||
union acpi_operand_object *obj_desc;
|
||||
u32 i;
|
||||
u32 previous_value;
|
||||
acpi_status status;
|
||||
|
||||
ACPI_FUNCTION_NAME(ns_check_sorted_list);
|
||||
|
||||
|
|
@ -494,19 +492,15 @@ acpi_ns_check_sorted_list(struct acpi_predefined_data *data,
|
|||
|
||||
/*
|
||||
* The list must be sorted in the specified order. If we detect a
|
||||
* discrepancy, issue a warning and sort the entire list
|
||||
* discrepancy, sort the entire list.
|
||||
*/
|
||||
if (((sort_direction == ACPI_SORT_ASCENDING) &&
|
||||
(obj_desc->integer.value < previous_value)) ||
|
||||
((sort_direction == ACPI_SORT_DESCENDING) &&
|
||||
(obj_desc->integer.value > previous_value))) {
|
||||
status =
|
||||
acpi_ns_sort_list(return_object->package.elements,
|
||||
outer_element_count, sort_index,
|
||||
sort_direction);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
return (status);
|
||||
}
|
||||
acpi_ns_sort_list(return_object->package.elements,
|
||||
outer_element_count, sort_index,
|
||||
sort_direction);
|
||||
|
||||
data->flags |= ACPI_OBJECT_REPAIRED;
|
||||
|
||||
|
|
@ -523,89 +517,6 @@ acpi_ns_check_sorted_list(struct acpi_predefined_data *data,
|
|||
return (AE_OK);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ns_remove_null_elements
|
||||
*
|
||||
* PARAMETERS: Data - Pointer to validation data structure
|
||||
* package_type - An acpi_return_package_types value
|
||||
* obj_desc - A Package object
|
||||
*
|
||||
* RETURN: None.
|
||||
*
|
||||
* DESCRIPTION: Remove all NULL package elements from packages that contain
|
||||
* a variable number of sub-packages.
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
void
|
||||
acpi_ns_remove_null_elements(struct acpi_predefined_data *data,
|
||||
u8 package_type,
|
||||
union acpi_operand_object *obj_desc)
|
||||
{
|
||||
union acpi_operand_object **source;
|
||||
union acpi_operand_object **dest;
|
||||
u32 count;
|
||||
u32 new_count;
|
||||
u32 i;
|
||||
|
||||
ACPI_FUNCTION_NAME(ns_remove_null_elements);
|
||||
|
||||
/*
|
||||
* PTYPE1 packages contain no subpackages.
|
||||
* PTYPE2 packages contain a variable number of sub-packages. We can
|
||||
* safely remove all NULL elements from the PTYPE2 packages.
|
||||
*/
|
||||
switch (package_type) {
|
||||
case ACPI_PTYPE1_FIXED:
|
||||
case ACPI_PTYPE1_VAR:
|
||||
case ACPI_PTYPE1_OPTION:
|
||||
return;
|
||||
|
||||
case ACPI_PTYPE2:
|
||||
case ACPI_PTYPE2_COUNT:
|
||||
case ACPI_PTYPE2_PKG_COUNT:
|
||||
case ACPI_PTYPE2_FIXED:
|
||||
case ACPI_PTYPE2_MIN:
|
||||
case ACPI_PTYPE2_REV_FIXED:
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
count = obj_desc->package.count;
|
||||
new_count = count;
|
||||
|
||||
source = obj_desc->package.elements;
|
||||
dest = source;
|
||||
|
||||
/* Examine all elements of the package object, remove nulls */
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
if (!*source) {
|
||||
new_count--;
|
||||
} else {
|
||||
*dest = *source;
|
||||
dest++;
|
||||
}
|
||||
source++;
|
||||
}
|
||||
|
||||
/* Update parent package if any null elements were removed */
|
||||
|
||||
if (new_count < count) {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_REPAIR,
|
||||
"%s: Found and removed %u NULL elements\n",
|
||||
data->pathname, (count - new_count)));
|
||||
|
||||
/* NULL terminate list and update the package count */
|
||||
|
||||
*dest = NULL;
|
||||
obj_desc->package.count = new_count;
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* FUNCTION: acpi_ns_sort_list
|
||||
|
|
@ -615,15 +526,16 @@ acpi_ns_remove_null_elements(struct acpi_predefined_data *data,
|
|||
* Index - Sort by which package element
|
||||
* sort_direction - Ascending or Descending sort
|
||||
*
|
||||
* RETURN: Status
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: Sort the objects that are in a package element list.
|
||||
*
|
||||
* NOTE: Assumes that all NULL elements have been removed from the package.
|
||||
* NOTE: Assumes that all NULL elements have been removed from the package,
|
||||
* and that all elements have been verified to be of type Integer.
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
static acpi_status
|
||||
static void
|
||||
acpi_ns_sort_list(union acpi_operand_object **elements,
|
||||
u32 count, u32 index, u8 sort_direction)
|
||||
{
|
||||
|
|
@ -652,6 +564,4 @@ acpi_ns_sort_list(union acpi_operand_object **elements,
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (AE_OK);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
******************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
******************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -562,25 +562,20 @@ acpi_ns_get_device_callback(acpi_handle obj_handle,
|
|||
return (AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
/* Run _STA to determine if device is present */
|
||||
|
||||
status = acpi_ut_execute_STA(node, &flags);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
return (AE_CTRL_DEPTH);
|
||||
}
|
||||
|
||||
if (!(flags & ACPI_STA_DEVICE_PRESENT) &&
|
||||
!(flags & ACPI_STA_DEVICE_FUNCTIONING)) {
|
||||
/*
|
||||
* Don't examine the children of the device only when the
|
||||
* device is neither present nor functional. See ACPI spec,
|
||||
* description of _STA for more information.
|
||||
*/
|
||||
return (AE_CTRL_DEPTH);
|
||||
}
|
||||
|
||||
/* Filter based on device HID & CID */
|
||||
|
||||
/*
|
||||
* First, filter based on the device HID and CID.
|
||||
*
|
||||
* 01/2010: For this case where a specific HID is requested, we don't
|
||||
* want to run _STA until we have an actual HID match. Thus, we will
|
||||
* not unnecessarily execute _STA on devices for which the caller
|
||||
* doesn't care about. Previously, _STA was executed unconditionally
|
||||
* on all devices found here.
|
||||
*
|
||||
* A side-effect of this change is that now we will continue to search
|
||||
* for a matching HID even under device trees where the parent device
|
||||
* would have returned a _STA that indicates it is not present or
|
||||
* not functioning (thus aborting the search on that branch).
|
||||
*/
|
||||
if (info->hid != NULL) {
|
||||
status = acpi_ut_execute_HID(node, &hid);
|
||||
if (status == AE_NOT_FOUND) {
|
||||
|
|
@ -620,6 +615,25 @@ acpi_ns_get_device_callback(acpi_handle obj_handle,
|
|||
}
|
||||
}
|
||||
|
||||
/* Run _STA to determine if device is present */
|
||||
|
||||
status = acpi_ut_execute_STA(node, &flags);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
return (AE_CTRL_DEPTH);
|
||||
}
|
||||
|
||||
if (!(flags & ACPI_STA_DEVICE_PRESENT) &&
|
||||
!(flags & ACPI_STA_DEVICE_FUNCTIONING)) {
|
||||
/*
|
||||
* Don't examine the children of the device only when the
|
||||
* device is neither present nor functional. See ACPI spec,
|
||||
* description of _STA for more information.
|
||||
*/
|
||||
return (AE_CTRL_DEPTH);
|
||||
}
|
||||
|
||||
/* We have a valid device, invoke the user function */
|
||||
|
||||
status = info->user_function(obj_handle, nesting_level, info->context,
|
||||
return_value);
|
||||
return (status);
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
******************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -403,7 +403,7 @@ acpi_ps_get_next_simple_arg(struct acpi_parse_state *parser_state,
|
|||
/* Get 1 byte from the AML stream */
|
||||
|
||||
opcode = AML_BYTE_OP;
|
||||
arg->common.value.integer = (acpi_integer) * aml;
|
||||
arg->common.value.integer = (u64) *aml;
|
||||
length = 1;
|
||||
break;
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* Copyright (C) 2000 - 2010, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue