drm/i915/panel: Split range scaling calculation for readiblity
Split the 64b multiplication from the division so that it doesn't sprawl across a couple of lines and use mul_u32_u32() instead of open-coding the 64b conversion. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Jani Nikula <jani.nikula@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20180214091747.12753-2-chris@chris-wilson.co.uk
This commit is contained in:
parent
e9a744fa60
commit
5af4ce7d81
|
@ -419,8 +419,9 @@ static uint32_t scale(uint32_t source_val,
|
||||||
source_val = clamp(source_val, source_min, source_max);
|
source_val = clamp(source_val, source_min, source_max);
|
||||||
|
|
||||||
/* avoid overflows */
|
/* avoid overflows */
|
||||||
target_val = DIV_ROUND_CLOSEST_ULL((uint64_t)(source_val - source_min) *
|
target_val = mul_u32_u32(source_val - source_min,
|
||||||
(target_max - target_min), source_max - source_min);
|
target_max - target_min);
|
||||||
|
target_val = DIV_ROUND_CLOSEST_ULL(target_val, source_max - source_min);
|
||||||
target_val += target_min;
|
target_val += target_min;
|
||||||
|
|
||||||
return target_val;
|
return target_val;
|
||||||
|
|
Loading…
Reference in New Issue