diff mbox series

drm/i915/tgl: Enabling DSC on Pipe A for TGL

Message ID 20190814235117.11304-1-madhumitha.tolakanahalli.pradeep@intel.com (mailing list archive)
State New, archived
Headers show
Series drm/i915/tgl: Enabling DSC on Pipe A for TGL | expand

Commit Message

Tolakanahalli Pradeep, Madhumitha Aug. 14, 2019, 11:51 p.m. UTC
Removing restriction on Pipe A as TigerLake onwards, all the pipes support DSC.

Cc: Manasi Navare <manasi.d.navare@intel.com>
Signed-off-by: Madhumitha Tolakanahalli Pradeep <madhumitha.tolakanahalli.pradeep@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dp.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

Comments

Navare, Manasi Aug. 15, 2019, 6:24 p.m. UTC | #1
On Wed, Aug 14, 2019 at 04:51:17PM -0700, Madhumitha Tolakanahalli Pradeep wrote:
> Removing restriction on Pipe A as TigerLake onwards, all the pipes support DSC.

May be elaborate this commit message a little bit something like:
"On previous platforms, DSC was not supported on Pipe A while starting TGL, its is supported
on all pipes. So remove the DSC and FEC restriction on Pipe A for TGL onwards.

> 
> Cc: Manasi Navare <manasi.d.navare@intel.com>
> Signed-off-by: Madhumitha Tolakanahalli Pradeep <madhumitha.tolakanahalli.pradeep@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_dp.c | 16 ++++++++++++----
>  1 file changed, 12 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 4884c87c8ed7..a5b50f93fac5 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -1739,8 +1739,12 @@ static bool intel_dp_source_supports_fec(struct intel_dp *intel_dp,
>  {
>  	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
>  
> -	return INTEL_GEN(dev_priv) >= 11 &&
> -		pipe_config->cpu_transcoder != TRANSCODER_A;
> +	/* On TGL, DSC is supported on all Pipes */

                   ^^^^ FEC supported on all pipes
> +	if (INTEL_GEN(dev_priv) >= 12)
> +		return true;
> +	else
> +		return INTEL_GEN(dev_priv) == 11 &&
> +			pipe_config->cpu_transcoder != TRANSCODER_A;
>  }
>  
>  static bool intel_dp_supports_fec(struct intel_dp *intel_dp,
> @@ -1755,8 +1759,12 @@ static bool intel_dp_source_supports_dsc(struct intel_dp *intel_dp,
>  {
>  	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
>  
> -	return INTEL_GEN(dev_priv) >= 10 &&
> -		pipe_config->cpu_transcoder != TRANSCODER_A;
> +	/* On TGL, DSC is supported on all Pipes */
> +	if (INTEL_GEN(dev_priv) >= 12)
> +		return true;
> +	else
> +		return (INTEL_GEN(dev_priv) == 10 || INTEL_GEN(dev_priv) == 11) &&

Why cant you just use INTEL_GEN(dev_priv) >=10 ?

Manasi

> +			pipe_config->cpu_transcoder != TRANSCODER_A;
>  }
>  
>  static bool intel_dp_supports_dsc(struct intel_dp *intel_dp,
> -- 
> 2.17.1
>
Tolakanahalli Pradeep, Madhumitha Aug. 15, 2019, 6:39 p.m. UTC | #2
On Thu, 2019-08-15 at 11:24 -0700, Manasi Navare wrote:
> On Wed, Aug 14, 2019 at 04:51:17PM -0700, Madhumitha Tolakanahalli
> Pradeep wrote:
> > Removing restriction on Pipe A as TigerLake onwards, all the pipes
> > support DSC.
> 
> May be elaborate this commit message a little bit something like:
> "On previous platforms, DSC was not supported on Pipe A while
> starting TGL, its is supported
> on all pipes. So remove the DSC and FEC restriction on Pipe A for TGL
> onwards.
> 

Alright, will update that for rev2.

> > 
> > Cc: Manasi Navare <manasi.d.navare@intel.com>
> > Signed-off-by: Madhumitha Tolakanahalli Pradeep <
> > madhumitha.tolakanahalli.pradeep@intel.com>
> > ---
> >  drivers/gpu/drm/i915/display/intel_dp.c | 16 ++++++++++++----
> >  1 file changed, 12 insertions(+), 4 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c
> > b/drivers/gpu/drm/i915/display/intel_dp.c
> > index 4884c87c8ed7..a5b50f93fac5 100644
> > --- a/drivers/gpu/drm/i915/display/intel_dp.c
> > +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> > @@ -1739,8 +1739,12 @@ static bool
> > intel_dp_source_supports_fec(struct intel_dp *intel_dp,
> >  {
> >  	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
> >  
> > -	return INTEL_GEN(dev_priv) >= 11 &&
> > -		pipe_config->cpu_transcoder != TRANSCODER_A;
> > +	/* On TGL, DSC is supported on all Pipes */
> 
>                    ^^^^ FEC supported on all pipes

Oops, will change this.

> > +	if (INTEL_GEN(dev_priv) >= 12)
> > +		return true;
> > +	else
> > +		return INTEL_GEN(dev_priv) == 11 &&
> > +			pipe_config->cpu_transcoder != TRANSCODER_A;
> >  }
> >  
> >  static bool intel_dp_supports_fec(struct intel_dp *intel_dp,
> > @@ -1755,8 +1759,12 @@ static bool
> > intel_dp_source_supports_dsc(struct intel_dp *intel_dp,
> >  {
> >  	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
> >  
> > -	return INTEL_GEN(dev_priv) >= 10 &&
> > -		pipe_config->cpu_transcoder != TRANSCODER_A;
> > +	/* On TGL, DSC is supported on all Pipes */
> > +	if (INTEL_GEN(dev_priv) >= 12)
> > +		return true;
> > +	else
> > +		return (INTEL_GEN(dev_priv) == 10 ||
> > INTEL_GEN(dev_priv) == 11) &&
> 
> Why cant you just use INTEL_GEN(dev_priv) >=10 ?

INTEL_GEN(dev_priv) >= 10 was the existing condition. With the new
condition added, there would be an overlapping set
ie INTEL_GEN(dev_priv) >= 10 would still be TRUE for GEN >= 12. Though
this wouldn't affect the logic of the code, thought it would make more
sense to sperate it out this way. 

> 
> Manasi
> 
> > +			pipe_config->cpu_transcoder != TRANSCODER_A;
> >  }
> >  
> >  static bool intel_dp_supports_dsc(struct intel_dp *intel_dp,
> > -- 
> > 2.17.1
> >
Navare, Manasi Aug. 15, 2019, 6:53 p.m. UTC | #3
On Thu, Aug 15, 2019 at 11:39:54AM -0700, Tolakanahalli Pradeep, Madhumitha wrote:
> On Thu, 2019-08-15 at 11:24 -0700, Manasi Navare wrote:
> > On Wed, Aug 14, 2019 at 04:51:17PM -0700, Madhumitha Tolakanahalli
> > Pradeep wrote:
> > > Removing restriction on Pipe A as TigerLake onwards, all the pipes
> > > support DSC.
> > 
> > May be elaborate this commit message a little bit something like:
> > "On previous platforms, DSC was not supported on Pipe A while
> > starting TGL, its is supported
> > on all pipes. So remove the DSC and FEC restriction on Pipe A for TGL
> > onwards.
> > 
> 
> Alright, will update that for rev2.
> 
> > > 
> > > Cc: Manasi Navare <manasi.d.navare@intel.com>
> > > Signed-off-by: Madhumitha Tolakanahalli Pradeep <
> > > madhumitha.tolakanahalli.pradeep@intel.com>
> > > ---
> > >  drivers/gpu/drm/i915/display/intel_dp.c | 16 ++++++++++++----
> > >  1 file changed, 12 insertions(+), 4 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c
> > > b/drivers/gpu/drm/i915/display/intel_dp.c
> > > index 4884c87c8ed7..a5b50f93fac5 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_dp.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> > > @@ -1739,8 +1739,12 @@ static bool
> > > intel_dp_source_supports_fec(struct intel_dp *intel_dp,
> > >  {
> > >  	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
> > >  
> > > -	return INTEL_GEN(dev_priv) >= 11 &&
> > > -		pipe_config->cpu_transcoder != TRANSCODER_A;
> > > +	/* On TGL, DSC is supported on all Pipes */
> > 
> >                    ^^^^ FEC supported on all pipes
> 
> Oops, will change this.
> 
> > > +	if (INTEL_GEN(dev_priv) >= 12)
> > > +		return true;
> > > +	else
> > > +		return INTEL_GEN(dev_priv) == 11 &&

Also here I think its better to use IS_GEN(dev_priv, 11)

> > > +			pipe_config->cpu_transcoder != TRANSCODER_A;
> > >  }
> > >  
> > >  static bool intel_dp_supports_fec(struct intel_dp *intel_dp,
> > > @@ -1755,8 +1759,12 @@ static bool
> > > intel_dp_source_supports_dsc(struct intel_dp *intel_dp,
> > >  {
> > >  	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
> > >  
> > > -	return INTEL_GEN(dev_priv) >= 10 &&
> > > -		pipe_config->cpu_transcoder != TRANSCODER_A;
> > > +	/* On TGL, DSC is supported on all Pipes */
> > > +	if (INTEL_GEN(dev_priv) >= 12)
> > > +		return true;
> > > +	else
> > > +		return (INTEL_GEN(dev_priv) == 10 ||
> > > INTEL_GEN(dev_priv) == 11) &&
> > 
> > Why cant you just use INTEL_GEN(dev_priv) >=10 ?
> 
> INTEL_GEN(dev_priv) >= 10 was the existing condition. With the new
> condition added, there would be an overlapping set
> ie INTEL_GEN(dev_priv) >= 10 would still be TRUE for GEN >= 12. Though
> this wouldn't affect the logic of the code, thought it would make more
> sense to sperate it out this way. 

But since we return for GEN >=12 , the only time it would fall to GEN >=10 is for 10 and 11
so that should work, or you could use IS_GEN(dev_priv, 10) || IS_GEN(dev_priv, 11)

But may be check with Lucas on what would be the preferred way

Manasi
> 
> > 
> > Manasi
> > 
> > > +			pipe_config->cpu_transcoder != TRANSCODER_A;
> > >  }
> > >  
> > >  static bool intel_dp_supports_dsc(struct intel_dp *intel_dp,
> > > -- 
> > > 2.17.1
> > >
Tolakanahalli Pradeep, Madhumitha Aug. 15, 2019, 7:07 p.m. UTC | #4
On Thu, 2019-08-15 at 11:53 -0700, Manasi Navare wrote:
> On Thu, Aug 15, 2019 at 11:39:54AM -0700, Tolakanahalli Pradeep,
> Madhumitha wrote:
> > On Thu, 2019-08-15 at 11:24 -0700, Manasi Navare wrote:
> > > On Wed, Aug 14, 2019 at 04:51:17PM -0700, Madhumitha
> > > Tolakanahalli
> > > Pradeep wrote:
> > > > Removing restriction on Pipe A as TigerLake onwards, all the
> > > > pipes
> > > > support DSC.
> > > 
> > > May be elaborate this commit message a little bit something like:
> > > "On previous platforms, DSC was not supported on Pipe A while
> > > starting TGL, its is supported
> > > on all pipes. So remove the DSC and FEC restriction on Pipe A for
> > > TGL
> > > onwards.
> > > 
> > 
> > Alright, will update that for rev2.
> > 
> > > > 
> > > > Cc: Manasi Navare <manasi.d.navare@intel.com>
> > > > Signed-off-by: Madhumitha Tolakanahalli Pradeep <
> > > > madhumitha.tolakanahalli.pradeep@intel.com>
> > > > ---
> > > >  drivers/gpu/drm/i915/display/intel_dp.c | 16 ++++++++++++----
> > > >  1 file changed, 12 insertions(+), 4 deletions(-)
> > > > 
> > > > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c
> > > > b/drivers/gpu/drm/i915/display/intel_dp.c
> > > > index 4884c87c8ed7..a5b50f93fac5 100644
> > > > --- a/drivers/gpu/drm/i915/display/intel_dp.c
> > > > +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> > > > @@ -1739,8 +1739,12 @@ static bool
> > > > intel_dp_source_supports_fec(struct intel_dp *intel_dp,
> > > >  {
> > > >  	struct drm_i915_private *dev_priv =
> > > > dp_to_i915(intel_dp);
> > > >  
> > > > -	return INTEL_GEN(dev_priv) >= 11 &&
> > > > -		pipe_config->cpu_transcoder != TRANSCODER_A;
> > > > +	/* On TGL, DSC is supported on all Pipes */
> > > 
> > >                    ^^^^ FEC supported on all pipes
> > 
> > Oops, will change this.
> > 
> > > > +	if (INTEL_GEN(dev_priv) >= 12)
> > > > +		return true;
> > > > +	else
> > > > +		return INTEL_GEN(dev_priv) == 11 &&
> 
> Also here I think its better to use IS_GEN(dev_priv, 11)

Yes, that does make it clearer, I'll change it for v2.

> 
> > > > +			pipe_config->cpu_transcoder !=
> > > > TRANSCODER_A;
> > > >  }
> > > >  
> > > >  static bool intel_dp_supports_fec(struct intel_dp *intel_dp,
> > > > @@ -1755,8 +1759,12 @@ static bool
> > > > intel_dp_source_supports_dsc(struct intel_dp *intel_dp,
> > > >  {
> > > >  	struct drm_i915_private *dev_priv =
> > > > dp_to_i915(intel_dp);
> > > >  
> > > > -	return INTEL_GEN(dev_priv) >= 10 &&
> > > > -		pipe_config->cpu_transcoder != TRANSCODER_A;
> > > > +	/* On TGL, DSC is supported on all Pipes */
> > > > +	if (INTEL_GEN(dev_priv) >= 12)
> > > > +		return true;
> > > > +	else
> > > > +		return (INTEL_GEN(dev_priv) == 10 ||
> > > > INTEL_GEN(dev_priv) == 11) &&
> > > 
> > > Why cant you just use INTEL_GEN(dev_priv) >=10 ?
> > 
> > INTEL_GEN(dev_priv) >= 10 was the existing condition. With the new
> > condition added, there would be an overlapping set
> > ie INTEL_GEN(dev_priv) >= 10 would still be TRUE for GEN >= 12.
> > Though
> > this wouldn't affect the logic of the code, thought it would make
> > more
> > sense to sperate it out this way. 
> 
> But since we return for GEN >=12 , the only time it would fall to GEN
> >=10 is for 10 and 11
> so that should work, or you could use IS_GEN(dev_priv, 10) ||
> IS_GEN(dev_priv, 11)
> 
> But may be check with Lucas on what would be the preferred way

Yeah, it wouldn't affect the logic. I debated about it for a while too.

@Lucas, what do you think is the preferred way to implement this?

> 
> Manasi
> > 
> > > 
> > > Manasi
> > > 
> > > > +			pipe_config->cpu_transcoder !=
> > > > TRANSCODER_A;
> > > >  }
> > > >  
> > > >  static bool intel_dp_supports_dsc(struct intel_dp *intel_dp,
> > > > -- 
> > > > 2.17.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 4884c87c8ed7..a5b50f93fac5 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -1739,8 +1739,12 @@  static bool intel_dp_source_supports_fec(struct intel_dp *intel_dp,
 {
 	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
 
-	return INTEL_GEN(dev_priv) >= 11 &&
-		pipe_config->cpu_transcoder != TRANSCODER_A;
+	/* On TGL, DSC is supported on all Pipes */
+	if (INTEL_GEN(dev_priv) >= 12)
+		return true;
+	else
+		return INTEL_GEN(dev_priv) == 11 &&
+			pipe_config->cpu_transcoder != TRANSCODER_A;
 }
 
 static bool intel_dp_supports_fec(struct intel_dp *intel_dp,
@@ -1755,8 +1759,12 @@  static bool intel_dp_source_supports_dsc(struct intel_dp *intel_dp,
 {
 	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
 
-	return INTEL_GEN(dev_priv) >= 10 &&
-		pipe_config->cpu_transcoder != TRANSCODER_A;
+	/* On TGL, DSC is supported on all Pipes */
+	if (INTEL_GEN(dev_priv) >= 12)
+		return true;
+	else
+		return (INTEL_GEN(dev_priv) == 10 || INTEL_GEN(dev_priv) == 11) &&
+			pipe_config->cpu_transcoder != TRANSCODER_A;
 }
 
 static bool intel_dp_supports_dsc(struct intel_dp *intel_dp,