summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authoreggz2021-07-14 22:39:38 +0200
committereggz2021-07-14 22:39:38 +0200
commita6bb9f4b30d3254599371c22c4c20f3b967d235a (patch)
tree715657ab868e53230b6645161a2a8fa8b1ec2e31
parent1cca662f0a6028acf06e2b63ca047e848af9a0a2 (diff)
downloadaur-a6bb9f4b30d3254599371c22c4c20f3b967d235a.tar.gz
Updated
-rw-r--r--.SRCINFO6
-rw-r--r--PKGBUILD6
-rw-r--r--brightness.patch105
-rw-r--r--config.x86_642
4 files changed, 112 insertions, 7 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 4a328c8a461b..5fc553874086 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,5 +1,5 @@
pkgbase = linux-amd-raven
- pkgver = 5.4.v.131
+ pkgver = 5.4.v.132
pkgrel = 1
url = https://www.kernel.org/
arch = x86_64
@@ -14,13 +14,13 @@ pkgbase = linux-amd-raven
makedepends = lzop
makedepends = gcc>=9.1
options = !strip
- source = git+https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git#tag=v5.4.131
+ source = git+https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git#tag=v5.4.132
source = config.x86_64
source = linux-amd-raven.preset
source = linux.install
source = 5010_enable-cpu-optimizations-universal.patch
sha256sums = SKIP
- sha256sums = f959022c9ae19c9d8604554b22561ee4b3652ea5b70c1e7e2ba5efc1684a4c41
+ sha256sums = 10fc9da3e2ee1c2c469032a0e68e857f7bf5c8fb1f1b62fdf8438102d1262430
sha256sums = fd220b9f47a86162247b042f06311848678f9acb64b92f716572972f3aeb3d18
sha256sums = d590e751ab4cf424b78fd0d57e53d187f07401a68c8b468d17a5f39a337dacf0
sha256sums = 63eb599f217729e42dbb0840247412b16b2bd5365725d2488a0256295f71ccda
diff --git a/PKGBUILD b/PKGBUILD
index e60de3081894..811af1ba328d 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -2,8 +2,8 @@
pkgbase=linux-amd-raven
_srcname=linux
-gitver=v5.4.131
-pkgver=5.4.v.131
+gitver=v5.4.132
+pkgver=5.4.v.132
pkgrel=1
arch=('x86_64')
url="https://www.kernel.org/"
@@ -23,7 +23,7 @@ source=("git+https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git#ta
)
sha256sums=('SKIP'
#config.x86_64
- 'f959022c9ae19c9d8604554b22561ee4b3652ea5b70c1e7e2ba5efc1684a4c41'
+ '10fc9da3e2ee1c2c469032a0e68e857f7bf5c8fb1f1b62fdf8438102d1262430'
#.preset file
'fd220b9f47a86162247b042f06311848678f9acb64b92f716572972f3aeb3d18'
#linux install file
diff --git a/brightness.patch b/brightness.patch
new file mode 100644
index 000000000000..c3cc50e70c4c
--- /dev/null
+++ b/brightness.patch
@@ -0,0 +1,105 @@
+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
diff --git a/config.x86_64 b/config.x86_64
index 0fc3c30e70ee..97f0914ed3e5 100644
--- a/config.x86_64
+++ b/config.x86_64
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 5.4.131 Kernel Configuration
+# Linux/x86 5.4.132 Kernel Configuration
#
#