Commit fcccdafd authored by Kuogee Hsieh's avatar Kuogee Hsieh Committed by Abhinav Kumar
Browse files

drm/msm/dp: return correct Colorimetry for DP_TEST_DYNAMIC_RANGE_CEA case



MSA MISC0 bit 1 to 7 contains Colorimetry Indicator Field.
dp_link_get_colorimetry_config() returns wrong colorimetry value
in the DP_TEST_DYNAMIC_RANGE_CEA case in the current implementation.
Hence fix this problem by having dp_link_get_colorimetry_config()
return defined CEA RGB colorimetry value in the case of
DP_TEST_DYNAMIC_RANGE_CEA.

Changes in V2:
-- drop retrieving colorimetry from colorspace
-- drop dr = link->dp_link.test_video.test_dyn_range assignment

Changes in V3:
-- move defined MISCr0a Colorimetry vale to dp_reg.h
-- rewording commit title
-- rewording commit text to more precise describe this patch

Fixes: c943b494 ("drm/msm/dp: add displayPort driver support")
Signed-off-by: default avatarKuogee Hsieh <quic_khsieh@quicinc.com>
Reviewed-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Patchwork: https://patchwork.freedesktop.org/patch/574888/
Link: https://lore.kernel.org/r/1705526010-597-1-git-send-email-quic_khsieh@quicinc.com


Signed-off-by: default avatarAbhinav Kumar <quic_abhinavk@quicinc.com>
parent 77e8aad5
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@

#include <drm/drm_print.h>

#include "dp_reg.h"
#include "dp_link.h"
#include "dp_panel.h"

@@ -1082,7 +1083,7 @@ int dp_link_process_request(struct dp_link *dp_link)

int dp_link_get_colorimetry_config(struct dp_link *dp_link)
{
	u32 cc;
	u32 cc = DP_MISC0_COLORIMERY_CFG_LEGACY_RGB;
	struct dp_link_private *link;

	if (!dp_link) {
@@ -1096,10 +1097,11 @@ int dp_link_get_colorimetry_config(struct dp_link *dp_link)
	 * Unless a video pattern CTS test is ongoing, use RGB_VESA
	 * Only RGB_VESA and RGB_CEA supported for now
	 */
	if (dp_link_is_video_pattern_requested(link))
		cc = link->dp_link.test_video.test_dyn_range;
	else
		cc = DP_TEST_DYNAMIC_RANGE_VESA;
	if (dp_link_is_video_pattern_requested(link)) {
		if (link->dp_link.test_video.test_dyn_range &
					DP_TEST_DYNAMIC_RANGE_CEA)
			cc = DP_MISC0_COLORIMERY_CFG_CEA_RGB;
	}

	return cc;
}
+3 −0
Original line number Diff line number Diff line
@@ -143,6 +143,9 @@
#define DP_MISC0_COLORIMETRY_CFG_SHIFT		(0x00000001)
#define DP_MISC0_TEST_BITS_DEPTH_SHIFT		(0x00000005)

#define DP_MISC0_COLORIMERY_CFG_LEGACY_RGB	(0)
#define DP_MISC0_COLORIMERY_CFG_CEA_RGB		(0x04)

#define REG_DP_VALID_BOUNDARY			(0x00000030)
#define REG_DP_VALID_BOUNDARY_2			(0x00000034)