From: Alan Cox Date: Fri, 15 Jul 2011 16:35:12 +0000 (+0100) Subject: gma500@ Fix backlight range error X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=83c871ee2b60619d74d03eaf6f75a7d9c3cb0e45;p=linux-beck.git gma500@ Fix backlight range error If we go out of range we break the pm counts on the error path Signed-off-by: Alan Cox Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/gma500/mrst_device.c b/drivers/staging/gma500/mrst_device.c index 573142f13f83..6707fafbfa1e 100644 --- a/drivers/staging/gma500/mrst_device.c +++ b/drivers/staging/gma500/mrst_device.c @@ -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;