gfx: drv: fix display backlight PWM duty cycle setting
authorJani Nikula <jani.nikula@intel.com>
Fri, 11 Nov 2011 13:43:10 +0000 (15:43 +0200)
committerMarkus Lehtonen <markus.lehtonen@linux.intel.com>
Tue, 3 Jul 2012 09:28:35 +0000 (12:28 +0300)
Fix broken PWM calculation. The PWM register accepts values between
0x00...0x63, corresponding to pulse duty cycles of 0...99%.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Tested-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
drivers/staging/mrst/drv/mdfld_dsi_output.c

index 294c392..015fe21 100644 (file)
@@ -206,20 +206,20 @@ void mdfld_dsi_brightness_init (struct mdfld_dsi_config * dsi_config, int pipe)
  * Manage the mipi display brightness.
  * TODO: refine this interface later
  */
-#define BACKLIGHT_DUTY_FACTOR          0x63
-#define MIN_BACKLIGHT_DUTY_FACTOR      0x10
 #define PWM0DUTYCYCLE                  0x67
 static void tc35876x_brightness_control(struct drm_device *dev, int pipe,
                                        int level)
 {
        int ret;
-       int duty_val;
+       u8 duty_val;
 
-       duty_val = min(MIN_BACKLIGHT_DUTY_FACTOR,
-               level * BACKLIGHT_DUTY_FACTOR / MDFLD_DSI_BRIGHTNESS_MAX_LEVEL);
+       level = clamp(level, 0, MDFLD_DSI_BRIGHTNESS_MAX_LEVEL);
 
-       printk(KERN_ALERT "[DISPLAY] %s: level = %d, duty_val = %d\n", __func__,
-               level, duty_val);
+       /* PWM duty cycle 0x00...0x63 corresponds to 0...99% */
+       duty_val = level * 0x63 / MDFLD_DSI_BRIGHTNESS_MAX_LEVEL;
+
+       printk(KERN_DEBUG "[DISPLAY] %s: level = %d, duty_val = %d\n", __func__,
+              level, duty_val);
 
        ret = intel_scu_ipc_iowrite8(PWM0DUTYCYCLE, duty_val);
        if (ret)