From: Jackie Li <[email protected]> brightness parameter of backlight device in sysfs won't update by xrandr backlight setting.
the root cause is the brightness of backlight device is not up-to-date while setting backlight via drm set property interface. Fixed it by calling psb_set_brightness instead of operating DSI HW directly. Signed-off-by: Jackie Li <[email protected]> Signed-off-by: Hitesh K. Patel <[email protected]> --- drivers/staging/mrst/drv/mdfld_dsi_output.c | 9 ++++++--- drivers/staging/mrst/drv/psb_bl.c | 8 ++++++++ drivers/staging/mrst/drv/psb_drv.h | 1 + 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/drivers/staging/mrst/drv/mdfld_dsi_output.c b/drivers/staging/mrst/drv/mdfld_dsi_output.c index 67f5bb2..12c54e5 100644 --- a/drivers/staging/mrst/drv/mdfld_dsi_output.c +++ b/drivers/staging/mrst/drv/mdfld_dsi_output.c @@ -548,7 +548,7 @@ static int mdfld_dsi_connector_set_property(struct drm_connector * connector, uint64_t value) { struct drm_encoder * encoder = connector->encoder; - struct drm_device * dev = connector->dev; + struct backlight_device * psb_bd; PSB_DEBUG_ENTRY("\n"); @@ -601,8 +601,11 @@ static int mdfld_dsi_connector_set_property(struct drm_connector * connector, goto set_prop_error; else { PSB_DEBUG_ENTRY("set brightness to %d", (int)value); - mdfld_dsi_brightness_control(dev, 0, value); - mdfld_dsi_brightness_control(dev, 2, value); + psb_bd = psb_get_backlight_device(); + if(psb_bd) { + psb_bd->props.brightness = value; + psb_set_brightness(psb_bd); + } } } set_prop_done: diff --git a/drivers/staging/mrst/drv/psb_bl.c b/drivers/staging/mrst/drv/psb_bl.c index 60ccd9f..f837410 100644 --- a/drivers/staging/mrst/drv/psb_bl.c +++ b/drivers/staging/mrst/drv/psb_bl.c @@ -246,3 +246,11 @@ void psb_backlight_exit(void) #endif return; } + +struct backlight_device * psb_get_backlight_device(void) +{ +#ifdef CONFIG_BACKLIGHT_CLASS_DEVICE + return psb_backlight_device; +#endif + return NULL; +} diff --git a/drivers/staging/mrst/drv/psb_drv.h b/drivers/staging/mrst/drv/psb_drv.h index 8f92758..159b4e1 100644 --- a/drivers/staging/mrst/drv/psb_drv.h +++ b/drivers/staging/mrst/drv/psb_drv.h @@ -1176,6 +1176,7 @@ int psb_backlight_init(struct drm_device *dev); void psb_backlight_exit(void); int psb_set_brightness(struct backlight_device *bd); int psb_get_brightness(struct backlight_device *bd); +struct backlight_device * psb_get_backlight_device(void); /* *Debug print bits setting -- 1.7.1 _______________________________________________ MeeGo-kernel mailing list [email protected] http://lists.meego.com/listinfo/meego-kernel
