Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx> writes: > Starting on CNL, we need to enable Audio Pin Buffer. Ok... I forgot to include ICL on this now. But first let's check if this is working on CNL and later I sent a v5. On top of that for CNL and ICL audio needs to know when we are switching cdclk. But for this work I'd like to hear from audio if they need a new hook for notification or what. And I will wait the work on audio start first before attempt to implement any new hook on our side. Thanks, Rodrigo. > > v4: Throw the exclusive hook and everything else away > and add set/unset bit along with codec awake. > > Based on few spec links that I was checking recently > I now believe that on CNL we also need to keep the codec > awake chicken bit along with PG2 enable and also add > this extra pin buffer enable. > > BSpec: 18057 > BSpec: 21352 > BSpec: 19621 > > Cc: Jani Nikula <jani.nikula@xxxxxxxxx> > Cc: Sanyog Kale <sanyog.r.kale@xxxxxxxxx> > Cc: Guneshwor Singh <guneshwor.o.singh@xxxxxxxxx> > Cc: Abhay Kumar <abhay.kumar@xxxxxxxxx> > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_reg.h | 3 +++ > drivers/gpu/drm/i915/intel_audio.c | 11 ++++++++++- > 2 files changed, 13 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h > index 65ba10ad1fe5..768e784ea241 100644 > --- a/drivers/gpu/drm/i915/i915_reg.h > +++ b/drivers/gpu/drm/i915/i915_reg.h > @@ -8424,6 +8424,9 @@ enum { > #define HSW_AUD_CHICKENBIT _MMIO(0x65f10) > #define SKL_AUD_CODEC_WAKE_SIGNAL (1 << 15) > > +#define AUDIO_PIN_BUF_CTL _MMIO(0x48414) > +#define AUDIO_PIN_BUF_ENABLE (1 << 31) > + > /* HSW Power Wells */ > #define _HSW_PWR_WELL_CTL1 0x45400 > #define _HSW_PWR_WELL_CTL2 0x45404 > diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c > index 522d54fecb53..34f18322c9bd 100644 > --- a/drivers/gpu/drm/i915/intel_audio.c > +++ b/drivers/gpu/drm/i915/intel_audio.c > @@ -729,11 +729,20 @@ static void i915_audio_component_codec_wake_override(struct device *kdev, > struct drm_i915_private *dev_priv = kdev_to_i915(kdev); > u32 tmp; > > - if (!IS_GEN9_BC(dev_priv)) > + if (!IS_GEN9_BC(dev_priv) && !IS_CANNONLAKE(dev_priv)) > return; > > i915_audio_component_get_power(kdev); > > + if (IS_CANNONLAKE(dev_priv)) { > + tmp = I915_READ(AUDIO_PIN_BUF_CTL); > + if (enable) > + tmp |= AUDIO_PIN_BUF_ENABLE; > + else > + tmp &= ~AUDIO_PIN_BUF_ENABLE; > + I915_WRITE(AUDIO_PIN_BUF_CTL, tmp); > + } > + > /* > * Enable/disable generating the codec wake signal, overriding the > * internal logic to generate the codec wake to controller. > -- > 2.13.6 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx