gma500@ Fix backlight range error
authorAlan Cox <alan@linux.intel.com>
Fri, 15 Jul 2011 16:35:12 +0000 (17:35 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 15 Jul 2011 17:05:08 +0000 (19:05 +0200)
If we go out of range we break the pm counts on the error path

Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/gma500/mrst_device.c

index 573142f..6707faf 100644 (file)
@@ -157,14 +157,12 @@ static int device_backlight_init(struct drm_device *dev)
        value /= bl_max_freq;
        value /= blc_pwm_precision_factor;
 
+       if (value > (unsigned long long)MRST_BLC_MAX_PWM_REG_FREQ)
+                       return -ERANGE;
+
        if (gma_power_begin(dev, false)) {
-               if (value > (unsigned long long)MRST_BLC_MAX_PWM_REG_FREQ)
-                               return -ERANGE;
-               else {
-                       REG_WRITE(BLC_PWM_CTL2,
-                                       (0x80000000 | REG_READ(BLC_PWM_CTL2)));
-                       REG_WRITE(BLC_PWM_CTL, value | (value << 16));
-               }
+               REG_WRITE(BLC_PWM_CTL2, (0x80000000 | REG_READ(BLC_PWM_CTL2)));
+               REG_WRITE(BLC_PWM_CTL, value | (value << 16));
                gma_power_end(dev);
        }
        return 0;