Commit 236d0e4f authored by Leo (Sunpeng) Li's avatar Leo (Sunpeng) Li Committed by Alex Deucher

drm/amd/display: Refactor max color lut entries into a macro.

Signed-off-by: default avatarLeo (Sunpeng) Li <sunpeng.li@amd.com>
Reviewed-by: default avatarHarry Wentland <Harry.Wentland@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent e277adc5
...@@ -3202,8 +3202,9 @@ static int amdgpu_dm_crtc_init(struct amdgpu_display_manager *dm, ...@@ -3202,8 +3202,9 @@ static int amdgpu_dm_crtc_init(struct amdgpu_display_manager *dm,
acrtc->base.enabled = false; acrtc->base.enabled = false;
dm->adev->mode_info.crtcs[crtc_index] = acrtc; dm->adev->mode_info.crtcs[crtc_index] = acrtc;
drm_crtc_enable_color_mgmt(&acrtc->base, 256, true, 256); drm_crtc_enable_color_mgmt(&acrtc->base, MAX_COLOR_LUT_ENTRIES,
drm_mode_crtc_set_gamma_size(&acrtc->base, 256); true, MAX_COLOR_LUT_ENTRIES);
drm_mode_crtc_set_gamma_size(&acrtc->base, MAX_COLOR_LUT_ENTRIES);
return 0; return 0;
......
...@@ -268,6 +268,8 @@ void amdgpu_dm_crtc_handle_crc_irq(struct drm_crtc *crtc); ...@@ -268,6 +268,8 @@ void amdgpu_dm_crtc_handle_crc_irq(struct drm_crtc *crtc);
#define amdgpu_dm_crtc_handle_crc_irq(x) #define amdgpu_dm_crtc_handle_crc_irq(x)
#endif #endif
#define MAX_COLOR_LUT_ENTRIES 256
void amdgpu_dm_init_color_mod(void); void amdgpu_dm_init_color_mod(void);
int amdgpu_dm_set_degamma_lut(struct drm_crtc_state *crtc_state, int amdgpu_dm_set_degamma_lut(struct drm_crtc_state *crtc_state,
struct dc_plane_state *dc_plane_state); struct dc_plane_state *dc_plane_state);
......
...@@ -39,14 +39,13 @@ void amdgpu_dm_init_color_mod(void) ...@@ -39,14 +39,13 @@ void amdgpu_dm_init_color_mod(void)
} }
#define MAX_LUT_ENTRIES 256
/* /*
* Return true if the given lut is a linear mapping of values, i.e. it acts * Return true if the given lut is a linear mapping of values, i.e. it acts
* like a bypass LUT. * like a bypass LUT.
* *
* It is considered linear if the lut represents: * It is considered linear if the lut represents:
* f(a) = (0xFF00/MAX_LUT_ENTRIES-1)a; for integer a in [0, MAX_LUT_ENTRIES) * f(a) = (0xFF00/MAX_COLOR_LUT_ENTRIES-1)a; for integer a in
* [0, MAX_COLOR_LUT_ENTRIES)
*/ */
static bool __is_lut_linear(struct drm_color_lut *lut) static bool __is_lut_linear(struct drm_color_lut *lut)
{ {
...@@ -55,12 +54,12 @@ static bool __is_lut_linear(struct drm_color_lut *lut) ...@@ -55,12 +54,12 @@ static bool __is_lut_linear(struct drm_color_lut *lut)
uint32_t expected; uint32_t expected;
int delta; int delta;
for (i = 0; i < MAX_LUT_ENTRIES; i++) { for (i = 0; i < MAX_COLOR_LUT_ENTRIES; i++) {
/* All color values should equal */ /* All color values should equal */
if ((lut[i].red != lut[i].green) || (lut[i].green != lut[i].blue)) if ((lut[i].red != lut[i].green) || (lut[i].green != lut[i].blue))
return false; return false;
expected = i * max_os / (MAX_LUT_ENTRIES-1); expected = i * max_os / (MAX_COLOR_LUT_ENTRIES-1);
/* Allow a +/-1 error. */ /* Allow a +/-1 error. */
delta = lut[i].red - expected; delta = lut[i].red - expected;
...@@ -113,7 +112,7 @@ int amdgpu_dm_set_regamma_lut(struct dm_crtc_state *crtc) ...@@ -113,7 +112,7 @@ int amdgpu_dm_set_regamma_lut(struct dm_crtc_state *crtc)
if (!gamma) if (!gamma)
return -ENOMEM; return -ENOMEM;
gamma->num_entries = MAX_LUT_ENTRIES; gamma->num_entries = MAX_COLOR_LUT_ENTRIES;
gamma->type = GAMMA_RGB_256; gamma->type = GAMMA_RGB_256;
/* Truncate, and store in dc_gamma for output tf calculation */ /* Truncate, and store in dc_gamma for output tf calculation */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment