[Meego-kernel] [PATCH 06/22] GFX: fixed HSD 3741318: xrandr and brightness parameter in sysfs are not synchronized
hitesh.k.patel at intel.com
hitesh.k.patel at intel.com
Thu Dec 16 10:51:42 PST 2010
From: Jackie Li <yaodong.li at intel.com>
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 <yaodong.li at intel.com>
Signed-off-by: Hitesh K. Patel <hitesh.k.patel at intel.com>
---
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
More information about the MeeGo-kernel
mailing list