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

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

parent e277adc5
Loading
Loading
Loading
Loading
+3 −2
Original line number Original line Diff line number Diff line
@@ -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;


+2 −0
Original line number Original line Diff line number Diff line
@@ -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);
+5 −6
Original line number Original line Diff line number Diff line
@@ -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)
	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)
	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 */