Re: [PATCH 87/98] Fix state reporting in tc1100-wmi

Carlos Corbacho
2009-03-28T09:16:04Z

On Saturday 28 March 2009 04:32:02 Len Brown wrote:
> From: Krzysztof Kosiński <tweenk.pl@gmail.com>
>
> The tc1100-wmi driver should print the current states of wireless LAN and
> jogdial brightness control when "cat
> /sys/devices/platform/tc1100-wmi/wireless" and "cat
> /sys/devices/platform/tc1100-wmi/jogdial" are executed, respectively. What
> actually happens is that both of those commands print 0 regardless of the
> hardware state. The cause is that wmi_query_block returns an
> ACPI_TYPE_INTEGER rather than ACPI_TYPE_BUFFER as the driver assumes.
> Additionally, the driver intends to return a jogdial state that is inverted
> with respect to the commands required to set it (e.g. it intends to return
> 1 after the jogdial file was written with 0).
>
> This patch fixes both of those issues - the commands to query the
> state now work, and should return the same state that was written.
>
> http://bugzilla.kernel.org/show_bug.cgi?id=12286
>
> Signed-off-by: Krzysztof Kosiński <tweenk.pl@gmail.com>

Acked-by: Carlos Corbacho <carlos@strangeworlds.co.uk>

> Signed-off-by: Len Brown <len.brown@intel.com>
> ---
> drivers/platform/x86/tc1100-wmi.c | 7 +++----
> 1 files changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/platform/x86/tc1100-wmi.c
> b/drivers/platform/x86/tc1100-wmi.c index b4a4aa9..4416600 100644
> --- a/drivers/platform/x86/tc1100-wmi.c
> +++ b/drivers/platform/x86/tc1100-wmi.c
> @@ -94,9 +94,8 @@ static int get_state(u32 *out, u8 instance)
> return -ENODEV;
>
> obj = (union acpi_object *) result.pointer;
> - if (obj && obj->type == ACPI_TYPE_BUFFER &&
> - obj->buffer.length == sizeof(u32)) {
> - tmp = *((u32 *) obj->buffer.pointer);
> + if (obj && obj->type == ACPI_TYPE_INTEGER) {
> + tmp = obj->integer.value;
> } else {
> tmp = 0;
> }
> @@ -109,7 +108,7 @@ static int get_state(u32 *out, u8 instance)
> *out = (tmp == 3) ? 1 : 0;
> return 0;
> case TC1100_INSTANCE_JOGDIAL:
> - *out = (tmp == 1) ? 1 : 0;
> + *out = (tmp == 1) ? 0 : 1;
> return 0;
> default:
> return -ENODEV;

--
E-Mail: carlos@strangeworlds.co.uk
Web: strangeworlds.co.uk
GPG Key ID: 0x23EE722D
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html