[Intel-gfx] [PATCH v2 10/22] drm/i915/rkl: RKL only uses PHY_MISC for PHY's A and B

Matt Roper matthew.d.roper at intel.com
Wed May 6 16:49:51 UTC 2020


On Wed, May 06, 2020 at 06:49:06AM -0700, Srivatsa, Anusha wrote:
> 
> 
> > -----Original Message----- From: Intel-gfx
> > <intel-gfx-bounces at lists.freedesktop.org> On Behalf Of Matt Roper
> > Sent: Tuesday, May 5, 2020 4:22 AM To:
> > intel-gfx at lists.freedesktop.org Subject: [Intel-gfx] [PATCH v2
> > 10/22] drm/i915/rkl: RKL only uses PHY_MISC for PHY's A and B
> > 
> > Since the number of platforms with this restriction are growing,
> > let's separate out the platform logic into a has_phy_misc()
> > function.
> > 
> > Bspec: 50107 Signed-off-by: Matt Roper <matthew.d.roper at intel.com>
> > --- .../gpu/drm/i915/display/intel_combo_phy.c    | 30
> > +++++++++++-------- 1 file changed, 17 insertions(+), 13
> > deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_combo_phy.c
> > b/drivers/gpu/drm/i915/display/intel_combo_phy.c index
> > 9ff05ec12115..43d8784f6fa0 100644 ---
> > a/drivers/gpu/drm/i915/display/intel_combo_phy.c +++
> > b/drivers/gpu/drm/i915/display/intel_combo_phy.c @@ -181,11 +181,25
> > @@ static void cnl_combo_phys_uninit(struct drm_i915_private
> > *dev_priv) intel_de_write(dev_priv, CHICKEN_MISC_2, val);  }
> > 
> > +static bool has_phy_misc(struct drm_i915_private *i915, enum phy
> > phy) { +	/* +	 * Some platforms only expect PHY_MISC to be
> > programmed for PHY-A and +	 * PHY-B and may not even have instances
> > of the register for the +	 * other combo PHY's.  +	 */ + if
> > (IS_ELKHARTLAKE(i915) || +	    IS_ROCKETLAKE(i915)) + return phy <
> > PHY_C;
> According BSpec 50107, there is an instance of this for combo PHY C as
> well. 
> 
Yeah, there's technically an instance of the register, but the only
field in it that our driver programs has a RKL programming note that
says "This register field need only be programmed for port A and B."


Matt

> Anusha
> > +
> > +	return true;
> > +}
> > +
> >  static bool icl_combo_phy_enabled(struct drm_i915_private *dev_priv,
> >  				  enum phy phy)
> >  {
> >  	/* The PHY C added by EHL has no PHY_MISC register */
> > -	if (IS_ELKHARTLAKE(dev_priv) && phy == PHY_C)
> > +	if (!has_phy_misc(dev_priv, phy))
> >  		return intel_de_read(dev_priv, ICL_PORT_COMP_DW0(phy))
> > & COMP_INIT;
> >  	else
> >  		return !(intel_de_read(dev_priv, ICL_PHY_MISC(phy)) & @@ -
> > 317,12 +331,7 @@ static void icl_combo_phys_init(struct drm_i915_private
> > *dev_priv)
> >  			continue;
> >  		}
> > 
> > -		/*
> > -		 * Although EHL adds a combo PHY C, there's no PHY_MISC
> > -		 * register for it and no need to program the
> > -		 * DE_IO_COMP_PWR_DOWN setting on PHY C.
> > -		 */
> > -		if (IS_ELKHARTLAKE(dev_priv) && phy == PHY_C)
> > +		if (!has_phy_misc(dev_priv, phy))
> >  			goto skip_phy_misc;
> > 
> >  		/*
> > @@ -376,12 +385,7 @@ static void icl_combo_phys_uninit(struct
> > drm_i915_private *dev_priv)
> >  				 "Combo PHY %c HW state changed
> > unexpectedly\n",
> >  				 phy_name(phy));
> > 
> > -		/*
> > -		 * Although EHL adds a combo PHY C, there's no PHY_MISC
> > -		 * register for it and no need to program the
> > -		 * DE_IO_COMP_PWR_DOWN setting on PHY C.
> > -		 */
> > -		if (IS_ELKHARTLAKE(dev_priv) && phy == PHY_C)
> > +		if (!has_phy_misc(dev_priv, phy))
> >  			goto skip_phy_misc;
> > 
> >  		val = intel_de_read(dev_priv, ICL_PHY_MISC(phy));
> > --
> > 2.24.1
> > 
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Matt Roper
Graphics Software Engineer
VTT-OSGC Platform Enablement
Intel Corporation
(916) 356-2795


More information about the Intel-gfx mailing list