diff options
author | eggz | 2021-07-14 22:40:48 +0200 |
---|---|---|
committer | eggz | 2021-07-14 22:40:48 +0200 |
commit | 2fea3131348a3633cdaaf183131589de07189671 (patch) | |
tree | 3c9ec8ea8672d403299c20eebeaac70ab89b4787 | |
parent | a6bb9f4b30d3254599371c22c4c20f3b967d235a (diff) | |
download | aur-2fea3131348a3633cdaaf183131589de07189671.tar.gz |
Updated
-rw-r--r-- | brightness.patch | 105 |
1 files changed, 0 insertions, 105 deletions
diff --git a/brightness.patch b/brightness.patch deleted file mode 100644 index c3cc50e70c4c..000000000000 --- a/brightness.patch +++ /dev/null @@ -1,105 +0,0 @@ -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 710edc70e37e..b60a763f3f95 100644 ---- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -@@ -2881,51 +2881,50 @@ static int set_backlight_via_aux(struct dc_link *link, uint32_t brightness) - return rc ? 0 : 1; - } --static u32 convert_brightness(const struct amdgpu_dm_backlight_caps *caps, -- const uint32_t user_brightness) -+static int get_brightness_range(const struct amdgpu_dm_backlight_caps *caps, -+ unsigned *min, unsigned *max) - { -- u32 min, max, conversion_pace; -- u32 brightness = user_brightness; -- - if (!caps) -- goto out; -+ return 0; -- if (!caps->aux_support) { -- max = caps->max_input_signal; -- min = caps->min_input_signal; -- /* -- * The brightness input is in the range 0-255 -- * It needs to be rescaled to be between the -- * requested min and max input signal -- * It also needs to be scaled up by 0x101 to -- * match the DC interface which has a range of -- * 0 to 0xffff -- */ -- conversion_pace = 0x101; -- brightness = -- user_brightness -- * conversion_pace -- * (max - min) -- / AMDGPU_MAX_BL_LEVEL -- + min * conversion_pace; -+ if (caps->aux_support) { -+ // Firmware limits are in nits, DC API wants millinits. -+ *max = 1000 * caps->aux_max_input_signal; -+ *min = 1000 * caps->aux_min_input_signal; - } else { -- /* TODO -- * We are doing a linear interpolation here, which is OK but -- * does not provide the optimal result. We probably want -- * something close to the Perceptual Quantizer (PQ) curve. -- */ -- max = caps->aux_max_input_signal; -- min = caps->aux_min_input_signal; -- -- brightness = (AMDGPU_MAX_BL_LEVEL - user_brightness) * min -- + user_brightness * max; -- // Multiple the value by 1000 since we use millinits -- brightness *= 1000; -- brightness = DIV_ROUND_CLOSEST(brightness, AMDGPU_MAX_BL_LEVEL); -+ // Firmware limits are 8-bit, PWM control is 16-bit. -+ *max = 0x101 * caps->max_input_signal; -+ *min = 0x101 * caps->min_input_signal; - } -+ return 1; -+} --out: -- return brightness; -+static u32 convert_brightness_from_user(const struct amdgpu_dm_backlight_caps *caps, -+ uint32_t brightness) -+{ -+ unsigned min, max; -+ -+ if (!get_brightness_range(caps, &min, &max)) -+ return brightness; -+ -+ // Rescale 0..255 to min..max -+ return min + DIV_ROUND_CLOSEST((max - min) * brightness, -+ AMDGPU_MAX_BL_LEVEL); -+} -+ -+static u32 convert_brightness_to_user(const struct amdgpu_dm_backlight_caps *caps, -+ uint32_t brightness) -+{ -+ unsigned min, max; -+ -+ if (!get_brightness_range(caps, &min, &max)) -+ return brightness; -+ -+ if (brightness < min) -+ return 0; -+ // Rescale min..max to 0..255 -+ return DIV_ROUND_CLOSEST(AMDGPU_MAX_BL_LEVEL * (brightness - min), -+ max - min); - } - static int amdgpu_dm_backlight_update_status(struct backlight_device *bd) -@@ -2941,7 +2940,7 @@ static int amdgpu_dm_backlight_update_status(struct backlight_device *bd) - link = (struct dc_link *)dm->backlight_link; -- brightness = convert_brightness(&caps, bd->props.brightness); -+ brightness = convert_brightness_from_user(&caps, bd->props.brightness); - // Change brightness based on AUX property - if (caps.aux_support) - return set_backlight_via_aux(link, brightness); -@@ -2958,7 +2957,7 @@ static int amdgpu_dm_backlight_get_brightness(struct backlight_device *bd) - if (ret == DC_ERROR_UNEXPECTED) - return bd->props.brightness; -- return ret; -+ return convert_brightness_to_user(&dm->backlight_caps, ret); - } - static const struct backlight_ops amdgpu_dm_backlight_ops = { -base-commit: bcf876870b95592b52519ed4aafcf9d95999bc9c |