aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/1261-drm-amd-display-Increase-precision-for-backlight-cur.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1261-drm-amd-display-Increase-precision-for-backlight-cur.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/1261-drm-amd-display-Increase-precision-for-backlight-cur.patch94
1 files changed, 94 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1261-drm-amd-display-Increase-precision-for-backlight-cur.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1261-drm-amd-display-Increase-precision-for-backlight-cur.patch
new file mode 100644
index 00000000..a6ad3ba5
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1261-drm-amd-display-Increase-precision-for-backlight-cur.patch
@@ -0,0 +1,94 @@
+From 84a7f9c2e82fa06614068be2fa13c389d75477b5 Mon Sep 17 00:00:00 2001
+From: Anthony Koo <Anthony.Koo@amd.com>
+Date: Wed, 30 Jan 2019 11:05:38 -0500
+Subject: [PATCH 1261/2940] drm/amd/display: Increase precision for backlight
+ curve
+
+[Why]
+We are currently losing precision when we convert from
+16 bit --> 8 bit --> 16 bit.
+
+[How]
+We shouldn't down convert unnecessarily and lose precision.
+Keep values at 16 bit and use directly.
+
+Signed-off-by: Anthony Koo <Anthony.Koo@amd.com>
+Reviewed-by: Aric Cyr <Aric.Cyr@amd.com>
+Acked-by: Leo Li <sunpeng.li@amd.com>
+---
+ .../amd/display/modules/power/power_helpers.c | 23 ++++---------------
+ 1 file changed, 4 insertions(+), 19 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/modules/power/power_helpers.c b/drivers/gpu/drm/amd/display/modules/power/power_helpers.c
+index 3ba87b076287..038b88221c5f 100644
+--- a/drivers/gpu/drm/amd/display/modules/power/power_helpers.c
++++ b/drivers/gpu/drm/amd/display/modules/power/power_helpers.c
+@@ -165,18 +165,11 @@ struct iram_table_v_2_2 {
+ };
+ #pragma pack(pop)
+
+-static uint16_t backlight_8_to_16(unsigned int backlight_8bit)
+-{
+- return (uint16_t)(backlight_8bit * 0x101);
+-}
+-
+ static void fill_backlight_transform_table(struct dmcu_iram_parameters params,
+ struct iram_table_v_2 *table)
+ {
+ unsigned int i;
+ unsigned int num_entries = NUM_BL_CURVE_SEGS;
+- unsigned int query_input_8bit;
+- unsigned int query_output_8bit;
+ unsigned int lut_index;
+
+ table->backlight_thresholds[0] = 0;
+@@ -194,16 +187,13 @@ static void fill_backlight_transform_table(struct dmcu_iram_parameters params,
+ * format U4.10.
+ */
+ for (i = 1; i+1 < num_entries; i++) {
+- query_input_8bit = DIV_ROUNDUP((i * 256), num_entries);
+-
+ lut_index = (params.backlight_lut_array_size - 1) * i / (num_entries - 1);
+ ASSERT(lut_index < params.backlight_lut_array_size);
+- query_output_8bit = params.backlight_lut_array[lut_index] >> 8;
+
+ table->backlight_thresholds[i] =
+- backlight_8_to_16(query_input_8bit);
++ cpu_to_be16(DIV_ROUNDUP((i * 65536), num_entries));
+ table->backlight_offsets[i] =
+- backlight_8_to_16(query_output_8bit);
++ cpu_to_be16(params.backlight_lut_array[lut_index]);
+ }
+ }
+
+@@ -212,8 +202,6 @@ static void fill_backlight_transform_table_v_2_2(struct dmcu_iram_parameters par
+ {
+ unsigned int i;
+ unsigned int num_entries = NUM_BL_CURVE_SEGS;
+- unsigned int query_input_8bit;
+- unsigned int query_output_8bit;
+ unsigned int lut_index;
+
+ table->backlight_thresholds[0] = 0;
+@@ -231,16 +219,13 @@ static void fill_backlight_transform_table_v_2_2(struct dmcu_iram_parameters par
+ * format U4.10.
+ */
+ for (i = 1; i+1 < num_entries; i++) {
+- query_input_8bit = DIV_ROUNDUP((i * 256), num_entries);
+-
+ lut_index = (params.backlight_lut_array_size - 1) * i / (num_entries - 1);
+ ASSERT(lut_index < params.backlight_lut_array_size);
+- query_output_8bit = params.backlight_lut_array[lut_index] >> 8;
+
+ table->backlight_thresholds[i] =
+- backlight_8_to_16(query_input_8bit);
++ cpu_to_be16(DIV_ROUNDUP((i * 65536), num_entries));
+ table->backlight_offsets[i] =
+- backlight_8_to_16(query_output_8bit);
++ cpu_to_be16(params.backlight_lut_array[lut_index]);
+ }
+ }
+
+--
+2.17.1
+