Merge tag 'acpi-5.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
Pull ACPI updates from Rafael Wysocki: "These rearrange the ACPI documentation by converting it to the .rst format and splitting it into clear categories (admin guide, driver API, firmware guide), switch over multiple users of a problematic library function to a new better one, update the ACPICA code in the kernel to a new upstream release, fix a few issues, improve power device management diagnostics and do some cleanups. Specifics: - Convert the ACPI documentation in the kernel source tree to the .rst format and split it into the admin guide, driver API and firmware guide parts (Changbin Du). - Add a PRP0001 usage example to the ACPI documentation (Thomas Preston). - Switch over the users of the acpi_dev_get_first_match_name() library function which turned out to be problematic to a new, better one called acpi_dev_get_first_match_dev() (Andy Shevchenko, YueHaibing). - Update the ACPICA code in the kernel to upstream release 20190405 including: * Null pointer dereference check in acpi_ns_delete_node() (Erik Schmauss). * Multiple macro and function name changes (Bob Moore). * Predefined operation region name fix (Erik Schmauss). - Fix hibernation issue on systems using the Baytrail and Cherrytrail Intel SoCs introduced during the 4.20 development cycle (Hans de Goede). - Add Sony VPCEH3U1E to the backlight quirk list (Zhang Rui). - Fix button handling during system resume (Zhang Rui). - Add a device PM diagnostic message (Rafael Wysocki). - Clean up the code, comments and white space in multiple places (Bjorn Helgaas, Gustavo Silva, Kefeng Wang)" * tag 'acpi-5.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (53 commits) Documentation: ACPI: move video_extension.txt to firmware-guide/acpi and convert to reST Documentation: ACPI: move ssdt-overlays.txt to admin-guide/acpi and convert to reST Documentation: ACPI: move lpit.txt to firmware-guide/acpi and convert to reST Documentation: ACPI: move cppc_sysfs.txt to admin-guide/acpi and convert to reST Documentation: ACPI: move apei/einj.txt to firmware-guide/acpi and convert to reST Documentation: ACPI: move apei/output_format.txt to firmware-guide/acpi and convert to reST Documentation: ACPI: move aml-debugger.txt to firmware-guide/acpi and convert to reST Documentation: ACPI: move method-tracing.txt to firmware-guide/acpi and convert to rsST Documentation: ACPI: move debug.txt to firmware-guide/acpi and convert to reST Documentation: ACPI: move dsd/data-node-references.txt to firmware-guide/acpi and convert to reST Documentation: ACPI: move dsd/graph.txt to firmware-guide/acpi and convert to reST Documentation: ACPI: move acpi-lid.txt to firmware-guide/acpi and convert to reST Documentation: ACPI: move i2c-muxes.txt to firmware-guide/acpi and convert to reST Documentation: ACPI: move dsdt-override.txt to admin-guide/acpi and convert to reST Documentation: ACPI: move initrd_table_override.txt to admin-guide/acpi and convert to reST Documentation: ACPI: move method-customizing.txt to firmware-guide/acpi and convert to reST Documentation: ACPI: move gpio-properties.txt to firmware-guide/acpi and convert to reST Documentation: ACPI: move DSD-properties-rules.txt to firmware-guide/acpi and covert to reST Documentation: ACPI: move scan_handlers.txt to driver-api/acpi and convert to reST Documentation: ACPI: move linuxized-acpica.txt to driver-api/acpi and convert to reST ...
This commit is contained in:
@ -109,7 +109,7 @@ static ssize_t acpi_table_signature_show(struct config_item *cfg, char *str)
|
||||
if (!h)
|
||||
return -EINVAL;
|
||||
|
||||
return sprintf(str, "%.*s\n", ACPI_NAME_SIZE, h->signature);
|
||||
return sprintf(str, "%.*s\n", ACPI_NAMESEG_SIZE, h->signature);
|
||||
}
|
||||
|
||||
static ssize_t acpi_table_length_show(struct config_item *cfg, char *str)
|
||||
@ -170,7 +170,7 @@ static ssize_t acpi_table_asl_compiler_id_show(struct config_item *cfg,
|
||||
if (!h)
|
||||
return -EINVAL;
|
||||
|
||||
return sprintf(str, "%.*s\n", ACPI_NAME_SIZE, h->asl_compiler_id);
|
||||
return sprintf(str, "%.*s\n", ACPI_NAMESEG_SIZE, h->asl_compiler_id);
|
||||
}
|
||||
|
||||
static ssize_t acpi_table_asl_compiler_revision_show(struct config_item *cfg,
|
||||
|
@ -390,7 +390,7 @@ again:
|
||||
return size > 0 ? size : ret;
|
||||
}
|
||||
|
||||
static int acpi_aml_thread(void *unsed)
|
||||
static int acpi_aml_thread(void *unused)
|
||||
{
|
||||
acpi_osd_exec_callback function = NULL;
|
||||
void *context;
|
||||
|
@ -22,7 +22,7 @@
|
||||
* LPAT conversion table
|
||||
*
|
||||
* @lpat_table: the temperature_raw mapping table structure
|
||||
* @raw: the raw value, used as a key to get the temerature from the
|
||||
* @raw: the raw value, used as a key to get the temperature from the
|
||||
* above mapping table
|
||||
*
|
||||
* A positive converted temperature value will be returned on success,
|
||||
|
@ -1142,8 +1142,8 @@ static struct dev_pm_domain acpi_lpss_pm_domain = {
|
||||
.thaw_noirq = acpi_subsys_thaw_noirq,
|
||||
.poweroff = acpi_subsys_suspend,
|
||||
.poweroff_late = acpi_lpss_suspend_late,
|
||||
.poweroff_noirq = acpi_subsys_suspend_noirq,
|
||||
.restore_noirq = acpi_subsys_resume_noirq,
|
||||
.poweroff_noirq = acpi_lpss_suspend_noirq,
|
||||
.restore_noirq = acpi_lpss_resume_noirq,
|
||||
.restore_early = acpi_lpss_resume_early,
|
||||
#endif
|
||||
.runtime_suspend = acpi_lpss_runtime_suspend,
|
||||
|
@ -293,7 +293,7 @@ acpi_status (*acpi_internal_method) (struct acpi_walk_state * walk_state);
|
||||
* expected_return_btypes - Allowed type(s) for the return value
|
||||
*/
|
||||
struct acpi_name_info {
|
||||
char name[ACPI_NAME_SIZE];
|
||||
char name[ACPI_NAMESEG_SIZE];
|
||||
u16 argument_list;
|
||||
u8 expected_btypes;
|
||||
};
|
||||
@ -370,7 +370,7 @@ typedef acpi_status (*acpi_object_converter) (struct acpi_namespace_node *
|
||||
converted_object);
|
||||
|
||||
struct acpi_simple_repair_info {
|
||||
char name[ACPI_NAME_SIZE];
|
||||
char name[ACPI_NAMESEG_SIZE];
|
||||
u32 unexpected_btypes;
|
||||
u32 package_index;
|
||||
acpi_object_converter object_converter;
|
||||
|
@ -453,7 +453,7 @@ acpi_db_execute(char *name, char **args, acpi_object_type *types, u32 flags)
|
||||
|
||||
/* Dump a _PLD buffer if present */
|
||||
|
||||
if (ACPI_COMPARE_NAME
|
||||
if (ACPI_COMPARE_NAMESEG
|
||||
((ACPI_CAST_PTR
|
||||
(struct acpi_namespace_node,
|
||||
acpi_gbl_db_method_info.method)->name.ascii),
|
||||
|
@ -354,7 +354,7 @@ acpi_status acpi_db_find_name_in_namespace(char *name_arg)
|
||||
char acpi_name[5] = "____";
|
||||
char *acpi_name_ptr = acpi_name;
|
||||
|
||||
if (strlen(name_arg) > ACPI_NAME_SIZE) {
|
||||
if (strlen(name_arg) > ACPI_NAMESEG_SIZE) {
|
||||
acpi_os_printf("Name must be no longer than 4 characters\n");
|
||||
return (AE_OK);
|
||||
}
|
||||
|
@ -200,7 +200,7 @@ acpi_ds_initialize_objects(u32 table_index,
|
||||
|
||||
/* DSDT is always the first AML table */
|
||||
|
||||
if (ACPI_COMPARE_NAME(table->signature, ACPI_SIG_DSDT)) {
|
||||
if (ACPI_COMPARE_NAMESEG(table->signature, ACPI_SIG_DSDT)) {
|
||||
ACPI_DEBUG_PRINT_RAW((ACPI_DB_INIT,
|
||||
"\nInitializing Namespace objects:\n"));
|
||||
}
|
||||
|
@ -292,7 +292,7 @@ acpi_ev_match_gpe_method(acpi_handle obj_handle,
|
||||
acpi_status status;
|
||||
u32 gpe_number;
|
||||
u8 temp_gpe_number;
|
||||
char name[ACPI_NAME_SIZE + 1];
|
||||
char name[ACPI_NAMESEG_SIZE + 1];
|
||||
u8 type;
|
||||
|
||||
ACPI_FUNCTION_TRACE(ev_match_gpe_method);
|
||||
@ -310,7 +310,7 @@ acpi_ev_match_gpe_method(acpi_handle obj_handle,
|
||||
* 1) Extract the method name and null terminate it
|
||||
*/
|
||||
ACPI_MOVE_32_TO_32(name, &method_node->name.integer);
|
||||
name[ACPI_NAME_SIZE] = 0;
|
||||
name[ACPI_NAMESEG_SIZE] = 0;
|
||||
|
||||
/* 2) Name must begin with an underscore */
|
||||
|
||||
|
@ -53,10 +53,10 @@ static char *acpi_ex_allocate_name_string(u32 prefix_count, u32 num_name_segs)
|
||||
|
||||
/* Special case for root */
|
||||
|
||||
size_needed = 1 + (ACPI_NAME_SIZE * num_name_segs) + 2 + 1;
|
||||
size_needed = 1 + (ACPI_NAMESEG_SIZE * num_name_segs) + 2 + 1;
|
||||
} else {
|
||||
size_needed =
|
||||
prefix_count + (ACPI_NAME_SIZE * num_name_segs) + 2 + 1;
|
||||
prefix_count + (ACPI_NAMESEG_SIZE * num_name_segs) + 2 + 1;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -141,7 +141,7 @@ static acpi_status acpi_ex_name_segment(u8 ** in_aml_address, char *name_string)
|
||||
}
|
||||
|
||||
for (index = 0;
|
||||
(index < ACPI_NAME_SIZE)
|
||||
(index < ACPI_NAMESEG_SIZE)
|
||||
&& (acpi_ut_valid_name_char(*aml_address, 0)); index++) {
|
||||
char_buf[index] = *aml_address++;
|
||||
}
|
||||
|
@ -683,7 +683,7 @@ acpi_ns_lookup(union acpi_generic_state *scope_info,
|
||||
|
||||
/* Point to next name segment and make this node current */
|
||||
|
||||
path += ACPI_NAME_SIZE;
|
||||
path += ACPI_NAMESEG_SIZE;
|
||||
current_node = this_node;
|
||||
}
|
||||
|
||||
|
@ -74,6 +74,10 @@ void acpi_ns_delete_node(struct acpi_namespace_node *node)
|
||||
|
||||
ACPI_FUNCTION_NAME(ns_delete_node);
|
||||
|
||||
if (!node) {
|
||||
return_VOID;
|
||||
}
|
||||
|
||||
/* Detach an object if there is one */
|
||||
|
||||
acpi_ns_detach_object(node);
|
||||
|
@ -70,7 +70,7 @@ void acpi_ns_print_pathname(u32 num_segments, const char *pathname)
|
||||
acpi_os_printf("?");
|
||||
}
|
||||
|
||||
pathname += ACPI_NAME_SIZE;
|
||||
pathname += ACPI_NAMESEG_SIZE;
|
||||
num_segments--;
|
||||
if (num_segments) {
|
||||
acpi_os_printf(".");
|
||||
|
@ -478,7 +478,7 @@ acpi_ns_find_ini_methods(acpi_handle obj_handle,
|
||||
|
||||
/* We are only looking for methods named _INI */
|
||||
|
||||
if (!ACPI_COMPARE_NAME(node->name.ascii, METHOD_NAME__INI)) {
|
||||
if (!ACPI_COMPARE_NAMESEG(node->name.ascii, METHOD_NAME__INI)) {
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
@ -641,7 +641,7 @@ acpi_ns_init_one_device(acpi_handle obj_handle,
|
||||
* Note: We know there is an _INI within this subtree, but it may not be
|
||||
* under this particular device, it may be lower in the branch.
|
||||
*/
|
||||
if (!ACPI_COMPARE_NAME(device_node->name.ascii, "_SB_") ||
|
||||
if (!ACPI_COMPARE_NAMESEG(device_node->name.ascii, "_SB_") ||
|
||||
device_node->parent != acpi_gbl_root_node) {
|
||||
ACPI_DEBUG_EXEC(acpi_ut_display_init_pathname
|
||||
(ACPI_TYPE_METHOD, device_node,
|
||||
|
@ -108,8 +108,8 @@ acpi_ns_handle_to_name(acpi_handle target_handle, struct acpi_buffer *buffer)
|
||||
/* Just copy the ACPI name from the Node and zero terminate it */
|
||||
|
||||
node_name = acpi_ut_get_node_name(node);
|
||||
ACPI_MOVE_NAME(buffer->pointer, node_name);
|
||||
((char *)buffer->pointer)[ACPI_NAME_SIZE] = 0;
|
||||
ACPI_COPY_NAMESEG(buffer->pointer, node_name);
|
||||
((char *)buffer->pointer)[ACPI_NAMESEG_SIZE] = 0;
|
||||
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_EXEC, "%4.4s\n", (char *)buffer->pointer));
|
||||
return_ACPI_STATUS(AE_OK);
|
||||
@ -198,7 +198,7 @@ acpi_ns_build_normalized_path(struct acpi_namespace_node *node,
|
||||
char *full_path, u32 path_size, u8 no_trailing)
|
||||
{
|
||||
u32 length = 0, i;
|
||||
char name[ACPI_NAME_SIZE];
|
||||
char name[ACPI_NAMESEG_SIZE];
|
||||
u8 do_no_trailing;
|
||||
char c, *left, *right;
|
||||
struct acpi_namespace_node *next_node;
|
||||
@ -446,7 +446,7 @@ static void acpi_ns_normalize_pathname(char *original_path)
|
||||
|
||||
/* Do one nameseg at a time */
|
||||
|
||||
for (i = 0; (i < ACPI_NAME_SIZE) && *input_path; i++) {
|
||||
for (i = 0; (i < ACPI_NAMESEG_SIZE) && *input_path; i++) {
|
||||
if ((i == 0) || (*input_path != '_')) { /* First char is allowed to be underscore */
|
||||
*new_path = *input_path;
|
||||
new_path++;
|
||||
|
@ -203,7 +203,7 @@ acpi_ns_one_complete_parse(u32 pass_number,
|
||||
|
||||
/* Found OSDT table, enable the namespace override feature */
|
||||
|
||||
if (ACPI_COMPARE_NAME(table->signature, ACPI_SIG_OSDT) &&
|
||||
if (ACPI_COMPARE_NAMESEG(table->signature, ACPI_SIG_OSDT) &&
|
||||
pass_number == ACPI_IMODE_LOAD_PASS1) {
|
||||
walk_state->namespace_override = TRUE;
|
||||
}
|
||||
|
@ -316,7 +316,7 @@ static const struct acpi_simple_repair_info *acpi_ns_match_simple_repair(struct
|
||||
|
||||
this_name = acpi_object_repair_info;
|
||||
while (this_name->object_converter) {
|
||||
if (ACPI_COMPARE_NAME(node->name.ascii, this_name->name)) {
|
||||
if (ACPI_COMPARE_NAMESEG(node->name.ascii, this_name->name)) {
|
||||
|
||||
/* Check if we can actually repair this name/type combination */
|
||||
|
||||
|
@ -25,7 +25,7 @@ acpi_status (*acpi_repair_function) (struct acpi_evaluate_info * info,
|
||||
return_object_ptr);
|
||||
|
||||
typedef struct acpi_repair_info {
|
||||
char name[ACPI_NAME_SIZE];
|
||||
char name[ACPI_NAMESEG_SIZE];
|
||||
acpi_repair_function repair_function;
|
||||
|
||||
} acpi_repair_info;
|
||||
@ -188,7 +188,7 @@ static const struct acpi_repair_info *acpi_ns_match_complex_repair(struct
|
||||
|
||||
this_name = acpi_ns_repairable_names;
|
||||
while (this_name->repair_function) {
|
||||
if (ACPI_COMPARE_NAME(node->name.ascii, this_name->name)) {
|
||||
if (ACPI_COMPARE_NAMESEG(node->name.ascii, this_name->name)) {
|
||||
return (this_name);
|
||||
}
|
||||
|
||||
|
@ -178,7 +178,7 @@ void acpi_ns_get_internal_name_length(struct acpi_namestring_info *info)
|
||||
}
|
||||
}
|
||||
|
||||
info->length = (ACPI_NAME_SIZE * info->num_segments) +
|
||||
info->length = (ACPI_NAMESEG_SIZE * info->num_segments) +
|
||||
4 + info->num_carats;
|
||||
|
||||
info->next_external_char = next_external_char;
|
||||
@ -249,7 +249,7 @@ acpi_status acpi_ns_build_internal_name(struct acpi_namestring_info *info)
|
||||
/* Build the name (minus path separators) */
|
||||
|
||||
for (; num_segments; num_segments--) {
|
||||
for (i = 0; i < ACPI_NAME_SIZE; i++) {
|
||||
for (i = 0; i < ACPI_NAMESEG_SIZE; i++) {
|
||||
if (ACPI_IS_PATH_SEPARATOR(*external_name) ||
|
||||
(*external_name == 0)) {
|
||||
|
||||
@ -274,7 +274,7 @@ acpi_status acpi_ns_build_internal_name(struct acpi_namestring_info *info)
|
||||
/* Move on the next segment */
|
||||
|
||||
external_name++;
|
||||
result += ACPI_NAME_SIZE;
|
||||
result += ACPI_NAMESEG_SIZE;
|
||||
}
|
||||
|
||||
/* Terminate the string */
|
||||
@ -489,12 +489,12 @@ acpi_ns_externalize_name(u32 internal_name_length,
|
||||
|
||||
/* Copy and validate the 4-char name segment */
|
||||
|
||||
ACPI_MOVE_NAME(&(*converted_name)[j],
|
||||
&internal_name[names_index]);
|
||||
ACPI_COPY_NAMESEG(&(*converted_name)[j],
|
||||
&internal_name[names_index]);
|
||||
acpi_ut_repair_name(&(*converted_name)[j]);
|
||||
|
||||
j += ACPI_NAME_SIZE;
|
||||
names_index += ACPI_NAME_SIZE;
|
||||
j += ACPI_NAMESEG_SIZE;
|
||||
names_index += ACPI_NAMESEG_SIZE;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -495,8 +495,8 @@ acpi_status acpi_install_method(u8 *buffer)
|
||||
|
||||
/* Table must be a DSDT or SSDT */
|
||||
|
||||
if (!ACPI_COMPARE_NAME(table->signature, ACPI_SIG_DSDT) &&
|
||||
!ACPI_COMPARE_NAME(table->signature, ACPI_SIG_SSDT)) {
|
||||
if (!ACPI_COMPARE_NAMESEG(table->signature, ACPI_SIG_DSDT) &&
|
||||
!ACPI_COMPARE_NAMESEG(table->signature, ACPI_SIG_SSDT)) {
|
||||
return (AE_BAD_HEADER);
|
||||
}
|
||||
|
||||
|
@ -150,21 +150,21 @@ char *acpi_ps_get_next_namestring(struct acpi_parse_state *parser_state)
|
||||
|
||||
/* Two name segments */
|
||||
|
||||
end += 1 + (2 * ACPI_NAME_SIZE);
|
||||
end += 1 + (2 * ACPI_NAMESEG_SIZE);
|
||||
break;
|
||||
|
||||
case AML_MULTI_NAME_PREFIX:
|
||||
|
||||
/* Multiple name segments, 4 chars each, count in next byte */
|
||||
|
||||
end += 2 + (*(end + 1) * ACPI_NAME_SIZE);
|
||||
end += 2 + (*(end + 1) * ACPI_NAMESEG_SIZE);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
/* Single name segment */
|
||||
|
||||
end += ACPI_NAME_SIZE;
|
||||
end += ACPI_NAMESEG_SIZE;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -522,7 +522,7 @@ static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_state
|
||||
|
||||
ACPI_MOVE_32_TO_32(&name, parser_state->aml);
|
||||
acpi_ps_set_name(field, name);
|
||||
parser_state->aml += ACPI_NAME_SIZE;
|
||||
parser_state->aml += ACPI_NAMESEG_SIZE;
|
||||
|
||||
ASL_CV_CAPTURE_COMMENTS_ONLY(parser_state);
|
||||
|
||||
|
@ -603,10 +603,10 @@ acpi_walk_resources(acpi_handle device_handle,
|
||||
/* Parameter validation */
|
||||
|
||||
if (!device_handle || !user_function || !name ||
|
||||
(!ACPI_COMPARE_NAME(name, METHOD_NAME__CRS) &&
|
||||
!ACPI_COMPARE_NAME(name, METHOD_NAME__PRS) &&
|
||||
!ACPI_COMPARE_NAME(name, METHOD_NAME__AEI) &&
|
||||
!ACPI_COMPARE_NAME(name, METHOD_NAME__DMA))) {
|
||||
(!ACPI_COMPARE_NAMESEG(name, METHOD_NAME__CRS) &&
|
||||
!ACPI_COMPARE_NAMESEG(name, METHOD_NAME__PRS) &&
|
||||
!ACPI_COMPARE_NAMESEG(name, METHOD_NAME__AEI) &&
|
||||
!ACPI_COMPARE_NAMESEG(name, METHOD_NAME__DMA))) {
|
||||
return_ACPI_STATUS(AE_BAD_PARAMETER);
|
||||
}
|
||||
|
||||
|
@ -480,7 +480,8 @@ acpi_tb_verify_temp_table(struct acpi_table_desc *table_desc,
|
||||
|
||||
/* If a particular signature is expected (DSDT/FACS), it must match */
|
||||
|
||||
if (signature && !ACPI_COMPARE_NAME(&table_desc->signature, signature)) {
|
||||
if (signature &&
|
||||
!ACPI_COMPARE_NAMESEG(&table_desc->signature, signature)) {
|
||||
ACPI_BIOS_ERROR((AE_INFO,
|
||||
"Invalid signature 0x%X for ACPI table, expected [%s]",
|
||||
table_desc->signature.integer, signature));
|
||||
|
@ -56,7 +56,7 @@ acpi_tb_find_table(char *signature,
|
||||
/* Normalize the input strings */
|
||||
|
||||
memset(&header, 0, sizeof(struct acpi_table_header));
|
||||
ACPI_MOVE_NAME(header.signature, signature);
|
||||
ACPI_COPY_NAMESEG(header.signature, signature);
|
||||
strncpy(header.oem_id, oem_id, ACPI_OEM_ID_SIZE);
|
||||
strncpy(header.oem_table_id, oem_table_id, ACPI_OEM_TABLE_ID_SIZE);
|
||||
|
||||
@ -65,7 +65,7 @@ acpi_tb_find_table(char *signature,
|
||||
(void)acpi_ut_acquire_mutex(ACPI_MTX_TABLES);
|
||||
for (i = 0; i < acpi_gbl_root_table_list.current_table_count; ++i) {
|
||||
if (memcmp(&(acpi_gbl_root_table_list.tables[i].signature),
|
||||
header.signature, ACPI_NAME_SIZE)) {
|
||||
header.signature, ACPI_NAMESEG_SIZE)) {
|
||||
|
||||
/* Not the requested table */
|
||||
|
||||
@ -94,14 +94,14 @@ acpi_tb_find_table(char *signature,
|
||||
|
||||
if (!memcmp
|
||||
(acpi_gbl_root_table_list.tables[i].pointer->signature,
|
||||
header.signature, ACPI_NAME_SIZE) && (!oem_id[0]
|
||||
||
|
||||
!memcmp
|
||||
(acpi_gbl_root_table_list.
|
||||
tables[i].pointer->
|
||||
oem_id,
|
||||
header.oem_id,
|
||||
ACPI_OEM_ID_SIZE))
|
||||
header.signature, ACPI_NAMESEG_SIZE) && (!oem_id[0]
|
||||
||
|
||||
!memcmp
|
||||
(acpi_gbl_root_table_list.
|
||||
tables[i].
|
||||
pointer->oem_id,
|
||||
header.oem_id,
|
||||
ACPI_OEM_ID_SIZE))
|
||||
&& (!oem_table_id[0]
|
||||
|| !memcmp(acpi_gbl_root_table_list.tables[i].pointer->
|
||||
oem_table_id, header.oem_table_id,
|
||||
|
@ -120,7 +120,7 @@ acpi_tb_install_standard_table(acpi_physical_address address,
|
||||
*/
|
||||
if (!reload &&
|
||||
acpi_gbl_disable_ssdt_table_install &&
|
||||
ACPI_COMPARE_NAME(&new_table_desc.signature, ACPI_SIG_SSDT)) {
|
||||
ACPI_COMPARE_NAMESEG(&new_table_desc.signature, ACPI_SIG_SSDT)) {
|
||||
ACPI_INFO(("Ignoring installation of %4.4s at %8.8X%8.8X",
|
||||
new_table_desc.signature.ascii,
|
||||
ACPI_FORMAT_UINT64(address)));
|
||||
|
@ -69,10 +69,10 @@ acpi_tb_cleanup_table_header(struct acpi_table_header *out_header,
|
||||
|
||||
memcpy(out_header, header, sizeof(struct acpi_table_header));
|
||||
|
||||
acpi_tb_fix_string(out_header->signature, ACPI_NAME_SIZE);
|
||||
acpi_tb_fix_string(out_header->signature, ACPI_NAMESEG_SIZE);
|
||||
acpi_tb_fix_string(out_header->oem_id, ACPI_OEM_ID_SIZE);
|
||||
acpi_tb_fix_string(out_header->oem_table_id, ACPI_OEM_TABLE_ID_SIZE);
|
||||
acpi_tb_fix_string(out_header->asl_compiler_id, ACPI_NAME_SIZE);
|
||||
acpi_tb_fix_string(out_header->asl_compiler_id, ACPI_NAMESEG_SIZE);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
@ -94,7 +94,7 @@ acpi_tb_print_table_header(acpi_physical_address address,
|
||||
{
|
||||
struct acpi_table_header local_header;
|
||||
|
||||
if (ACPI_COMPARE_NAME(header->signature, ACPI_SIG_FACS)) {
|
||||
if (ACPI_COMPARE_NAMESEG(header->signature, ACPI_SIG_FACS)) {
|
||||
|
||||
/* FACS only has signature and length fields */
|
||||
|
||||
@ -158,8 +158,8 @@ acpi_status acpi_tb_verify_checksum(struct acpi_table_header *table, u32 length)
|
||||
* They are the odd tables, have no standard ACPI header and no checksum
|
||||
*/
|
||||
|
||||
if (ACPI_COMPARE_NAME(table->signature, ACPI_SIG_S3PT) ||
|
||||
ACPI_COMPARE_NAME(table->signature, ACPI_SIG_FACS)) {
|
||||
if (ACPI_COMPARE_NAMESEG(table->signature, ACPI_SIG_S3PT) ||
|
||||
ACPI_COMPARE_NAMESEG(table->signature, ACPI_SIG_FACS)) {
|
||||
return (AE_OK);
|
||||
}
|
||||
|
||||
|
@ -332,9 +332,9 @@ acpi_tb_parse_root_table(acpi_physical_address rsdp_address)
|
||||
&table_index);
|
||||
|
||||
if (ACPI_SUCCESS(status) &&
|
||||
ACPI_COMPARE_NAME(&acpi_gbl_root_table_list.
|
||||
tables[table_index].signature,
|
||||
ACPI_SIG_FADT)) {
|
||||
ACPI_COMPARE_NAMESEG(&acpi_gbl_root_table_list.
|
||||
tables[table_index].signature,
|
||||
ACPI_SIG_FADT)) {
|
||||
acpi_gbl_fadt_index = table_index;
|
||||
acpi_tb_parse_fadt();
|
||||
}
|
||||
|
@ -230,7 +230,7 @@ acpi_get_table_header(char *signature,
|
||||
|
||||
for (i = 0, j = 0; i < acpi_gbl_root_table_list.current_table_count;
|
||||
i++) {
|
||||
if (!ACPI_COMPARE_NAME
|
||||
if (!ACPI_COMPARE_NAMESEG
|
||||
(&(acpi_gbl_root_table_list.tables[i].signature),
|
||||
signature)) {
|
||||
continue;
|
||||
@ -323,7 +323,7 @@ acpi_get_table(char *signature,
|
||||
i++) {
|
||||
table_desc = &acpi_gbl_root_table_list.tables[i];
|
||||
|
||||
if (!ACPI_COMPARE_NAME(&table_desc->signature, signature)) {
|
||||
if (!ACPI_COMPARE_NAMESEG(&table_desc->signature, signature)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -118,7 +118,7 @@ acpi_status acpi_tb_load_namespace(void)
|
||||
table = &acpi_gbl_root_table_list.tables[acpi_gbl_dsdt_index];
|
||||
|
||||
if (!acpi_gbl_root_table_list.current_table_count ||
|
||||
!ACPI_COMPARE_NAME(table->signature.ascii, ACPI_SIG_DSDT) ||
|
||||
!ACPI_COMPARE_NAMESEG(table->signature.ascii, ACPI_SIG_DSDT) ||
|
||||
ACPI_FAILURE(acpi_tb_validate_table(table))) {
|
||||
status = AE_NO_ACPI_TABLES;
|
||||
goto unlock_and_exit;
|
||||
@ -170,11 +170,12 @@ acpi_status acpi_tb_load_namespace(void)
|
||||
table = &acpi_gbl_root_table_list.tables[i];
|
||||
|
||||
if (!table->address ||
|
||||
(!ACPI_COMPARE_NAME(table->signature.ascii, ACPI_SIG_SSDT)
|
||||
&& !ACPI_COMPARE_NAME(table->signature.ascii,
|
||||
ACPI_SIG_PSDT)
|
||||
&& !ACPI_COMPARE_NAME(table->signature.ascii,
|
||||
ACPI_SIG_OSDT))
|
||||
(!ACPI_COMPARE_NAMESEG
|
||||
(table->signature.ascii, ACPI_SIG_SSDT)
|
||||
&& !ACPI_COMPARE_NAMESEG(table->signature.ascii,
|
||||
ACPI_SIG_PSDT)
|
||||
&& !ACPI_COMPARE_NAMESEG(table->signature.ascii,
|
||||
ACPI_SIG_OSDT))
|
||||
|| ACPI_FAILURE(acpi_tb_validate_table(table))) {
|
||||
continue;
|
||||
}
|
||||
@ -364,7 +365,7 @@ acpi_status acpi_unload_parent_table(acpi_handle object)
|
||||
* only these types can contain AML and thus are the only types
|
||||
* that can create namespace objects.
|
||||
*/
|
||||
if (ACPI_COMPARE_NAME
|
||||
if (ACPI_COMPARE_NAMESEG
|
||||
(acpi_gbl_root_table_list.tables[i].signature.ascii,
|
||||
ACPI_SIG_DSDT)) {
|
||||
status = AE_TYPE;
|
||||
|
@ -30,7 +30,7 @@ u8 acpi_ut_valid_nameseg(char *name)
|
||||
|
||||
/* Validate each character in the signature */
|
||||
|
||||
for (i = 0; i < ACPI_NAME_SIZE; i++) {
|
||||
for (i = 0; i < ACPI_NAMESEG_SIZE; i++) {
|
||||
if (!acpi_ut_valid_name_char(name[i], i)) {
|
||||
return (FALSE);
|
||||
}
|
||||
|
@ -78,7 +78,7 @@ const char *acpi_gbl_region_types[ACPI_NUM_PREDEFINED_REGIONS] = {
|
||||
"IPMI", /* 0x07 */
|
||||
"GeneralPurposeIo", /* 0x08 */
|
||||
"GenericSerialBus", /* 0x09 */
|
||||
"PCC" /* 0x0A */
|
||||
"PlatformCommChannel" /* 0x0A */
|
||||
};
|
||||
|
||||
const char *acpi_ut_get_region_name(u8 space_id)
|
||||
@ -239,7 +239,7 @@ const char *acpi_ut_get_node_name(void *object)
|
||||
{
|
||||
struct acpi_namespace_node *node = (struct acpi_namespace_node *)object;
|
||||
|
||||
/* Must return a string of exactly 4 characters == ACPI_NAME_SIZE */
|
||||
/* Must return a string of exactly 4 characters == ACPI_NAMESEG_SIZE */
|
||||
|
||||
if (!object) {
|
||||
return ("NULL");
|
||||
|
@ -59,10 +59,10 @@ u8 acpi_ut_is_aml_table(struct acpi_table_header *table)
|
||||
|
||||
/* These are the only tables that contain executable AML */
|
||||
|
||||
if (ACPI_COMPARE_NAME(table->signature, ACPI_SIG_DSDT) ||
|
||||
ACPI_COMPARE_NAME(table->signature, ACPI_SIG_PSDT) ||
|
||||
ACPI_COMPARE_NAME(table->signature, ACPI_SIG_SSDT) ||
|
||||
ACPI_COMPARE_NAME(table->signature, ACPI_SIG_OSDT) ||
|
||||
if (ACPI_COMPARE_NAMESEG(table->signature, ACPI_SIG_DSDT) ||
|
||||
ACPI_COMPARE_NAMESEG(table->signature, ACPI_SIG_PSDT) ||
|
||||
ACPI_COMPARE_NAMESEG(table->signature, ACPI_SIG_SSDT) ||
|
||||
ACPI_COMPARE_NAMESEG(table->signature, ACPI_SIG_OSDT) ||
|
||||
ACPI_IS_OEM_SIG(table->signature)) {
|
||||
return (TRUE);
|
||||
}
|
||||
|
@ -84,7 +84,7 @@ const union acpi_predefined_info *acpi_ut_match_predefined_method(char *name)
|
||||
|
||||
this_name = acpi_gbl_predefined_methods;
|
||||
while (this_name->info.name[0]) {
|
||||
if (ACPI_COMPARE_NAME(name, this_name->info.name)) {
|
||||
if (ACPI_COMPARE_NAMESEG(name, this_name->info.name)) {
|
||||
return (this_name);
|
||||
}
|
||||
|
||||
@ -201,7 +201,7 @@ const union acpi_predefined_info *acpi_ut_match_resource_name(char *name)
|
||||
|
||||
this_name = acpi_gbl_resource_names;
|
||||
while (this_name->info.name[0]) {
|
||||
if (ACPI_COMPARE_NAME(name, this_name->info.name)) {
|
||||
if (ACPI_COMPARE_NAMESEG(name, this_name->info.name)) {
|
||||
return (this_name);
|
||||
}
|
||||
|
||||
|
@ -141,15 +141,15 @@ void acpi_ut_repair_name(char *name)
|
||||
* Special case for the root node. This can happen if we get an
|
||||
* error during the execution of module-level code.
|
||||
*/
|
||||
if (ACPI_COMPARE_NAME(name, ACPI_ROOT_PATHNAME)) {
|
||||
if (ACPI_COMPARE_NAMESEG(name, ACPI_ROOT_PATHNAME)) {
|
||||
return;
|
||||
}
|
||||
|
||||
ACPI_MOVE_NAME(&original_name, name);
|
||||
ACPI_COPY_NAMESEG(&original_name, name);
|
||||
|
||||
/* Check each character in the name */
|
||||
|
||||
for (i = 0; i < ACPI_NAME_SIZE; i++) {
|
||||
for (i = 0; i < ACPI_NAMESEG_SIZE; i++) {
|
||||
if (acpi_ut_valid_name_char(name[i], i)) {
|
||||
continue;
|
||||
}
|
||||
|
@ -456,8 +456,11 @@ static int acpi_button_resume(struct device *dev)
|
||||
struct acpi_button *button = acpi_driver_data(device);
|
||||
|
||||
button->suspended = false;
|
||||
if (button->type == ACPI_BUTTON_TYPE_LID && button->input->users)
|
||||
if (button->type == ACPI_BUTTON_TYPE_LID && button->input->users) {
|
||||
button->last_state = !!acpi_lid_evaluate_state(device);
|
||||
button->last_time = ktime_get();
|
||||
acpi_lid_initialize_state(device);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
@ -81,9 +81,9 @@ struct cppc_pcc_data {
|
||||
int refcount;
|
||||
};
|
||||
|
||||
/* Array to represent the PCC channel per subspace id */
|
||||
/* Array to represent the PCC channel per subspace ID */
|
||||
static struct cppc_pcc_data *pcc_data[MAX_PCC_SUBSPACES];
|
||||
/* The cpu_pcc_subspace_idx containsper CPU subspace id */
|
||||
/* The cpu_pcc_subspace_idx contains per CPU subspace ID */
|
||||
static DEFINE_PER_CPU(int, cpu_pcc_subspace_idx);
|
||||
|
||||
/*
|
||||
@ -436,7 +436,7 @@ int acpi_get_psd_map(struct cppc_cpudata **all_cpu_data)
|
||||
return -ENOMEM;
|
||||
|
||||
/*
|
||||
* Now that we have _PSD data from all CPUs, lets setup P-state
|
||||
* Now that we have _PSD data from all CPUs, let's setup P-state
|
||||
* domain info.
|
||||
*/
|
||||
for_each_possible_cpu(i) {
|
||||
@ -588,7 +588,7 @@ static int register_pcc_channel(int pcc_ss_idx)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
/* Set flag so that we dont come here for each CPU. */
|
||||
/* Set flag so that we don't come here for each CPU. */
|
||||
pcc_data[pcc_ss_idx]->pcc_channel_acquired = true;
|
||||
}
|
||||
|
||||
@ -613,7 +613,7 @@ bool __weak cpc_ffh_supported(void)
|
||||
*
|
||||
* Check and allocate the cppc_pcc_data memory.
|
||||
* In some processor configurations it is possible that same subspace
|
||||
* is shared between multiple CPU's. This is seen especially in CPU's
|
||||
* is shared between multiple CPUs. This is seen especially in CPUs
|
||||
* with hardware multi-threading support.
|
||||
*
|
||||
* Return: 0 for success, errno for failure
|
||||
@ -711,7 +711,7 @@ static bool is_cppc_supported(int revision, int num_ent)
|
||||
|
||||
/**
|
||||
* acpi_cppc_processor_probe - Search for per CPU _CPC objects.
|
||||
* @pr: Ptr to acpi_processor containing this CPUs logical Id.
|
||||
* @pr: Ptr to acpi_processor containing this CPU's logical ID.
|
||||
*
|
||||
* Return: 0 for success or negative value for err.
|
||||
*/
|
||||
@ -728,7 +728,7 @@ int acpi_cppc_processor_probe(struct acpi_processor *pr)
|
||||
acpi_status status;
|
||||
int ret = -EFAULT;
|
||||
|
||||
/* Parse the ACPI _CPC table for this cpu. */
|
||||
/* Parse the ACPI _CPC table for this CPU. */
|
||||
status = acpi_evaluate_object_typed(handle, "_CPC", NULL, &output,
|
||||
ACPI_TYPE_PACKAGE);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
@ -840,7 +840,7 @@ int acpi_cppc_processor_probe(struct acpi_processor *pr)
|
||||
if (ret)
|
||||
goto out_free;
|
||||
|
||||
/* Register PCC channel once for all PCC subspace id. */
|
||||
/* Register PCC channel once for all PCC subspace ID. */
|
||||
if (pcc_subspace_id >= 0 && !pcc_data[pcc_subspace_id]->pcc_channel_acquired) {
|
||||
ret = register_pcc_channel(pcc_subspace_id);
|
||||
if (ret)
|
||||
@ -860,7 +860,7 @@ int acpi_cppc_processor_probe(struct acpi_processor *pr)
|
||||
goto out_free;
|
||||
}
|
||||
|
||||
/* Plug PSD data into this CPUs CPC descriptor. */
|
||||
/* Plug PSD data into this CPU's CPC descriptor. */
|
||||
per_cpu(cpc_desc_ptr, pr->id) = cpc_ptr;
|
||||
|
||||
ret = kobject_init_and_add(&cpc_ptr->kobj, &cppc_ktype, &cpu_dev->kobj,
|
||||
@ -891,7 +891,7 @@ EXPORT_SYMBOL_GPL(acpi_cppc_processor_probe);
|
||||
|
||||
/**
|
||||
* acpi_cppc_processor_exit - Cleanup CPC structs.
|
||||
* @pr: Ptr to acpi_processor containing this CPUs logical Id.
|
||||
* @pr: Ptr to acpi_processor containing this CPU's logical ID.
|
||||
*
|
||||
* Return: Void
|
||||
*/
|
||||
@ -931,7 +931,7 @@ EXPORT_SYMBOL_GPL(acpi_cppc_processor_exit);
|
||||
|
||||
/**
|
||||
* cpc_read_ffh() - Read FFH register
|
||||
* @cpunum: cpu number to read
|
||||
* @cpunum: CPU number to read
|
||||
* @reg: cppc register information
|
||||
* @val: place holder for return value
|
||||
*
|
||||
@ -946,7 +946,7 @@ int __weak cpc_read_ffh(int cpunum, struct cpc_reg *reg, u64 *val)
|
||||
|
||||
/**
|
||||
* cpc_write_ffh() - Write FFH register
|
||||
* @cpunum: cpu number to write
|
||||
* @cpunum: CPU number to write
|
||||
* @reg: cppc register information
|
||||
* @val: value to write
|
||||
*
|
||||
@ -1093,7 +1093,7 @@ int cppc_get_desired_perf(int cpunum, u64 *desired_perf)
|
||||
EXPORT_SYMBOL_GPL(cppc_get_desired_perf);
|
||||
|
||||
/**
|
||||
* cppc_get_perf_caps - Get a CPUs performance capabilities.
|
||||
* cppc_get_perf_caps - Get a CPU's performance capabilities.
|
||||
* @cpunum: CPU from which to get capabilities info.
|
||||
* @perf_caps: ptr to cppc_perf_caps. See cppc_acpi.h
|
||||
*
|
||||
@ -1183,7 +1183,7 @@ out_err:
|
||||
EXPORT_SYMBOL_GPL(cppc_get_perf_caps);
|
||||
|
||||
/**
|
||||
* cppc_get_perf_ctrs - Read a CPUs performance feedback counters.
|
||||
* cppc_get_perf_ctrs - Read a CPU's performance feedback counters.
|
||||
* @cpunum: CPU from which to read counters.
|
||||
* @perf_fb_ctrs: ptr to cppc_perf_fb_ctrs. See cppc_acpi.h
|
||||
*
|
||||
@ -1210,7 +1210,7 @@ int cppc_get_perf_ctrs(int cpunum, struct cppc_perf_fb_ctrs *perf_fb_ctrs)
|
||||
ctr_wrap_reg = &cpc_desc->cpc_regs[CTR_WRAP_TIME];
|
||||
|
||||
/*
|
||||
* If refernce perf register is not supported then we should
|
||||
* If reference perf register is not supported then we should
|
||||
* use the nominal perf value
|
||||
*/
|
||||
if (!CPC_SUPPORTED(ref_perf_reg))
|
||||
@ -1263,7 +1263,7 @@ out_err:
|
||||
EXPORT_SYMBOL_GPL(cppc_get_perf_ctrs);
|
||||
|
||||
/**
|
||||
* cppc_set_perf - Set a CPUs performance controls.
|
||||
* cppc_set_perf - Set a CPU's performance controls.
|
||||
* @cpu: CPU for which to set performance controls.
|
||||
* @perf_ctrls: ptr to cppc_perf_ctrls. See cppc_acpi.h
|
||||
*
|
||||
@ -1344,7 +1344,7 @@ int cppc_set_perf(int cpu, struct cppc_perf_ctrls *perf_ctrls)
|
||||
* executing the Phase-II.
|
||||
* 2. Some other CPU has beaten this CPU to successfully execute the
|
||||
* write_trylock and has already acquired the write_lock. We know for a
|
||||
* fact it(other CPU acquiring the write_lock) couldn't have happened
|
||||
* fact it (other CPU acquiring the write_lock) couldn't have happened
|
||||
* before this CPU's Phase-I as we held the read_lock.
|
||||
* 3. Some other CPU executing pcc CMD_READ has stolen the
|
||||
* down_write, in which case, send_pcc_cmd will check for pending
|
||||
|
@ -728,6 +728,9 @@ static int __acpi_device_wakeup_enable(struct acpi_device *adev,
|
||||
goto out;
|
||||
}
|
||||
|
||||
acpi_handle_debug(adev->handle, "GPE%2X enabled for wakeup\n",
|
||||
(unsigned int)wakeup->gpe_number);
|
||||
|
||||
inc:
|
||||
wakeup->enable_count++;
|
||||
|
||||
|
@ -31,8 +31,7 @@ static ssize_t name##_show(struct device *dev,\
|
||||
struct device_attribute *attr,\
|
||||
char *buf)\
|
||||
{\
|
||||
struct platform_device *pdev = to_platform_device(dev);\
|
||||
struct acpi_device *acpi_dev = platform_get_drvdata(pdev);\
|
||||
struct acpi_device *acpi_dev = dev_get_drvdata(dev);\
|
||||
unsigned long long val;\
|
||||
acpi_status status;\
|
||||
\
|
||||
|
@ -131,8 +131,8 @@ int acpi_bus_generate_netlink_event(const char *device_class,
|
||||
event = nla_data(attr);
|
||||
memset(event, 0, sizeof(struct acpi_genl_event));
|
||||
|
||||
strcpy(event->device_class, device_class);
|
||||
strcpy(event->bus_id, bus_id);
|
||||
strscpy(event->device_class, device_class, sizeof(event->device_class));
|
||||
strscpy(event->bus_id, bus_id, sizeof(event->bus_id));
|
||||
event->type = type;
|
||||
event->data = data;
|
||||
|
||||
|
@ -535,12 +535,12 @@ int acpi_device_sleep_wake(struct acpi_device *dev,
|
||||
/*
|
||||
* Try to execute _DSW first.
|
||||
*
|
||||
* Three agruments are needed for the _DSW object:
|
||||
* Three arguments are needed for the _DSW object:
|
||||
* Argument 0: enable/disable the wake capabilities
|
||||
* Argument 1: target system state
|
||||
* Argument 2: target device state
|
||||
* When _DSW object is called to disable the wake capabilities, maybe
|
||||
* the first argument is filled. The values of the other two agruments
|
||||
* the first argument is filled. The values of the other two arguments
|
||||
* are meaningless.
|
||||
*/
|
||||
in_arg[0].type = ACPI_TYPE_INTEGER;
|
||||
|
@ -164,7 +164,7 @@ static struct acpi_pptt_cache *acpi_find_cache_level(struct acpi_table_header *t
|
||||
}
|
||||
|
||||
/**
|
||||
* acpi_count_levels() - Given a PPTT table, and a cpu node, count the caches
|
||||
* acpi_count_levels() - Given a PPTT table, and a CPU node, count the caches
|
||||
* @table_hdr: Pointer to the head of the PPTT table
|
||||
* @cpu_node: processor node we wish to count caches for
|
||||
*
|
||||
@ -235,7 +235,7 @@ static int acpi_pptt_leaf_node(struct acpi_table_header *table_hdr,
|
||||
/**
|
||||
* acpi_find_processor_node() - Given a PPTT table find the requested processor
|
||||
* @table_hdr: Pointer to the head of the PPTT table
|
||||
* @acpi_cpu_id: cpu we are searching for
|
||||
* @acpi_cpu_id: CPU we are searching for
|
||||
*
|
||||
* Find the subtable entry describing the provided processor.
|
||||
* This is done by iterating the PPTT table looking for processor nodes
|
||||
@ -456,21 +456,21 @@ static struct acpi_pptt_processor *acpi_find_processor_package_id(struct acpi_ta
|
||||
|
||||
static void acpi_pptt_warn_missing(void)
|
||||
{
|
||||
pr_warn_once("No PPTT table found, cpu and cache topology may be inaccurate\n");
|
||||
pr_warn_once("No PPTT table found, CPU and cache topology may be inaccurate\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* topology_get_acpi_cpu_tag() - Find a unique topology value for a feature
|
||||
* @table: Pointer to the head of the PPTT table
|
||||
* @cpu: Kernel logical cpu number
|
||||
* @cpu: Kernel logical CPU number
|
||||
* @level: A level that terminates the search
|
||||
* @flag: A flag which terminates the search
|
||||
*
|
||||
* Get a unique value given a cpu, and a topology level, that can be
|
||||
* Get a unique value given a CPU, and a topology level, that can be
|
||||
* matched to determine which cpus share common topological features
|
||||
* at that level.
|
||||
*
|
||||
* Return: Unique value, or -ENOENT if unable to locate cpu
|
||||
* Return: Unique value, or -ENOENT if unable to locate CPU
|
||||
*/
|
||||
static int topology_get_acpi_cpu_tag(struct acpi_table_header *table,
|
||||
unsigned int cpu, int level, int flag)
|
||||
@ -510,7 +510,7 @@ static int find_acpi_cpu_topology_tag(unsigned int cpu, int level, int flag)
|
||||
return -ENOENT;
|
||||
}
|
||||
retval = topology_get_acpi_cpu_tag(table, cpu, level, flag);
|
||||
pr_debug("Topology Setup ACPI cpu %d, level %d ret = %d\n",
|
||||
pr_debug("Topology Setup ACPI CPU %d, level %d ret = %d\n",
|
||||
cpu, level, retval);
|
||||
acpi_put_table(table);
|
||||
|
||||
@ -519,9 +519,9 @@ static int find_acpi_cpu_topology_tag(unsigned int cpu, int level, int flag)
|
||||
|
||||
/**
|
||||
* acpi_find_last_cache_level() - Determines the number of cache levels for a PE
|
||||
* @cpu: Kernel logical cpu number
|
||||
* @cpu: Kernel logical CPU number
|
||||
*
|
||||
* Given a logical cpu number, returns the number of levels of cache represented
|
||||
* Given a logical CPU number, returns the number of levels of cache represented
|
||||
* in the PPTT. Errors caused by lack of a PPTT table, or otherwise, return 0
|
||||
* indicating we didn't find any cache levels.
|
||||
*
|
||||
@ -534,7 +534,7 @@ int acpi_find_last_cache_level(unsigned int cpu)
|
||||
int number_of_levels = 0;
|
||||
acpi_status status;
|
||||
|
||||
pr_debug("Cache Setup find last level cpu=%d\n", cpu);
|
||||
pr_debug("Cache Setup find last level CPU=%d\n", cpu);
|
||||
|
||||
acpi_cpu_id = get_acpi_id_for_cpu(cpu);
|
||||
status = acpi_get_table(ACPI_SIG_PPTT, 0, &table);
|
||||
@ -551,14 +551,14 @@ int acpi_find_last_cache_level(unsigned int cpu)
|
||||
|
||||
/**
|
||||
* cache_setup_acpi() - Override CPU cache topology with data from the PPTT
|
||||
* @cpu: Kernel logical cpu number
|
||||
* @cpu: Kernel logical CPU number
|
||||
*
|
||||
* Updates the global cache info provided by cpu_get_cacheinfo()
|
||||
* when there are valid properties in the acpi_pptt_cache nodes. A
|
||||
* successful parse may not result in any updates if none of the
|
||||
* cache levels have any valid flags set. Futher, a unique value is
|
||||
* cache levels have any valid flags set. Further, a unique value is
|
||||
* associated with each known CPU cache entry. This unique value
|
||||
* can be used to determine whether caches are shared between cpus.
|
||||
* can be used to determine whether caches are shared between CPUs.
|
||||
*
|
||||
* Return: -ENOENT on failure to find table, or 0 on success
|
||||
*/
|
||||
@ -567,7 +567,7 @@ int cache_setup_acpi(unsigned int cpu)
|
||||
struct acpi_table_header *table;
|
||||
acpi_status status;
|
||||
|
||||
pr_debug("Cache Setup ACPI cpu %d\n", cpu);
|
||||
pr_debug("Cache Setup ACPI CPU %d\n", cpu);
|
||||
|
||||
status = acpi_get_table(ACPI_SIG_PPTT, 0, &table);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
@ -582,8 +582,8 @@ int cache_setup_acpi(unsigned int cpu)
|
||||
}
|
||||
|
||||
/**
|
||||
* find_acpi_cpu_topology() - Determine a unique topology value for a given cpu
|
||||
* @cpu: Kernel logical cpu number
|
||||
* find_acpi_cpu_topology() - Determine a unique topology value for a given CPU
|
||||
* @cpu: Kernel logical CPU number
|
||||
* @level: The topological level for which we would like a unique ID
|
||||
*
|
||||
* Determine a topology unique ID for each thread/core/cluster/mc_grouping
|
||||
@ -596,7 +596,7 @@ int cache_setup_acpi(unsigned int cpu)
|
||||
* other levels beyond this use a generated value to uniquely identify
|
||||
* a topological feature.
|
||||
*
|
||||
* Return: -ENOENT if the PPTT doesn't exist, or the cpu cannot be found.
|
||||
* Return: -ENOENT if the PPTT doesn't exist, or the CPU cannot be found.
|
||||
* Otherwise returns a value which represents a unique topological feature.
|
||||
*/
|
||||
int find_acpi_cpu_topology(unsigned int cpu, int level)
|
||||
@ -606,12 +606,12 @@ int find_acpi_cpu_topology(unsigned int cpu, int level)
|
||||
|
||||
/**
|
||||
* find_acpi_cpu_cache_topology() - Determine a unique cache topology value
|
||||
* @cpu: Kernel logical cpu number
|
||||
* @cpu: Kernel logical CPU number
|
||||
* @level: The cache level for which we would like a unique ID
|
||||
*
|
||||
* Determine a unique ID for each unified cache in the system
|
||||
*
|
||||
* Return: -ENOENT if the PPTT doesn't exist, or the cpu cannot be found.
|
||||
* Return: -ENOENT if the PPTT doesn't exist, or the CPU cannot be found.
|
||||
* Otherwise returns a value which represents a unique topological feature.
|
||||
*/
|
||||
int find_acpi_cpu_cache_topology(unsigned int cpu, int level)
|
||||
@ -643,17 +643,17 @@ int find_acpi_cpu_cache_topology(unsigned int cpu, int level)
|
||||
|
||||
|
||||
/**
|
||||
* find_acpi_cpu_topology_package() - Determine a unique cpu package value
|
||||
* @cpu: Kernel logical cpu number
|
||||
* find_acpi_cpu_topology_package() - Determine a unique CPU package value
|
||||
* @cpu: Kernel logical CPU number
|
||||
*
|
||||
* Determine a topology unique package ID for the given cpu.
|
||||
* Determine a topology unique package ID for the given CPU.
|
||||
* This ID can then be used to group peers, which will have matching ids.
|
||||
*
|
||||
* The search terminates when either a level is found with the PHYSICAL_PACKAGE
|
||||
* flag set or we reach a root node.
|
||||
*
|
||||
* Return: -ENOENT if the PPTT doesn't exist, or the cpu cannot be found.
|
||||
* Otherwise returns a value which represents the package for this cpu.
|
||||
* Return: -ENOENT if the PPTT doesn't exist, or the CPU cannot be found.
|
||||
* Otherwise returns a value which represents the package for this CPU.
|
||||
*/
|
||||
int find_acpi_cpu_topology_package(unsigned int cpu)
|
||||
{
|
||||
|
@ -763,18 +763,16 @@ acpi_bus_get_ejd(acpi_handle handle, acpi_handle *ejd)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(acpi_bus_get_ejd);
|
||||
|
||||
static int acpi_bus_extract_wakeup_device_power_package(acpi_handle handle,
|
||||
struct acpi_device_wakeup *wakeup)
|
||||
static int acpi_bus_extract_wakeup_device_power_package(struct acpi_device *dev)
|
||||
{
|
||||
acpi_handle handle = dev->handle;
|
||||
struct acpi_device_wakeup *wakeup = &dev->wakeup;
|
||||
struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
|
||||
union acpi_object *package = NULL;
|
||||
union acpi_object *element = NULL;
|
||||
acpi_status status;
|
||||
int err = -ENODATA;
|
||||
|
||||
if (!wakeup)
|
||||
return -EINVAL;
|
||||
|
||||
INIT_LIST_HEAD(&wakeup->resources);
|
||||
|
||||
/* _PRW */
|
||||
@ -848,9 +846,9 @@ static int acpi_bus_extract_wakeup_device_power_package(acpi_handle handle,
|
||||
static bool acpi_wakeup_gpe_init(struct acpi_device *device)
|
||||
{
|
||||
static const struct acpi_device_id button_device_ids[] = {
|
||||
{"PNP0C0C", 0},
|
||||
{"PNP0C0D", 0},
|
||||
{"PNP0C0E", 0},
|
||||
{"PNP0C0C", 0}, /* Power button */
|
||||
{"PNP0C0D", 0}, /* Lid */
|
||||
{"PNP0C0E", 0}, /* Sleep button */
|
||||
{"", 0},
|
||||
};
|
||||
struct acpi_device_wakeup *wakeup = &device->wakeup;
|
||||
@ -883,8 +881,7 @@ static void acpi_bus_get_wakeup_device_flags(struct acpi_device *device)
|
||||
if (!acpi_has_method(device->handle, "_PRW"))
|
||||
return;
|
||||
|
||||
err = acpi_bus_extract_wakeup_device_power_package(device->handle,
|
||||
&device->wakeup);
|
||||
err = acpi_bus_extract_wakeup_device_power_package(device);
|
||||
if (err) {
|
||||
dev_err(&device->dev, "_PRW evaluation error: %d\n", err);
|
||||
return;
|
||||
@ -895,7 +892,7 @@ static void acpi_bus_get_wakeup_device_flags(struct acpi_device *device)
|
||||
/*
|
||||
* Call _PSW/_DSW object to disable its ability to wake the sleeping
|
||||
* system for the ACPI device with the _PRW object.
|
||||
* The _PSW object is depreciated in ACPI 3.0 and is replaced by _DSW.
|
||||
* The _PSW object is deprecated in ACPI 3.0 and is replaced by _DSW.
|
||||
* So it is necessary to call _DSW object first. Only when it is not
|
||||
* present will the _PSW object used.
|
||||
*/
|
||||
@ -2260,7 +2257,7 @@ int __init __acpi_probe_device_table(struct acpi_probe_entry *ap_head, int nr)
|
||||
|
||||
mutex_lock(&acpi_probe_mutex);
|
||||
for (ape = ap_head; nr; ape++, nr--) {
|
||||
if (ACPI_COMPARE_NAME(ACPI_SIG_MADT, ape->id)) {
|
||||
if (ACPI_COMPARE_NAMESEG(ACPI_SIG_MADT, ape->id)) {
|
||||
acpi_probe_count = 0;
|
||||
acpi_table_parse_madt(ape->type, acpi_match_madt, 0);
|
||||
count += acpi_probe_count;
|
||||
|
@ -28,7 +28,7 @@ EXPORT_SYMBOL(qdf2400_e44_present);
|
||||
|
||||
/*
|
||||
* Some Qualcomm Datacenter Technologies SoCs have a defective UART BUSY bit.
|
||||
* Detect them by examining the OEM fields in the SPCR header, similiar to PCI
|
||||
* Detect them by examining the OEM fields in the SPCR header, similar to PCI
|
||||
* quirk detection in pci_mcfg.c.
|
||||
*/
|
||||
static bool qdf2400_erratum_44_present(struct acpi_table_header *h)
|
||||
|
@ -327,9 +327,9 @@ static struct kobject *hotplug_kobj;
|
||||
|
||||
struct acpi_table_attr {
|
||||
struct bin_attribute attr;
|
||||
char name[ACPI_NAME_SIZE];
|
||||
char name[ACPI_NAMESEG_SIZE];
|
||||
int instance;
|
||||
char filename[ACPI_NAME_SIZE+ACPI_INST_SIZE];
|
||||
char filename[ACPI_NAMESEG_SIZE+ACPI_INST_SIZE];
|
||||
struct list_head node;
|
||||
};
|
||||
|
||||
@ -368,10 +368,10 @@ static int acpi_table_attr_init(struct kobject *tables_obj,
|
||||
char instance_str[ACPI_INST_SIZE];
|
||||
|
||||
sysfs_attr_init(&table_attr->attr.attr);
|
||||
ACPI_MOVE_NAME(table_attr->name, table_header->signature);
|
||||
ACPI_COPY_NAMESEG(table_attr->name, table_header->signature);
|
||||
|
||||
list_for_each_entry(attr, &acpi_table_attr_list, node) {
|
||||
if (ACPI_COMPARE_NAME(table_attr->name, attr->name))
|
||||
if (ACPI_COMPARE_NAMESEG(table_attr->name, attr->name))
|
||||
if (table_attr->instance < attr->instance)
|
||||
table_attr->instance = attr->instance;
|
||||
}
|
||||
@ -382,8 +382,8 @@ static int acpi_table_attr_init(struct kobject *tables_obj,
|
||||
return -ERANGE;
|
||||
}
|
||||
|
||||
ACPI_MOVE_NAME(table_attr->filename, table_header->signature);
|
||||
table_attr->filename[ACPI_NAME_SIZE] = '\0';
|
||||
ACPI_COPY_NAMESEG(table_attr->filename, table_header->signature);
|
||||
table_attr->filename[ACPI_NAMESEG_SIZE] = '\0';
|
||||
if (table_attr->instance > 1 || (table_attr->instance == 1 &&
|
||||
!acpi_get_table
|
||||
(table_header->signature, 2, &header))) {
|
||||
@ -484,7 +484,7 @@ static int acpi_table_data_init(struct acpi_table_header *th)
|
||||
int i;
|
||||
|
||||
for (i = 0; i < NUM_ACPI_DATA_OBJS; i++) {
|
||||
if (ACPI_COMPARE_NAME(th->signature, acpi_data_objs[i].name)) {
|
||||
if (ACPI_COMPARE_NAMESEG(th->signature, acpi_data_objs[i].name)) {
|
||||
data_attr = kzalloc(sizeof(*data_attr), GFP_KERNEL);
|
||||
if (!data_attr)
|
||||
return -ENOMEM;
|
||||
|
@ -240,8 +240,7 @@ void acpi_table_print_madt_entry(struct acpi_subtable_header *header)
|
||||
* On success returns sum of all matching entries for all proc handlers.
|
||||
* Otherwise, -ENODEV or -EINVAL is returned.
|
||||
*/
|
||||
static int __init
|
||||
acpi_parse_entries_array(char *id, unsigned long table_size,
|
||||
static int __init acpi_parse_entries_array(char *id, unsigned long table_size,
|
||||
struct acpi_table_header *table_header,
|
||||
struct acpi_subtable_proc *proc, int proc_num,
|
||||
unsigned int max_entries)
|
||||
@ -314,8 +313,7 @@ acpi_parse_entries_array(char *id, unsigned long table_size,
|
||||
return errs ? -EINVAL : count;
|
||||
}
|
||||
|
||||
int __init
|
||||
acpi_table_parse_entries_array(char *id,
|
||||
int __init acpi_table_parse_entries_array(char *id,
|
||||
unsigned long table_size,
|
||||
struct acpi_subtable_proc *proc, int proc_num,
|
||||
unsigned int max_entries)
|
||||
@ -346,8 +344,7 @@ acpi_table_parse_entries_array(char *id,
|
||||
return count;
|
||||
}
|
||||
|
||||
int __init
|
||||
acpi_table_parse_entries(char *id,
|
||||
int __init acpi_table_parse_entries(char *id,
|
||||
unsigned long table_size,
|
||||
int entry_id,
|
||||
acpi_tbl_entry_handler handler,
|
||||
@ -362,8 +359,7 @@ acpi_table_parse_entries(char *id,
|
||||
max_entries);
|
||||
}
|
||||
|
||||
int __init
|
||||
acpi_table_parse_madt(enum acpi_madt_type id,
|
||||
int __init acpi_table_parse_madt(enum acpi_madt_type id,
|
||||
acpi_tbl_entry_handler handler, unsigned int max_entries)
|
||||
{
|
||||
return acpi_table_parse_entries(ACPI_SIG_MADT,
|
||||
@ -670,8 +666,8 @@ static void __init acpi_table_initrd_scan(void)
|
||||
table_length = table->length;
|
||||
|
||||
/* Skip RSDT/XSDT which should only be used for override */
|
||||
if (ACPI_COMPARE_NAME(table->signature, ACPI_SIG_RSDT) ||
|
||||
ACPI_COMPARE_NAME(table->signature, ACPI_SIG_XSDT)) {
|
||||
if (ACPI_COMPARE_NAMESEG(table->signature, ACPI_SIG_RSDT) ||
|
||||
ACPI_COMPARE_NAMESEG(table->signature, ACPI_SIG_XSDT)) {
|
||||
acpi_os_unmap_memory(table, ACPI_HEADER_SIZE);
|
||||
goto next_table;
|
||||
}
|
||||
@ -725,8 +721,7 @@ static void *amlcode __attribute__ ((weakref("AmlCode")));
|
||||
static void *dsdt_amlcode __attribute__ ((weakref("dsdt_aml_code")));
|
||||
#endif
|
||||
|
||||
acpi_status
|
||||
acpi_os_table_override(struct acpi_table_header *existing_table,
|
||||
acpi_status acpi_os_table_override(struct acpi_table_header *existing_table,
|
||||
struct acpi_table_header **new_table)
|
||||
{
|
||||
if (!existing_table || !new_table)
|
||||
@ -788,7 +783,6 @@ static int __init acpi_parse_apic_instance(char *str)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
early_param("acpi_apic_instance", acpi_parse_apic_instance);
|
||||
|
||||
static int __init acpi_force_table_verification_setup(char *s)
|
||||
@ -797,7 +791,6 @@ static int __init acpi_force_table_verification_setup(char *s)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
early_param("acpi_force_table_verification", acpi_force_table_verification_setup);
|
||||
|
||||
static int __init acpi_force_32bit_fadt_addr(char *s)
|
||||
@ -807,5 +800,4 @@ static int __init acpi_force_32bit_fadt_addr(char *s)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
early_param("acpi_force_32bit_fadt_addr", acpi_force_32bit_fadt_addr);
|
||||
|
@ -739,6 +739,7 @@ EXPORT_SYMBOL(acpi_dev_found);
|
||||
|
||||
struct acpi_dev_match_info {
|
||||
const char *dev_name;
|
||||
struct acpi_device *adev;
|
||||
struct acpi_device_id hid[2];
|
||||
const char *uid;
|
||||
s64 hrv;
|
||||
@ -759,6 +760,7 @@ static int acpi_dev_match_cb(struct device *dev, void *data)
|
||||
return 0;
|
||||
|
||||
match->dev_name = acpi_dev_name(adev);
|
||||
match->adev = adev;
|
||||
|
||||
if (match->hrv == -1)
|
||||
return 1;
|
||||
@ -806,18 +808,20 @@ bool acpi_dev_present(const char *hid, const char *uid, s64 hrv)
|
||||
EXPORT_SYMBOL(acpi_dev_present);
|
||||
|
||||
/**
|
||||
* acpi_dev_get_first_match_name - Return name of first match of ACPI device
|
||||
* acpi_dev_get_first_match_dev - Return the first match of ACPI device
|
||||
* @hid: Hardware ID of the device.
|
||||
* @uid: Unique ID of the device, pass NULL to not check _UID
|
||||
* @hrv: Hardware Revision of the device, pass -1 to not check _HRV
|
||||
*
|
||||
* Return device name if a matching device was present
|
||||
* Return the first match of ACPI device if a matching device was present
|
||||
* at the moment of invocation, or NULL otherwise.
|
||||
*
|
||||
* The caller is responsible to call put_device() on the returned device.
|
||||
*
|
||||
* See additional information in acpi_dev_present() as well.
|
||||
*/
|
||||
const char *
|
||||
acpi_dev_get_first_match_name(const char *hid, const char *uid, s64 hrv)
|
||||
struct acpi_device *
|
||||
acpi_dev_get_first_match_dev(const char *hid, const char *uid, s64 hrv)
|
||||
{
|
||||
struct acpi_dev_match_info match = {};
|
||||
struct device *dev;
|
||||
@ -827,9 +831,9 @@ acpi_dev_get_first_match_name(const char *hid, const char *uid, s64 hrv)
|
||||
match.hrv = hrv;
|
||||
|
||||
dev = bus_find_device(&acpi_bus_type, NULL, &match, acpi_dev_match_cb);
|
||||
return dev ? match.dev_name : NULL;
|
||||
return dev ? match.adev : NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(acpi_dev_get_first_match_name);
|
||||
EXPORT_SYMBOL(acpi_dev_get_first_match_dev);
|
||||
|
||||
/*
|
||||
* acpi_backlight= handling, this is done here rather then in video_detect.c
|
||||
|
@ -112,7 +112,7 @@ static int video_detect_force_none(const struct dmi_system_id *d)
|
||||
static const struct dmi_system_id video_detect_dmi_table[] = {
|
||||
/* On Samsung X360, the BIOS will set a flag (VDRV) if generic
|
||||
* ACPI backlight device is used. This flag will definitively break
|
||||
* the backlight interface (even the vendor interface) untill next
|
||||
* the backlight interface (even the vendor interface) until next
|
||||
* reboot. It's why we should prevent video.ko from being used here
|
||||
* and we can't rely on a later call to acpi_video_unregister().
|
||||
*/
|
||||
@ -141,6 +141,14 @@ static const struct dmi_system_id video_detect_dmi_table[] = {
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "UL30A"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.callback = video_detect_force_vendor,
|
||||
.ident = "Sony VPCEH3U1E",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "VPCEH3U1E"),
|
||||
},
|
||||
},
|
||||
|
||||
/*
|
||||
* These models have a working acpi_video backlight control, and using
|
||||
|
Reference in New Issue
Block a user