Subject: ACPI: Cleanup :Initialize EC global lock based on the return status From: Zhao Yakui <yakui.zhao@xxxxxxxxx> Initialize the EC global lock based on the returned value of _GLK object. Only when AE_OK is returned by the acpi_evaluate_integer, the EC global lock will be assigned based on the return value of _GLK object.Otherwise it means that there is no _GLK object and the global lock won't be required when EC is accessed. If the return value of _GLK object is not zero, it means that GLobal lock will be required when EC is accessed. If the return value of _GLK object is zero, it means that GLobal lock won't be required when EC is accessed. Signed-off-by: Zhao Yakui <yakui.zhao@xxxxxxxxx> cc: Alexey Starikovskiy <astarikovskiy@xxxxxxx> cc: Alan Jenkins <alan-jenkins@xxxxxxxxxxxxxx> --- drivers/acpi/ec.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) Index: linux-2.6/drivers/acpi/ec.c =================================================================== --- linux-2.6.orig/drivers/acpi/ec.c +++ linux-2.6/drivers/acpi/ec.c @@ -752,8 +752,28 @@ ec_parse_device(acpi_handle handle, u32 ec->gpe = tmp; /* Use the global lock for all EC transactions? */ tmp = 0; - acpi_evaluate_integer(handle, "_GLK", NULL, &tmp); - ec->global_lock = tmp; + /* + * Only when AE_OK is returned by acpi_evaluate_interger, + * the ec->global_lock will be assigned based on the returned + * value by _GLK. Otherwise it means that there is no _GLK object + * and global lock won't be required when EC is accessed. + * If the return value of _GLK object is not zero, it means that + * global lock will be required when EC is accessed. + * If the return value of _GLK object is zero, it means that + * global lock won't be required when EC is accessed. + */ + status = acpi_evaluate_integer(handle, "_GLK", NULL, &tmp); + if (ACPI_SUCCESS(status)) { + /* + * If the return value is not zero, it means that global lock + * is required when EC is accessed + */ + if (tmp) + ec->global_lock = 1; + else + ec->global_lock = 0; + } else + ec->global_lock = 0; ec->handle = handle; return AE_CTRL_TERMINATE; } -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html