aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi
diff options
context:
space:
mode:
authorJiri Slaby <jirislaby@gmail.com>2006-03-28 17:04:00 -0500
committerLen Brown <len.brown@intel.com>2006-04-01 22:33:06 -0500
commitff2fc3e9e3edb918b6c6b288485c6cb267bc865e (patch)
treeb59bfffe58d9e34be055030078b8da9451b8d5a7 /drivers/acpi
parent683aa4012f53b2ada0f430487e05d37b0d94e90a (diff)
ACPI: EC acpi-ecdt-uid-hack
On some boxes ecdt uid may be equal to 0, so do not test for uids equality, so that fake handler will be unconditionally removed to allow loading the real one. See http://bugzilla.kernel.org/show_bug.cgi?id=6111 Signed-off-by: Jiri Slaby <jirislaby@gmail.com> Cc: Luming Yu <luming.yu@intel.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi')
-rw-r--r--drivers/acpi/ec.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index eee0864ba300..e638168775b9 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -991,7 +991,6 @@ static int acpi_ec_poll_add(struct acpi_device *device)
991 int result = 0; 991 int result = 0;
992 acpi_status status = AE_OK; 992 acpi_status status = AE_OK;
993 union acpi_ec *ec = NULL; 993 union acpi_ec *ec = NULL;
994 unsigned long uid;
995 994
996 ACPI_FUNCTION_TRACE("acpi_ec_add"); 995 ACPI_FUNCTION_TRACE("acpi_ec_add");
997 996
@@ -1014,10 +1013,9 @@ static int acpi_ec_poll_add(struct acpi_device *device)
1014 acpi_evaluate_integer(ec->common.handle, "_GLK", NULL, 1013 acpi_evaluate_integer(ec->common.handle, "_GLK", NULL,
1015 &ec->common.global_lock); 1014 &ec->common.global_lock);
1016 1015
1017 /* If our UID matches the UID for the ECDT-enumerated EC, 1016 /* XXX we don't test uids, because on some boxes ecdt uid = 0, see:
1018 we now have the *real* EC info, so kill the makeshift one. */ 1017 http://bugzilla.kernel.org/show_bug.cgi?id=6111 */
1019 acpi_evaluate_integer(ec->common.handle, "_UID", NULL, &uid); 1018 if (ec_ecdt) {
1020 if (ec_ecdt && ec_ecdt->common.uid == uid) {
1021 acpi_remove_address_space_handler(ACPI_ROOT_OBJECT, 1019 acpi_remove_address_space_handler(ACPI_ROOT_OBJECT,
1022 ACPI_ADR_SPACE_EC, 1020 ACPI_ADR_SPACE_EC,
1023 &acpi_ec_space_handler); 1021 &acpi_ec_space_handler);
@@ -1062,7 +1060,6 @@ static int acpi_ec_intr_add(struct acpi_device *device)
1062 int result = 0; 1060 int result = 0;
1063 acpi_status status = AE_OK; 1061 acpi_status status = AE_OK;
1064 union acpi_ec *ec = NULL; 1062 union acpi_ec *ec = NULL;
1065 unsigned long uid;
1066 1063
1067 ACPI_FUNCTION_TRACE("acpi_ec_add"); 1064 ACPI_FUNCTION_TRACE("acpi_ec_add");
1068 1065
@@ -1088,10 +1085,9 @@ static int acpi_ec_intr_add(struct acpi_device *device)
1088 acpi_evaluate_integer(ec->common.handle, "_GLK", NULL, 1085 acpi_evaluate_integer(ec->common.handle, "_GLK", NULL,
1089 &ec->common.global_lock); 1086 &ec->common.global_lock);
1090 1087
1091 /* If our UID matches the UID for the ECDT-enumerated EC, 1088 /* XXX we don't test uids, because on some boxes ecdt uid = 0, see:
1092 we now have the *real* EC info, so kill the makeshift one. */ 1089 http://bugzilla.kernel.org/show_bug.cgi?id=6111 */
1093 acpi_evaluate_integer(ec->common.handle, "_UID", NULL, &uid); 1090 if (ec_ecdt) {
1094 if (ec_ecdt && ec_ecdt->common.uid == uid) {
1095 acpi_remove_address_space_handler(ACPI_ROOT_OBJECT, 1091 acpi_remove_address_space_handler(ACPI_ROOT_OBJECT,
1096 ACPI_ADR_SPACE_EC, 1092 ACPI_ADR_SPACE_EC,
1097 &acpi_ec_space_handler); 1093 &acpi_ec_space_handler);