diff mbox series

[04/13] drm/i915/dp: Configure PCON for conversion of output_format to YCbCr444

Message ID 20230331101613.936776-5-ankit.k.nautiyal@intel.com (mailing list archive)
State New, archived
Headers show
Series Handle BPC for HDMI2.1 PCON without DSC1.2 sink and other fixes | expand

Commit Message

Nautiyal, Ankit K March 31, 2023, 10:16 a.m. UTC
Handle the case with DP to HDMI PCON, where sink_format is set to YCbCr444.
In that case PCON is required to be configured to convert from given
output_format to YCbCR444.

Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dp.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

Comments

Ville Syrjälä April 24, 2023, 12:32 p.m. UTC | #1
On Fri, Mar 31, 2023 at 03:46:04PM +0530, Ankit Nautiyal wrote:
> Handle the case with DP to HDMI PCON, where sink_format is set to YCbCr444.
> In that case PCON is required to be configured to convert from given
> output_format to YCbCR444.
> 
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_dp.c | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 837532952936..c3f3003c52ca 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -2862,6 +2862,22 @@ void intel_dp_configure_protocol_converter(struct intel_dp *intel_dp,
>  			MISSING_CASE(crtc_state->output_format);
>  			break;
>  		}
> +	} else if (crtc_state->sink_format == INTEL_OUTPUT_FORMAT_YCBCR444) {
> +		switch (crtc_state->output_format) {
> +		case INTEL_OUTPUT_FORMAT_YCBCR420:
> +			drm_WARN(&i915->drm,
> +				 crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420,
> +				 "Cannot convert YCbCr420->YCbCr444\n");

Since this should never happen I think we can drop this
and just let the MISSING_CASE() catch it.

with that
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> +			break;
> +		case INTEL_OUTPUT_FORMAT_YCBCR444:
> +			break;
> +		case INTEL_OUTPUT_FORMAT_RGB:
> +			rgb_to_ycbcr = true;
> +			break;
> +		default:
> +			MISSING_CASE(crtc_state->output_format);
> +			break;
> +		}
>  	}
>  
>  	tmp = ycbcr444_to_420 ? DP_CONVERSION_TO_YCBCR420_ENABLE : 0;
> -- 
> 2.25.1
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 837532952936..c3f3003c52ca 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -2862,6 +2862,22 @@  void intel_dp_configure_protocol_converter(struct intel_dp *intel_dp,
 			MISSING_CASE(crtc_state->output_format);
 			break;
 		}
+	} else if (crtc_state->sink_format == INTEL_OUTPUT_FORMAT_YCBCR444) {
+		switch (crtc_state->output_format) {
+		case INTEL_OUTPUT_FORMAT_YCBCR420:
+			drm_WARN(&i915->drm,
+				 crtc_state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420,
+				 "Cannot convert YCbCr420->YCbCr444\n");
+			break;
+		case INTEL_OUTPUT_FORMAT_YCBCR444:
+			break;
+		case INTEL_OUTPUT_FORMAT_RGB:
+			rgb_to_ycbcr = true;
+			break;
+		default:
+			MISSING_CASE(crtc_state->output_format);
+			break;
+		}
 	}
 
 	tmp = ycbcr444_to_420 ? DP_CONVERSION_TO_YCBCR420_ENABLE : 0;