On Wed, 2008-12-31 at 10:58 +0800, Zhang Rui wrote: > On Wed, 2008-12-31 at 10:01 +0800, Matthew Garrett wrote: > > On Wed, Dec 31, 2008 at 09:43:01AM +0800, Zhang Rui wrote: > > > > > then how about this case: > > > 1. set the brightness level to 5 via sysfs I/F > > > 2. set the backlight to another level via HOTKEYS. > > > 3. setting it back to 5 doesn't work because bd->props.brightness > > > is still 5. > > > > If they're using the ACPI interface then video.c should update > > props.brightness itself. > > > > > IMO, the real problem is that bd->props.brightness doesn't reflect the > > > actual brightness. > > > > If you want the actual brightness, why aren't you reading > > actual_brightness? > > > right, that's the problem. > because IMO, we don't need the actual_brightness any more. :) > And if you agree that bd->props.brightness doesn't reflect the actual > brightness, we can see that > if (bd->props.brightness != brightness) { > bd->props.brightness = brightness; > backlight_update_status(bd); > } > doesn't make sense because "bd->props.brightness != brightness" doesn't > mean anything. > > But if bd->props.brightness does reflect the actual brightness, then do > we need "actual_brightness" any more? > > > > If they're using the ACPI interface then video.c should update > > props.brightness itself. > that also makes sense, patch attached. > But anyway, we still need some changes in the video backlight class. > right? > > From: Zhang Rui <rui.zhang@xxxxxxxxx> > Subject: always update props.brightness when brightness is changed > > always update pros.brightness no matter the backlight is changed > via procfs, hotkeys or sysfs. by the way, with this patch applied, we really don't need "actual_brightness" any more, at least for ACPI backlight class I/F. is there any chance that "actual_brightness" returns a different value from "brightness"? thanks, rui > > Sighed-off-by: Zhang Rui <rui.zhang@xxxxxxxxx> > --- > drivers/acpi/video.c | 5 +++++ > 1 file changed, 5 insertions(+) > > Index: linux-2.6/drivers/acpi/video.c > =================================================================== > --- linux-2.6.orig/drivers/acpi/video.c > +++ linux-2.6/drivers/acpi/video.c > @@ -481,6 +481,7 @@ acpi_video_device_lcd_set_level(struct a > int status = AE_OK; > union acpi_object arg0 = { ACPI_TYPE_INTEGER }; > struct acpi_object_list args = { 1, &arg0 }; > + int state; > > > arg0.integer.value = level; > @@ -489,6 +490,10 @@ acpi_video_device_lcd_set_level(struct a > status = acpi_evaluate_object(device->dev->handle, "_BCM", > &args, NULL); > device->brightness->curr = level; > + for (state = 2; state < device->brightness->count; state++) > + if (level == device->brightness->levels[state]) > + device->backlight->props.brightness = state - 2; > + > return status; > } > > > > -- > 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 -- 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