# HG changeset patch # User cegger@powermacg5.local # Date 1259435372 -3600 common acpi utility routines Add acpi_eval_set_integer(). diff -r 52e37440596e -r 714ff46748cf sys/dev/acpi/acpi.c --- a/sys/dev/acpi/acpi.c +++ b/sys/dev/acpi/acpi.c @@ -1171,6 +1171,24 @@ acpi_eval_integer(ACPI_HANDLE handle, co return rv; } +ACPI_STATUS +acpi_eval_set_integer(ACPI_HANDLE handle, const char *path, ACPI_INTEGER arg) +{ + ACPI_OBJECT param_arg; + ACPI_OBJECT_LIST param_args; + + if (handle == NULL) + handle = ACPI_ROOT_OBJECT; + + param_arg.Type = ACPI_TYPE_INTEGER; + param_arg.Integer.Value = arg; + + param_args.Count = 1; + param_args.Pointer = ¶m_arg; + + return AcpiEvaluateObject(handle, path, ¶m_args, NULL); +} + /* * acpi_eval_string: * diff -r 52e37440596e -r 714ff46748cf sys/dev/acpi/acpi_lid.c --- a/sys/dev/acpi/acpi_lid.c +++ b/sys/dev/acpi/acpi_lid.c @@ -155,17 +155,9 @@ acpilid_wake_event(device_t dv, bool ena struct acpilid_softc *sc = device_private(dv); ACPI_STATUS rv; - ACPI_OBJECT_LIST ArgList; - ACPI_OBJECT Arg; - ArgList.Count = 1; - ArgList.Pointer = &Arg; - - Arg.Type = ACPI_TYPE_INTEGER; - Arg.Integer.Value = enable ? 1 : 0; - - rv = AcpiEvaluateObject(sc->sc_node->ad_handle, "_PSW", - &ArgList, NULL); + rv = acpi_eval_set_integer(sc->sc_node->ad_handle, "_PSW", + enable ? 1 : 0); if (ACPI_FAILURE(rv) && rv != AE_NOT_FOUND) aprint_error_dev(dv, "unable to evaluate _PSW handler: %s\n", diff -r 52e37440596e -r 714ff46748cf sys/dev/acpi/acpivar.h --- a/sys/dev/acpi/acpivar.h +++ b/sys/dev/acpi/acpivar.h @@ -267,6 +267,8 @@ void acpi_set_wake_gpe(ACPI_HANDLE); void acpi_clear_wake_gpe(ACPI_HANDLE); ACPI_STATUS acpi_eval_integer(ACPI_HANDLE, const char *, ACPI_INTEGER *); +ACPI_STATUS acpi_eval_set_integer(ACPI_HANDLE handle, const char *path, + ACPI_INTEGER arg); ACPI_STATUS acpi_eval_string(ACPI_HANDLE, const char *, char **); ACPI_STATUS acpi_eval_struct(ACPI_HANDLE, const char *, ACPI_BUFFER *); diff -r 52e37440596e -r 714ff46748cf sys/dev/acpi/thinkpad_acpi.c --- a/sys/dev/acpi/thinkpad_acpi.c +++ b/sys/dev/acpi/thinkpad_acpi.c @@ -419,9 +419,7 @@ thinkpad_mask_init(thinkpad_softc_t *sc, } /* Enable hotkey events */ - params.Count = 1; - param[0].Integer.Value = 1; - rv = AcpiEvaluateObject(sc->sc_node->ad_handle, "MHKC", ¶ms, NULL); + rv = acpi_eval_set_integer(sc->sc_node->ad_handle, "MHKC", 1); if (ACPI_FAILURE(rv)) { aprint_error_dev(sc->sc_dev, "couldn't enable hotkeys: %s\n", AcpiFormatException(rv)); @@ -429,8 +427,7 @@ thinkpad_mask_init(thinkpad_softc_t *sc, } /* Claim ownership of brightness control */ - param[0].Integer.Value = 0; - (void)AcpiEvaluateObject(sc->sc_node->ad_handle, "PWMS", ¶ms, NULL); + (void)acpi_eval_set_integer(sc->sc_node->ad_handle, "PWMS", 0); return AE_OK; } @@ -601,18 +598,12 @@ thinkpad_brightness_down(device_t self) static void thinkpad_cmos(thinkpad_softc_t *sc, uint8_t cmd) { - ACPI_OBJECT param; - ACPI_OBJECT_LIST params; ACPI_STATUS rv; if (sc->sc_cmoshdl_valid == false) return; - params.Count = 1; - params.Pointer = ¶m; - param.Type = ACPI_TYPE_INTEGER; - param.Integer.Value = cmd; - rv = AcpiEvaluateObject(sc->sc_cmoshdl, NULL, ¶ms, NULL); + rv = acpi_eval_set_integer(sc->sc_cmoshdl, NULL, cmd); if (ACPI_FAILURE(rv)) aprint_error_dev(sc->sc_dev, "couldn't evalute CMOS: %s\n", AcpiFormatException(rv)); diff -r 52e37440596e -r 714ff46748cf sys/dev/acpi/wmi_acpi.c --- a/sys/dev/acpi/wmi_acpi.c +++ b/sys/dev/acpi/wmi_acpi.c @@ -541,8 +541,6 @@ static ACPI_STATUS acpi_wmi_enable(const ACPI_HANDLE hdl, const char * const oid, const bool data, const bool flag) { - ACPI_OBJECT_LIST arg; - ACPI_OBJECT obj; char path[5]; const char *str; @@ -551,13 +549,7 @@ acpi_wmi_enable(const ACPI_HANDLE hdl, c (void)strlcpy(path, str, sizeof(path)); (void)strlcat(path, oid, sizeof(path)); - obj.Type = ACPI_TYPE_INTEGER; - obj.Integer.Value = (flag != false) ? 0x01 : 0x00; - - arg.Count = 0x01; - arg.Pointer = &obj; - - return AcpiEvaluateObject(hdl, path, &arg, NULL); + return acpi_eval_set_integer(hdl, path, (flag != false) ? 0x01 : 0x00); } /* * Makes a WMI data block query (WQxx). The corresponding control