diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 67b547c64a3e..7505a33e00e1 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -1573,21 +1573,23 @@ static int amdgpu_dm_backlight_update_status(struct backlight_device *bd) { struct amdgpu_display_manager *dm = bl_get_data(bd); - /* - * PWM interperts 0 as 100% rather than 0% because of HW - * limitation for level 0.So limiting minimum brightness level - * to 1. - */ - if (bd->props.brightness < 1) - return 1; - /* backlight_pwm_u16_16 parameter is in unsigned 32 bit, 16 bit integer * and 16 bit fractional, where 1.0 is max backlight value. * bd->props.brightness is 8 bit format and needs to be converted by * scaling via copy lower byte to upper byte of 16 bit value. */ + uint32_t brightness = bd->props.brightness * 0x101; + + /* + * PWM interperts 0 as 100% rather than 0% because of HW + * limitation for level 0. So limiting minimum brightness level + * to 1. + */ + if (bd->props.brightness < 1) + brightness = 0x101; + if (dc_link_set_backlight_level(dm->backlight_link, - (bd->props.brightness * 0x101), 0, 0)) + brightness, 0, 0)) return 0; else return 1;