diff options
author | Alan Cox <alan@linux.intel.com> | 2011-07-15 12:35:12 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-07-15 13:05:08 -0400 |
commit | 83c871ee2b60619d74d03eaf6f75a7d9c3cb0e45 (patch) | |
tree | e3138432e8b47d8645213a9b29b8f6f3d363da92 | |
parent | f642062fc7a6bebdd857408e7a9f678bfd2e4004 (diff) |
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 <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | drivers/staging/gma500/mrst_device.c | 12 |
1 files changed, 5 insertions, 7 deletions
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) | |||
157 | value /= bl_max_freq; | 157 | value /= bl_max_freq; |
158 | value /= blc_pwm_precision_factor; | 158 | value /= blc_pwm_precision_factor; |
159 | 159 | ||
160 | if (value > (unsigned long long)MRST_BLC_MAX_PWM_REG_FREQ) | ||
161 | return -ERANGE; | ||
162 | |||
160 | if (gma_power_begin(dev, false)) { | 163 | if (gma_power_begin(dev, false)) { |
161 | if (value > (unsigned long long)MRST_BLC_MAX_PWM_REG_FREQ) | 164 | REG_WRITE(BLC_PWM_CTL2, (0x80000000 | REG_READ(BLC_PWM_CTL2))); |
162 | return -ERANGE; | 165 | REG_WRITE(BLC_PWM_CTL, value | (value << 16)); |
163 | else { | ||
164 | REG_WRITE(BLC_PWM_CTL2, | ||
165 | (0x80000000 | REG_READ(BLC_PWM_CTL2))); | ||
166 | REG_WRITE(BLC_PWM_CTL, value | (value << 16)); | ||
167 | } | ||
168 | gma_power_end(dev); | 166 | gma_power_end(dev); |
169 | } | 167 | } |
170 | return 0; | 168 | return 0; |