[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