diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/1261-drm-amd-display-Increase-precision-for-backlight-cur.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/1261-drm-amd-display-Increase-precision-for-backlight-cur.patch | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/1261-drm-amd-display-Increase-precision-for-backlight-cur.patch b/meta-amd-bsp/recipes-kernel/linux-4.19/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/meta-amd-bsp/recipes-kernel/linux-4.19/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 + |