diff options
author | David Francis <David.Francis@amd.com> | 2018-11-06 11:06:04 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-11-06 14:02:06 -0500 |
commit | 694d0775ca94beccfa8332d9284c1e8b6b19ad01 (patch) | |
tree | 3232fb6ef6c16231410ba68395514c33b11c8fea /drivers/gpu/drm/amd | |
parent | 45cf8c23f3564e3f39ae09b70b9dff24acae4a56 (diff) |
drm/amd: Don't fail on backlight = 0
Amgpu's backlight update status function was
returning 1 (an error value) when the backlight
property was 0. This breaks users that assume
0 is a valid backlight value (which is a
correct assumption)
If the user passes in a backlight value of 0,
tell them everything is fine, then write a value of
1 to hardware.
Signed-off-by: David Francis <David.Francis@amd.com>
Bugzilla: https://bugs.freedesktop.org/108668
Fixes: 416615ea9578 ("drm/amd/display: set backlight level limit to 1")
Cc: Suresh.Guttula@amd.com
Cc: Harry.Wentland@amd.com
Cc: Samantham@posteo.net
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd')
-rw-r--r-- | drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 18 |
1 files changed, 10 insertions, 8 deletions
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) | |||
1573 | { | 1573 | { |
1574 | struct amdgpu_display_manager *dm = bl_get_data(bd); | 1574 | struct amdgpu_display_manager *dm = bl_get_data(bd); |
1575 | 1575 | ||
1576 | /* backlight_pwm_u16_16 parameter is in unsigned 32 bit, 16 bit integer | ||
1577 | * and 16 bit fractional, where 1.0 is max backlight value. | ||
1578 | * bd->props.brightness is 8 bit format and needs to be converted by | ||
1579 | * scaling via copy lower byte to upper byte of 16 bit value. | ||
1580 | */ | ||
1581 | uint32_t brightness = bd->props.brightness * 0x101; | ||
1582 | |||
1576 | /* | 1583 | /* |
1577 | * PWM interperts 0 as 100% rather than 0% because of HW | 1584 | * PWM interperts 0 as 100% rather than 0% because of HW |
1578 | * limitation for level 0.So limiting minimum brightness level | 1585 | * limitation for level 0. So limiting minimum brightness level |
1579 | * to 1. | 1586 | * to 1. |
1580 | */ | 1587 | */ |
1581 | if (bd->props.brightness < 1) | 1588 | if (bd->props.brightness < 1) |
1582 | return 1; | 1589 | brightness = 0x101; |
1583 | 1590 | ||
1584 | /* backlight_pwm_u16_16 parameter is in unsigned 32 bit, 16 bit integer | ||
1585 | * and 16 bit fractional, where 1.0 is max backlight value. | ||
1586 | * bd->props.brightness is 8 bit format and needs to be converted by | ||
1587 | * scaling via copy lower byte to upper byte of 16 bit value. | ||
1588 | */ | ||
1589 | if (dc_link_set_backlight_level(dm->backlight_link, | 1591 | if (dc_link_set_backlight_level(dm->backlight_link, |
1590 | (bd->props.brightness * 0x101), 0, 0)) | 1592 | brightness, 0, 0)) |
1591 | return 0; | 1593 | return 0; |
1592 | else | 1594 | else |
1593 | return 1; | 1595 | return 1; |