diff options
author | John Sonnenschein <johns@joyent.com> | 2011-12-15 22:43:18 +0000 |
---|---|---|
committer | John Sonnenschein <johns@joyent.com> | 2011-12-15 22:43:18 +0000 |
commit | c4aa323138d7633d35c7cbf4123aa100970a91f9 (patch) | |
tree | 596fe3d0c3374835bf0e2e1d31e3ea8f3659422a /usr/src/uts/common/io/power.c | |
parent | 73c531dd5303a633bcaaf609c6eeb2554096b478 (diff) | |
parent | f9b22ee9e48b04a9ef01426e92a13c5b164c0763 (diff) | |
download | illumos-joyent-c4aa323138d7633d35c7cbf4123aa100970a91f9.tar.gz |
Merge branch 'master' into gcc4
Diffstat (limited to 'usr/src/uts/common/io/power.c')
-rw-r--r-- | usr/src/uts/common/io/power.c | 58 |
1 files changed, 1 insertions, 57 deletions
diff --git a/usr/src/uts/common/io/power.c b/usr/src/uts/common/io/power.c index 26263a3591..61e675ba77 100644 --- a/usr/src/uts/common/io/power.c +++ b/usr/src/uts/common/io/power.c @@ -22,6 +22,7 @@ * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. * Copyright 2011 Joyent, Inc. All rights reserved. + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. */ /* @@ -946,58 +947,6 @@ power_log_message(void) #ifdef ACPI_POWER_BUTTON /* - * Given a handle to a device object, locate a _PRW object - * if present and fetch the GPE info for this device object - */ -static ACPI_STATUS -power_get_prw_gpe(ACPI_HANDLE dev, ACPI_HANDLE *gpe_dev, UINT32 *gpe_num) -{ - ACPI_BUFFER buf; - ACPI_STATUS status; - ACPI_HANDLE prw; - ACPI_OBJECT *gpe; - - /* - * Evaluate _PRW if present - */ - status = AcpiGetHandle(dev, "_PRW", &prw); - if (status != AE_OK) - return (status); - buf.Length = ACPI_ALLOCATE_BUFFER; - status = AcpiEvaluateObjectTyped(prw, NULL, NULL, &buf, - ACPI_TYPE_PACKAGE); - if (status != AE_OK) - return (status); - - /* - * Sanity-check the package; need at least two elements - */ - status = AE_ERROR; - if (((ACPI_OBJECT *)buf.Pointer)->Package.Count < 2) - goto done; - - gpe = &((ACPI_OBJECT *)buf.Pointer)->Package.Elements[0]; - if (gpe->Type == ACPI_TYPE_INTEGER) { - *gpe_dev = NULL; - *gpe_num = gpe->Integer.Value; - status = AE_OK; - } else if (gpe->Type == ACPI_TYPE_PACKAGE) { - if ((gpe->Package.Count != 2) || - (gpe->Package.Elements[0].Type != ACPI_TYPE_DEVICE) || - (gpe->Package.Elements[1].Type != ACPI_TYPE_INTEGER)) - goto done; - *gpe_dev = gpe->Package.Elements[0].Reference.Handle; - *gpe_num = gpe->Package.Elements[1].Integer.Value; - status = AE_OK; - } - -done: - AcpiOsFree(buf.Pointer); - return (status); -} - - -/* * */ /*ARGSUSED*/ @@ -1052,15 +1001,10 @@ static int power_probe_method_button(struct power_soft_state *softsp) { ACPI_HANDLE button_obj; - UINT32 gpe_num; - ACPI_HANDLE gpe_dev; button_obj = probe_acpi_pwrbutton(); softsp->button_obj = button_obj; /* remember obj */ if ((button_obj != NULL) && - (power_get_prw_gpe(button_obj, &gpe_dev, &gpe_num) == AE_OK) && - (AcpiSetupGpeForWake(button_obj, gpe_dev, gpe_num) == AE_OK) && - (AcpiEnableGpe(gpe_dev, gpe_num) == AE_OK) && (AcpiInstallNotifyHandler(button_obj, ACPI_DEVICE_NOTIFY, power_acpi_notify_event, (void*)softsp) == AE_OK)) return (1); |