diff mbox series

drm/i915/hdmi: Prune Interlaced modes for Display >= 12

Message ID 20221013051124.1093410-1-ankit.k.nautiyal@intel.com (mailing list archive)
State New, archived
Headers show
Series drm/i915/hdmi: Prune Interlaced modes for Display >= 12 | expand

Commit Message

Nautiyal, Ankit K Oct. 13, 2022, 5:11 a.m. UTC
Defeature Display Interlace support.
Support for Interlace modes is removed from Gen 12 onwards.
For DP we do not support interlace modes (except for very old
platforms). Pruning the interlaced modes for HDMI for Display >=12.
Bspec: 50490

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

Comments

Navare, Manasi Oct. 13, 2022, 5:24 a.m. UTC | #1
On Thu, Oct 13, 2022 at 10:41:24AM +0530, Ankit Nautiyal wrote:
> Defeature Display Interlace support.
> Support for Interlace modes is removed from Gen 12 onwards.
> For DP we do not support interlace modes (except for very old
> platforms). Pruning the interlaced modes for HDMI for Display >=12.
> Bspec: 50490
> 
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>

Looks good to me

Reviewed-by: Manasi Navare <manasi.d.navare@intel.com>

Manasi

> ---
>  drivers/gpu/drm/i915/display/intel_hdmi.c | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
> index 93519fb23d9d..791bfb062c49 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
> @@ -1990,6 +1990,9 @@ intel_hdmi_mode_valid(struct drm_connector *connector,
>  	if (mode->flags & DRM_MODE_FLAG_DBLSCAN)
>  		return MODE_NO_DBLESCAN;
>  
> +	if (DISPLAY_VER(dev_priv) >= 12 && mode->flags & DRM_MODE_FLAG_INTERLACE)
> +		return MODE_NO_INTERLACE;
> +
>  	if ((mode->flags & DRM_MODE_FLAG_3D_MASK) == DRM_MODE_FLAG_3D_FRAME_PACKING)
>  		clock *= 2;
>  
> @@ -2247,6 +2250,10 @@ int intel_hdmi_compute_config(struct intel_encoder *encoder,
>  	if (adjusted_mode->flags & DRM_MODE_FLAG_DBLSCAN)
>  		return -EINVAL;
>  
> +	if (DISPLAY_VER(dev_priv) >= 12 &&
> +	    adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE)
> +		return -EINVAL;
> +
>  	pipe_config->output_format = INTEL_OUTPUT_FORMAT_RGB;
>  	pipe_config->has_hdmi_sink = intel_has_hdmi_sink(intel_hdmi,
>  							 conn_state);
> @@ -2956,7 +2963,9 @@ void intel_hdmi_init_connector(struct intel_digital_port *dig_port,
>  				    ddc);
>  	drm_connector_helper_add(connector, &intel_hdmi_connector_helper_funcs);
>  
> -	connector->interlace_allowed = true;
> +	if (DISPLAY_VER(dev_priv) < 12)
> +		connector->interlace_allowed = true;
> +
>  	connector->stereo_allowed = true;
>  
>  	if (DISPLAY_VER(dev_priv) >= 10)
> -- 
> 2.25.1
>
Ville Syrjälä Oct. 13, 2022, 10:30 a.m. UTC | #2
On Thu, Oct 13, 2022 at 10:41:24AM +0530, Ankit Nautiyal wrote:
> Defeature Display Interlace support.
> Support for Interlace modes is removed from Gen 12 onwards.
> For DP we do not support interlace modes (except for very old
> platforms).

Yes we do. Specifically G4X/VLV/CHV do not support it,
everything else does.

> Pruning the interlaced modes for HDMI for Display >=12.
> Bspec: 50490

The tagging there seems borked. Only ADLS shows it as not supported.

> 
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_hdmi.c | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
> index 93519fb23d9d..791bfb062c49 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
> @@ -1990,6 +1990,9 @@ intel_hdmi_mode_valid(struct drm_connector *connector,
>  	if (mode->flags & DRM_MODE_FLAG_DBLSCAN)
>  		return MODE_NO_DBLESCAN;
>  
> +	if (DISPLAY_VER(dev_priv) >= 12 && mode->flags & DRM_MODE_FLAG_INTERLACE)
> +		return MODE_NO_INTERLACE;
> +

These are pointless if the connector doesn't declare interlace_allowed
anyway.

>  	if ((mode->flags & DRM_MODE_FLAG_3D_MASK) == DRM_MODE_FLAG_3D_FRAME_PACKING)
>  		clock *= 2;
>  
> @@ -2247,6 +2250,10 @@ int intel_hdmi_compute_config(struct intel_encoder *encoder,
>  	if (adjusted_mode->flags & DRM_MODE_FLAG_DBLSCAN)
>  		return -EINVAL;
>  
> +	if (DISPLAY_VER(dev_priv) >= 12 &&
> +	    adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE)
> +		return -EINVAL;
> +
>  	pipe_config->output_format = INTEL_OUTPUT_FORMAT_RGB;
>  	pipe_config->has_hdmi_sink = intel_has_hdmi_sink(intel_hdmi,
>  							 conn_state);
> @@ -2956,7 +2963,9 @@ void intel_hdmi_init_connector(struct intel_digital_port *dig_port,
>  				    ddc);
>  	drm_connector_helper_add(connector, &intel_hdmi_connector_helper_funcs);
>  
> -	connector->interlace_allowed = true;
> +	if (DISPLAY_VER(dev_priv) < 12)
> +		connector->interlace_allowed = true;
> +
>  	connector->stereo_allowed = true;
>  
>  	if (DISPLAY_VER(dev_priv) >= 10)
> -- 
> 2.25.1
Nautiyal, Ankit K Oct. 13, 2022, 11:59 a.m. UTC | #3
On 10/13/2022 4:00 PM, Ville Syrjälä wrote:
> On Thu, Oct 13, 2022 at 10:41:24AM +0530, Ankit Nautiyal wrote:
>> Defeature Display Interlace support.
>> Support for Interlace modes is removed from Gen 12 onwards.
>> For DP we do not support interlace modes (except for very old
>> platforms).
> Yes we do. Specifically G4X/VLV/CHV do not support it,
> everything else does.

You are right. I think I misread the condition for DP and came to wrong 
conclusion.

Will need to add the condition for DP as well in that case.

Apologies for the confusion, and thanks for pointing it out.

>
>> Pruning the interlaced modes for HDMI for Display >=12.
>> Bspec: 50490
> The tagging there seems borked. Only ADLS shows it as not supported.

Yes the page is getting updated it seems. The HSDES for this reads 
affected platform as 12 and beyond.


>
>> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
>> ---
>>   drivers/gpu/drm/i915/display/intel_hdmi.c | 11 ++++++++++-
>>   1 file changed, 10 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
>> index 93519fb23d9d..791bfb062c49 100644
>> --- a/drivers/gpu/drm/i915/display/intel_hdmi.c
>> +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
>> @@ -1990,6 +1990,9 @@ intel_hdmi_mode_valid(struct drm_connector *connector,
>>   	if (mode->flags & DRM_MODE_FLAG_DBLSCAN)
>>   		return MODE_NO_DBLESCAN;
>>   
>> +	if (DISPLAY_VER(dev_priv) >= 12 && mode->flags & DRM_MODE_FLAG_INTERLACE)
>> +		return MODE_NO_INTERLACE;
>> +
> These are pointless if the connector doesn't declare interlace_allowed
> anyway.

You are right,  will drop this from mode valid then.

As an aside, I see, we do not set connector double_scan allowed, so  the 
above condition from mode_valid can also be removed I think.

Thanks & Regards,

Ankit


>
>>   	if ((mode->flags & DRM_MODE_FLAG_3D_MASK) == DRM_MODE_FLAG_3D_FRAME_PACKING)
>>   		clock *= 2;
>>   
>> @@ -2247,6 +2250,10 @@ int intel_hdmi_compute_config(struct intel_encoder *encoder,
>>   	if (adjusted_mode->flags & DRM_MODE_FLAG_DBLSCAN)
>>   		return -EINVAL;
>>   
>> +	if (DISPLAY_VER(dev_priv) >= 12 &&
>> +	    adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE)
>> +		return -EINVAL;
>> +
>>   	pipe_config->output_format = INTEL_OUTPUT_FORMAT_RGB;
>>   	pipe_config->has_hdmi_sink = intel_has_hdmi_sink(intel_hdmi,
>>   							 conn_state);
>> @@ -2956,7 +2963,9 @@ void intel_hdmi_init_connector(struct intel_digital_port *dig_port,
>>   				    ddc);
>>   	drm_connector_helper_add(connector, &intel_hdmi_connector_helper_funcs);
>>   
>> -	connector->interlace_allowed = true;
>> +	if (DISPLAY_VER(dev_priv) < 12)
>> +		connector->interlace_allowed = true;
>> +
>>   	connector->stereo_allowed = true;
>>   
>>   	if (DISPLAY_VER(dev_priv) >= 10)
>> -- 
>> 2.25.1
Ville Syrjälä Oct. 13, 2022, 12:10 p.m. UTC | #4
On Thu, Oct 13, 2022 at 05:29:39PM +0530, Nautiyal, Ankit K wrote:
> 
> On 10/13/2022 4:00 PM, Ville Syrjälä wrote:
> > On Thu, Oct 13, 2022 at 10:41:24AM +0530, Ankit Nautiyal wrote:
> >> Defeature Display Interlace support.
> >> Support for Interlace modes is removed from Gen 12 onwards.
> >> For DP we do not support interlace modes (except for very old
> >> platforms).
> > Yes we do. Specifically G4X/VLV/CHV do not support it,
> > everything else does.
> 
> You are right. I think I misread the condition for DP and came to wrong 
> conclusion.
> 
> Will need to add the condition for DP as well in that case.
> 
> Apologies for the confusion, and thanks for pointing it out.
> 
> >
> >> Pruning the interlaced modes for HDMI for Display >=12.
> >> Bspec: 50490
> > The tagging there seems borked. Only ADLS shows it as not supported.
> 
> Yes the page is getting updated it seems. The HSDES for this reads 
> affected platform as 12 and beyond.
> 
> 
> >
> >> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> >> ---
> >>   drivers/gpu/drm/i915/display/intel_hdmi.c | 11 ++++++++++-
> >>   1 file changed, 10 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
> >> index 93519fb23d9d..791bfb062c49 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_hdmi.c
> >> +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
> >> @@ -1990,6 +1990,9 @@ intel_hdmi_mode_valid(struct drm_connector *connector,
> >>   	if (mode->flags & DRM_MODE_FLAG_DBLSCAN)
> >>   		return MODE_NO_DBLESCAN;
> >>   
> >> +	if (DISPLAY_VER(dev_priv) >= 12 && mode->flags & DRM_MODE_FLAG_INTERLACE)
> >> +		return MODE_NO_INTERLACE;
> >> +
> > These are pointless if the connector doesn't declare interlace_allowed
> > anyway.
> 
> You are right,  will drop this from mode valid then.
> 
> As an aside, I see, we do not set connector double_scan allowed, so  the 
> above condition from mode_valid can also be removed I think.

Yeah, looks like I mistakenly added those when dealing with the
Xorg doublescan mess. Probably just forgot that doublescan_allowed
was even a thing.
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
index 93519fb23d9d..791bfb062c49 100644
--- a/drivers/gpu/drm/i915/display/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
@@ -1990,6 +1990,9 @@  intel_hdmi_mode_valid(struct drm_connector *connector,
 	if (mode->flags & DRM_MODE_FLAG_DBLSCAN)
 		return MODE_NO_DBLESCAN;
 
+	if (DISPLAY_VER(dev_priv) >= 12 && mode->flags & DRM_MODE_FLAG_INTERLACE)
+		return MODE_NO_INTERLACE;
+
 	if ((mode->flags & DRM_MODE_FLAG_3D_MASK) == DRM_MODE_FLAG_3D_FRAME_PACKING)
 		clock *= 2;
 
@@ -2247,6 +2250,10 @@  int intel_hdmi_compute_config(struct intel_encoder *encoder,
 	if (adjusted_mode->flags & DRM_MODE_FLAG_DBLSCAN)
 		return -EINVAL;
 
+	if (DISPLAY_VER(dev_priv) >= 12 &&
+	    adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE)
+		return -EINVAL;
+
 	pipe_config->output_format = INTEL_OUTPUT_FORMAT_RGB;
 	pipe_config->has_hdmi_sink = intel_has_hdmi_sink(intel_hdmi,
 							 conn_state);
@@ -2956,7 +2963,9 @@  void intel_hdmi_init_connector(struct intel_digital_port *dig_port,
 				    ddc);
 	drm_connector_helper_add(connector, &intel_hdmi_connector_helper_funcs);
 
-	connector->interlace_allowed = true;
+	if (DISPLAY_VER(dev_priv) < 12)
+		connector->interlace_allowed = true;
+
 	connector->stereo_allowed = true;
 
 	if (DISPLAY_VER(dev_priv) >= 10)