On Thu, 2009-07-09 at 04:16 +0800, Hector Martin wrote: > Validate the result of the _BQC or _BCQ method when querying the current > backlight level. If the value is out of range, the support for this > method is disabled. This does not break functionality as long as the > hardware doesn't touch the backlight level on it own, since the driver > will just use the last cached value. > > Acer Aspire 8930G with BIOS v1.10 (latest) has this issue. > > Signed-off-by: Hector Martin <hector@xxxxxxxxxxxxxx> > --- linux-2.6.30/drivers/acpi/video.c 2009-07-08 22:04:54.000000000 +0200 > +++ linux-2.6.30-mod/drivers/acpi/video.c 2009-07-08 22:12:19.000000000 +0200 > @@ -602,15 +605,29 @@ acpi_video_device_lcd_get_level_current( > NULL, level); > if (ACPI_SUCCESS(status)) { > if (device->brightness->flags._BQC_use_index) { > + if (*level >= (device->brightness->count - 2)) { > + ACPI_WARNING((AE_INFO, > + "%s is broken (returned %llu)", > + buf, *level)); > + device->cap._BQC = device->cap._BCQ = 0; > + *level = device->brightness->curr; > + return 0; > + } > if (device->brightness->flags._BCL_reversed) > *level = device->brightness->count > - 3 - (*level); > *level = device->brightness->levels[*level + 2]; > > } > - *level += bqc_offset_aml_bug_workaround; > - device->brightness->curr = *level; > - return 0; > + if (*level > 100) { > + ACPI_WARNING((AE_INFO, "%s is broken " > + "(returned %llu)", buf, *level)); _BQC returns a value larger than 100? is this true on your laptop? thanks, rui > + device->cap._BQC = device->cap._BCQ = 0; > + } else { > + *level += bqc_offset_aml_bug_workaround; > + device->brightness->curr = *level; > + return 0; > + } > } else { > /* Fixme: > * should we return an error or ignore this failure? > > -- 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