[Intel-gfx] [PATCH 4/6] drm/i915/icl: Gate clocks for DSI
Imre Deak
imre.deak at intel.com
Tue Nov 27 14:49:15 UTC 2018
On Tue, Nov 27, 2018 at 04:06:43PM +0200, Imre Deak wrote:
> On Tue, Nov 27, 2018 at 03:09:06PM +0530, Vandita Kulkarni wrote:
> > From: Madhav Chauhan <madhav.chauhan at intel.com>
> >
> > As per BSPEC, depending on the DSI transcoder being used,
> > DDI clock for the associated port should be gated. This
> > patch does the same.
> >
> > Signed-off-by: Madhav Chauhan <madhav.chauhan at intel.com>
> > Signed-off-by: Vandita Kulkarni <vandita.kulkarni at intel.com>
> > ---
> > drivers/gpu/drm/i915/icl_dsi.c | 20 ++++++++++++++++++++
> > 1 file changed, 20 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/icl_dsi.c b/drivers/gpu/drm/i915/icl_dsi.c
> > index ec22b2e..fe4efc7 100644
> > --- a/drivers/gpu/drm/i915/icl_dsi.c
> > +++ b/drivers/gpu/drm/i915/icl_dsi.c
> > @@ -536,6 +536,23 @@ static void gen11_dsi_setup_dphy_timings(struct intel_encoder *encoder)
> > }
> > }
> >
> > +static void gen11_dsi_gate_clocks(struct intel_encoder *encoder)
> > +{
> > + struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
> > + struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base);
> > + u32 tmp;
> > + enum port port;
> > +
> > + mutex_lock(&dev_priv->dpll_lock);
> > + tmp = I915_READ(DPCLKA_CFGCR0_ICL);
> > + for_each_dsi_port(port, intel_dsi->ports) {
> > + tmp |= DPCLKA_CFGCR0_DDI_CLK_OFF(port);
> > + }
> > +
> > + I915_WRITE(DPCLKA_CFGCR0_ICL, tmp);
> > + mutex_unlock(&dev_priv->dpll_lock);
> > +}
> > +
> > static void
> > gen11_dsi_configure_transcoder(struct intel_encoder *encoder,
> > const struct intel_crtc_state *pipe_config)
> > @@ -883,6 +900,9 @@ static void gen11_dsi_setup_timeouts(struct intel_encoder *encoder)
> >
> > /* Step (4h, 4i, 4j, 4k): Configure transcoder */
> > gen11_dsi_configure_transcoder(encoder, pipe_config);
> > +
> > + /* Step 4l: Gate DDI clocks */
> > + gen11_dsi_gate_clocks(encoder);
>
> I think the default case should be that DDI clocks are gated and here we
> shouldn't do anything.
>
> The DDI clocks will get then ungated only when enabling a DDI encoder in
> icl_map_plls_to_ports().
Err, scratch the above. Reading the spec again and trying it on a DSI
machine it seems we do have to keep the DDI clock ungated up to this
point. So that's fine, we just have to make sure not to ungate/gate it
also in icl_map_plls_to_ports/icl_unmap_plls_to_ports.
> There we should also make sure we don't ungate the clock for a DSI
> encoder.
>
> I also have a patch to sanity check the clock gating wrt. DSI too during
> HW readout, will send that today.
>
> > }
> >
> > static void gen11_dsi_powerup_panel(struct intel_encoder *encoder)
> > --
> > 1.9.1
> >
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
More information about the Intel-gfx
mailing list