[01/10] drm/i915: Don't register the CRT connector when it's fused off

Submitted by Ville Syrjälä on Dec. 1, 2015, 1:08 p.m.

Details

Message ID 1448975321-20192-2-git-send-email-ville.syrjala@linux.intel.com
State New
Headers show
Series "HSW/BDW PCH modeset fixes and stuff" ( rev: 2 1 ) in Intel GFX

Not browsing as part of any series.

Commit Message

Ville Syrjälä Dec. 1, 2015, 1:08 p.m.
From: Ville Syrjälä <ville.syrjala@linux.intel.com>

LPT-H has a strap bit for fused off CRT block. Check it to see if
we should register the CRT connector or not. Supposedly this also
forces the ADAP enable bit to 0, so the detection we added in
commit 6c03a6bd0dd8 ("drm/i915: Don't register CRT connector when it's fused off")
should already catch it, but checking the fuse bit should at least
do no harm.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/i915_reg.h      | 1 +
 drivers/gpu/drm/i915/intel_display.c | 3 +++
 2 files changed, 4 insertions(+)

Patch hide | download patch | download mbox

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 487224572022..6d7ac192982d 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -7549,6 +7549,7 @@  enum skl_disp_power_wells {
 #define SFUSE_STRAP			_MMIO(0xc2014)
 #define  SFUSE_STRAP_FUSE_LOCK		(1<<13)
 #define  SFUSE_STRAP_DISPLAY_DISABLED	(1<<7)
+#define  SFUSE_STRAP_CRT_DISABLED	(1<<6)
 #define  SFUSE_STRAP_DDIB_DETECTED	(1<<2)
 #define  SFUSE_STRAP_DDIC_DETECTED	(1<<1)
 #define  SFUSE_STRAP_DDID_DETECTED	(1<<0)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 4ae490dfe2c4..c3d5a7319ef4 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -14256,6 +14256,9 @@  static bool intel_crt_present(struct drm_device *dev)
 	if (IS_CHERRYVIEW(dev))
 		return false;
 
+	if (HAS_PCH_LPT(dev) && I915_READ(SFUSE_STRAP) & SFUSE_STRAP_CRT_DISABLED)
+		return false;
+
 	if (IS_VALLEYVIEW(dev) && !dev_priv->vbt.int_crt_support)
 		return false;
 

Comments

2015-12-01 11:08 GMT-02:00  <ville.syrjala@linux.intel.com>:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> LPT-H has a strap bit for fused off CRT block. Check it to see if
> we should register the CRT connector or not. Supposedly this also
> forces the ADAP enable bit to 0, so the detection we added in
> commit 6c03a6bd0dd8 ("drm/i915: Don't register CRT connector when it's fused off")

The interesting thing is that the commit title of 6c03a6 is almost the
same as this one, the only difference being the word "the" :).

> should already catch it, but checking the fuse bit should at least
> do no harm.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/i915_reg.h      | 1 +
>  drivers/gpu/drm/i915/intel_display.c | 3 +++
>  2 files changed, 4 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index 487224572022..6d7ac192982d 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -7549,6 +7549,7 @@ enum skl_disp_power_wells {
>  #define SFUSE_STRAP                    _MMIO(0xc2014)
>  #define  SFUSE_STRAP_FUSE_LOCK         (1<<13)
>  #define  SFUSE_STRAP_DISPLAY_DISABLED  (1<<7)
> +#define  SFUSE_STRAP_CRT_DISABLED      (1<<6)
>  #define  SFUSE_STRAP_DDIB_DETECTED     (1<<2)
>  #define  SFUSE_STRAP_DDIC_DETECTED     (1<<1)
>  #define  SFUSE_STRAP_DDID_DETECTED     (1<<0)
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 4ae490dfe2c4..c3d5a7319ef4 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -14256,6 +14256,9 @@ static bool intel_crt_present(struct drm_device *dev)
>         if (IS_CHERRYVIEW(dev))
>                 return false;
>
> +       if (HAS_PCH_LPT(dev) && I915_READ(SFUSE_STRAP) & SFUSE_STRAP_CRT_DISABLED)

Bonus points if you use your new HAS_PCH_LPT_H() here.

With or without that:
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>

> +               return false;
> +
>         if (IS_VALLEYVIEW(dev) && !dev_priv->vbt.int_crt_support)
>                 return false;
>
> --
> 2.4.10
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
On Tue, Dec 01, 2015 at 05:05:42PM -0200, Paulo Zanoni wrote:
> 2015-12-01 11:08 GMT-02:00  <ville.syrjala@linux.intel.com>:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > LPT-H has a strap bit for fused off CRT block. Check it to see if
> > we should register the CRT connector or not. Supposedly this also
> > forces the ADAP enable bit to 0, so the detection we added in
> > commit 6c03a6bd0dd8 ("drm/i915: Don't register CRT connector when it's fused off")
> 
> The interesting thing is that the commit title of 6c03a6 is almost the
> same as this one, the only difference being the word "the" :).

Demonstrates a lack of imagination on the author's part?

> 
> > should already catch it, but checking the fuse bit should at least
> > do no harm.
> >
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> >  drivers/gpu/drm/i915/i915_reg.h      | 1 +
> >  drivers/gpu/drm/i915/intel_display.c | 3 +++
> >  2 files changed, 4 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> > index 487224572022..6d7ac192982d 100644
> > --- a/drivers/gpu/drm/i915/i915_reg.h
> > +++ b/drivers/gpu/drm/i915/i915_reg.h
> > @@ -7549,6 +7549,7 @@ enum skl_disp_power_wells {
> >  #define SFUSE_STRAP                    _MMIO(0xc2014)
> >  #define  SFUSE_STRAP_FUSE_LOCK         (1<<13)
> >  #define  SFUSE_STRAP_DISPLAY_DISABLED  (1<<7)
> > +#define  SFUSE_STRAP_CRT_DISABLED      (1<<6)
> >  #define  SFUSE_STRAP_DDIB_DETECTED     (1<<2)
> >  #define  SFUSE_STRAP_DDIC_DETECTED     (1<<1)
> >  #define  SFUSE_STRAP_DDID_DETECTED     (1<<0)
> > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> > index 4ae490dfe2c4..c3d5a7319ef4 100644
> > --- a/drivers/gpu/drm/i915/intel_display.c
> > +++ b/drivers/gpu/drm/i915/intel_display.c
> > @@ -14256,6 +14256,9 @@ static bool intel_crt_present(struct drm_device *dev)
> >         if (IS_CHERRYVIEW(dev))
> >                 return false;
> >
> > +       if (HAS_PCH_LPT(dev) && I915_READ(SFUSE_STRAP) & SFUSE_STRAP_CRT_DISABLED)
> 
> Bonus points if you use your new HAS_PCH_LPT_H() here.

I can. Though we already reject ULT/ULX machines earlier, so anything
that reaches this will be -H anyway.

> 
> With or without that:
> Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
> 
> > +               return false;
> > +
> >         if (IS_VALLEYVIEW(dev) && !dev_priv->vbt.int_crt_support)
> >                 return false;
> >
> > --
> > 2.4.10
> >
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
> 
> 
> 
> -- 
> Paulo Zanoni