Re: [PATCH] drm/i915/adlp: Implement workaround 16013190616

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Oct 29, 2021 at 05:58:22PM +0300, Imre Deak wrote:
> On Thu, Oct 28, 2021 at 04:04:49PM -0700, José Roberto de Souza wrote:
> > New workaround added to specification, requiring bit 15 of
> > GEN8_CHICKEN_DCPR_1 to be programed before power well 1 is enabled.
> > 
> > BSpec: 54369
> > Signed-off-by: José Roberto de Souza <jose.souza@xxxxxxxxx>
> 
> Reviewed-by: Imre Deak <imre.deak@xxxxxxxxx>
> 
> The spec doesn't require it, so probably not re-enabling clock gating
> after disabling PW#1 won't cause a problem somewhere else. But if so
> the wa would be better placed in adlp_init_clock_gating().

Ah, that's called too late for this, so nvm.

> > ---
> >  drivers/gpu/drm/i915/display/intel_display_power.c | 5 +++++
> >  drivers/gpu/drm/i915/i915_reg.h                    | 7 ++++---
> >  2 files changed, 9 insertions(+), 3 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c b/drivers/gpu/drm/i915/display/intel_display_power.c
> > index 6637760d24e0c..344e3d6967020 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display_power.c
> > +++ b/drivers/gpu/drm/i915/display/intel_display_power.c
> > @@ -435,6 +435,11 @@ static void hsw_power_well_enable(struct drm_i915_private *dev_priv,
> >  
> >  		pg = DISPLAY_VER(dev_priv) >= 11 ? ICL_PW_CTL_IDX_TO_PG(pw_idx) :
> >  						 SKL_PW_CTL_IDX_TO_PG(pw_idx);
> > +
> > +		/* Wa_16013190616:adlp */
> > +		if (IS_ALDERLAKE_P(dev_priv) && pg == SKL_PG1)
> > +			intel_de_rmw(dev_priv, GEN8_CHICKEN_DCPR_1, 0, DISABLE_FLR_SRC);
> > +
> >  		/*
> >  		 * For PW1 we have to wait both for the PW0/PG0 fuse state
> >  		 * before enabling the power well and PW1/PG1's own fuse
> > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> > index fd58757e846a6..541c16aee90da 100644
> > --- a/drivers/gpu/drm/i915/i915_reg.h
> > +++ b/drivers/gpu/drm/i915/i915_reg.h
> > @@ -8310,9 +8310,10 @@ enum {
> >  #define  RESET_PCH_HANDSHAKE_ENABLE	(1 << 4)
> >  
> >  #define GEN8_CHICKEN_DCPR_1		_MMIO(0x46430)
> > -#define   SKL_SELECT_ALTERNATE_DC_EXIT	(1 << 30)
> > -#define   ICL_DELAY_PMRSP		(1 << 22)
> > -#define   MASK_WAKEMEM			(1 << 13)
> > +#define   SKL_SELECT_ALTERNATE_DC_EXIT	REG_BIT(30)
> > +#define   ICL_DELAY_PMRSP		REG_BIT(22)
> > +#define   DISABLE_FLR_SRC		REG_BIT(15)
> > +#define   MASK_WAKEMEM			REG_BIT(13)
> >  
> >  #define GEN11_CHICKEN_DCPR_2			_MMIO(0x46434)
> >  #define   DCPR_MASK_MAXLATENCY_MEMUP_CLR	REG_BIT(27)
> > -- 
> > 2.33.1
> > 



[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux