On Saturday 28 March 2009 04:32:02 Len Brown wrote: > From: Krzysztof Kosiński <tweenk.pl@xxxxxxxxx> > > 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@xxxxxxxxx> Acked-by: Carlos Corbacho <carlos@xxxxxxxxxxxxxxxxxxx> > Signed-off-by: Len Brown <len.brown@xxxxxxxxx> > --- > 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@xxxxxxxxxxxxxxxxxxx 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@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html