From: Joshua Ashton <jos...@froggi.es>

Detach value translation from CTM to reuse it for programming HDR
multiplier property.

Reviewed-by: Harry Wentland <harry.wentl...@amd.com>
Signed-off-by: Joshua Ashton <jos...@froggi.es>
Signed-off-by: Melissa Wen <m...@igalia.com>
---
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c  |  8 +-------
 drivers/gpu/drm/amd/display/include/fixed31_32.h     | 12 ++++++++++++
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
index 8fc715fa426c..c160dbef5224 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c
@@ -405,7 +405,6 @@ static void __drm_lut_to_dc_gamma(const struct 
drm_color_lut *lut,
 static void __drm_ctm_to_dc_matrix(const struct drm_color_ctm *ctm,
                                   struct fixed31_32 *matrix)
 {
-       int64_t val;
        int i;
 
        /*
@@ -424,12 +423,7 @@ static void __drm_ctm_to_dc_matrix(const struct 
drm_color_ctm *ctm,
                }
 
                /* gamut_remap_matrix[i] = ctm[i - floor(i/4)] */
-               val = ctm->matrix[i - (i / 4)];
-               /* If negative, convert to 2's complement. */
-               if (val & (1ULL << 63))
-                       val = -(val & ~(1ULL << 63));
-
-               matrix[i].value = val;
+               matrix[i] = dc_fixpt_from_s3132(ctm->matrix[i - (i / 4)]);
        }
 }
 
diff --git a/drivers/gpu/drm/amd/display/include/fixed31_32.h 
b/drivers/gpu/drm/amd/display/include/fixed31_32.h
index d4cf7ead1d87..84da1dd34efd 100644
--- a/drivers/gpu/drm/amd/display/include/fixed31_32.h
+++ b/drivers/gpu/drm/amd/display/include/fixed31_32.h
@@ -69,6 +69,18 @@ static const struct fixed31_32 dc_fixpt_epsilon = { 1LL };
 static const struct fixed31_32 dc_fixpt_half = { 0x80000000LL };
 static const struct fixed31_32 dc_fixpt_one = { 0x100000000LL };
 
+static inline struct fixed31_32 dc_fixpt_from_s3132(__u64 x)
+{
+       struct fixed31_32 val;
+
+       /* If negative, convert to 2's complement. */
+       if (x & (1ULL << 63))
+               x = -(x & ~(1ULL << 63));
+
+       val.value = x;
+       return val;
+}
+
 /*
  * @brief
  * Initialization routines
-- 
2.40.1

Reply via email to