Commit 603b83ba authored by Charlene Liu's avatar Charlene Liu Committed by Alex Deucher

drm/amd/display: correct DP is always in full range or bt609

Signed-off-by: default avatarCharlene Liu <charlene.liu@amd.com>
Reviewed-by: default avatarKrunoslav Kovac <Krunoslav.Kovac@amd.com>
Acked-by: default avatarHarry Wentland <harry.wentland@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 75dbba34
...@@ -300,6 +300,8 @@ static void dce110_stream_encoder_dp_set_stream_attribute( ...@@ -300,6 +300,8 @@ static void dce110_stream_encoder_dp_set_stream_attribute(
uint32_t h_back_porch; uint32_t h_back_porch;
uint8_t synchronous_clock = 0; /* asynchronous mode */ uint8_t synchronous_clock = 0; /* asynchronous mode */
uint8_t colorimetry_bpc; uint8_t colorimetry_bpc;
uint8_t dynamic_range_rgb = 0; /*full range*/
uint8_t dynamic_range_ycbcr = 1; /*bt709*/
#endif #endif
struct dce110_stream_encoder *enc110 = DCE110STRENC_FROM_STRENC(enc); struct dce110_stream_encoder *enc110 = DCE110STRENC_FROM_STRENC(enc);
...@@ -380,11 +382,7 @@ static void dce110_stream_encoder_dp_set_stream_attribute( ...@@ -380,11 +382,7 @@ static void dce110_stream_encoder_dp_set_stream_attribute(
} }
/* set dynamic range and YCbCr range */ /* set dynamic range and YCbCr range */
if (enc110->se_mask->DP_DYN_RANGE && enc110->se_mask->DP_YCBCR_RANGE)
REG_UPDATE_2(
DP_PIXEL_FORMAT,
DP_DYN_RANGE, 0,
DP_YCBCR_RANGE, 0);
#if defined(CONFIG_DRM_AMD_DC_DCN1_0) #if defined(CONFIG_DRM_AMD_DC_DCN1_0)
switch (crtc_timing->display_color_depth) { switch (crtc_timing->display_color_depth) {
...@@ -413,29 +411,37 @@ static void dce110_stream_encoder_dp_set_stream_attribute( ...@@ -413,29 +411,37 @@ static void dce110_stream_encoder_dp_set_stream_attribute(
case COLOR_SPACE_SRGB: case COLOR_SPACE_SRGB:
misc0 = misc0 | 0x0; misc0 = misc0 | 0x0;
misc1 = misc1 & ~0x80; /* bit7 = 0*/ misc1 = misc1 & ~0x80; /* bit7 = 0*/
dynamic_range_rgb = 0; /*full range*/
break; break;
case COLOR_SPACE_SRGB_LIMITED: case COLOR_SPACE_SRGB_LIMITED:
misc0 = misc0 | 0x8; /* bit3=1 */ misc0 = misc0 | 0x8; /* bit3=1 */
misc1 = misc1 & ~0x80; /* bit7 = 0*/ misc1 = misc1 & ~0x80; /* bit7 = 0*/
dynamic_range_rgb = 1; /*limited range*/
break; break;
case COLOR_SPACE_YCBCR601: case COLOR_SPACE_YCBCR601:
case COLOR_SPACE_YCBCR601_LIMITED:
misc0 = misc0 | 0x8; /* bit3=1, bit4=0 */ misc0 = misc0 | 0x8; /* bit3=1, bit4=0 */
misc1 = misc1 & ~0x80; /* bit7 = 0*/ misc1 = misc1 & ~0x80; /* bit7 = 0*/
dynamic_range_ycbcr = 0; /*bt601*/
if (crtc_timing->pixel_encoding == PIXEL_ENCODING_YCBCR422) if (crtc_timing->pixel_encoding == PIXEL_ENCODING_YCBCR422)
misc0 = misc0 | 0x2; /* bit2=0, bit1=1 */ misc0 = misc0 | 0x2; /* bit2=0, bit1=1 */
else if (crtc_timing->pixel_encoding == PIXEL_ENCODING_YCBCR444) else if (crtc_timing->pixel_encoding == PIXEL_ENCODING_YCBCR444)
misc0 = misc0 | 0x4; /* bit2=1, bit1=0 */ misc0 = misc0 | 0x4; /* bit2=1, bit1=0 */
break; break;
case COLOR_SPACE_YCBCR709: case COLOR_SPACE_YCBCR709:
case COLOR_SPACE_YCBCR709_LIMITED:
misc0 = misc0 | 0x18; /* bit3=1, bit4=1 */ misc0 = misc0 | 0x18; /* bit3=1, bit4=1 */
misc1 = misc1 & ~0x80; /* bit7 = 0*/ misc1 = misc1 & ~0x80; /* bit7 = 0*/
dynamic_range_ycbcr = 1; /*bt709*/
if (crtc_timing->pixel_encoding == PIXEL_ENCODING_YCBCR422) if (crtc_timing->pixel_encoding == PIXEL_ENCODING_YCBCR422)
misc0 = misc0 | 0x2; /* bit2=0, bit1=1 */ misc0 = misc0 | 0x2; /* bit2=0, bit1=1 */
else if (crtc_timing->pixel_encoding == PIXEL_ENCODING_YCBCR444) else if (crtc_timing->pixel_encoding == PIXEL_ENCODING_YCBCR444)
misc0 = misc0 | 0x4; /* bit2=1, bit1=0 */ misc0 = misc0 | 0x4; /* bit2=1, bit1=0 */
break; break;
case COLOR_SPACE_2020_RGB_FULLRANGE:
case COLOR_SPACE_2020_RGB_LIMITEDRANGE: case COLOR_SPACE_2020_RGB_LIMITEDRANGE:
dynamic_range_rgb = 1; /*limited range*/
break;
case COLOR_SPACE_2020_RGB_FULLRANGE:
case COLOR_SPACE_2020_YCBCR: case COLOR_SPACE_2020_YCBCR:
case COLOR_SPACE_XR_RGB: case COLOR_SPACE_XR_RGB:
case COLOR_SPACE_MSREF_SCRGB: case COLOR_SPACE_MSREF_SCRGB:
...@@ -443,8 +449,6 @@ static void dce110_stream_encoder_dp_set_stream_attribute( ...@@ -443,8 +449,6 @@ static void dce110_stream_encoder_dp_set_stream_attribute(
case COLOR_SPACE_DCIP3: case COLOR_SPACE_DCIP3:
case COLOR_SPACE_XV_YCC_709: case COLOR_SPACE_XV_YCC_709:
case COLOR_SPACE_XV_YCC_601: case COLOR_SPACE_XV_YCC_601:
case COLOR_SPACE_YCBCR601_LIMITED:
case COLOR_SPACE_YCBCR709_LIMITED:
case COLOR_SPACE_DISPLAYNATIVE: case COLOR_SPACE_DISPLAYNATIVE:
case COLOR_SPACE_DOLBYVISION: case COLOR_SPACE_DOLBYVISION:
case COLOR_SPACE_APPCTRL: case COLOR_SPACE_APPCTRL:
...@@ -453,6 +457,11 @@ static void dce110_stream_encoder_dp_set_stream_attribute( ...@@ -453,6 +457,11 @@ static void dce110_stream_encoder_dp_set_stream_attribute(
/* do nothing */ /* do nothing */
break; break;
} }
if (enc110->se_mask->DP_DYN_RANGE && enc110->se_mask->DP_YCBCR_RANGE)
REG_UPDATE_2(
DP_PIXEL_FORMAT,
DP_DYN_RANGE, dynamic_range_rgb,
DP_YCBCR_RANGE, dynamic_range_ycbcr);
#if defined(CONFIG_DRM_AMD_DC_DCN1_0) #if defined(CONFIG_DRM_AMD_DC_DCN1_0)
if (REG(DP_MSA_COLORIMETRY)) if (REG(DP_MSA_COLORIMETRY))
......
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