diff options
| -rw-r--r-- | drivers/gpu/drm/i915/intel_panel.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c index 0eead16aeda7..cb8cfb7e0974 100644 --- a/drivers/gpu/drm/i915/intel_panel.c +++ b/drivers/gpu/drm/i915/intel_panel.c | |||
| @@ -492,6 +492,7 @@ void intel_panel_set_backlight(struct intel_connector *connector, u32 level, | |||
| 492 | enum pipe pipe = intel_get_pipe_from_connector(connector); | 492 | enum pipe pipe = intel_get_pipe_from_connector(connector); |
| 493 | u32 freq; | 493 | u32 freq; |
| 494 | unsigned long flags; | 494 | unsigned long flags; |
| 495 | u64 n; | ||
| 495 | 496 | ||
| 496 | if (!panel->backlight.present || pipe == INVALID_PIPE) | 497 | if (!panel->backlight.present || pipe == INVALID_PIPE) |
| 497 | return; | 498 | return; |
| @@ -502,10 +503,9 @@ void intel_panel_set_backlight(struct intel_connector *connector, u32 level, | |||
| 502 | 503 | ||
| 503 | /* scale to hardware max, but be careful to not overflow */ | 504 | /* scale to hardware max, but be careful to not overflow */ |
| 504 | freq = panel->backlight.max; | 505 | freq = panel->backlight.max; |
| 505 | if (freq < max) | 506 | n = (u64)level * freq; |
| 506 | level = level * freq / max; | 507 | do_div(n, max); |
| 507 | else | 508 | level = n; |
| 508 | level = freq / max * level; | ||
| 509 | 509 | ||
| 510 | panel->backlight.level = level; | 510 | panel->backlight.level = level; |
| 511 | if (panel->backlight.device) | 511 | if (panel->backlight.device) |
