On Tue, 02 Feb 2016, Ramalingam C <ramalingam.c@xxxxxxxxx> wrote: > From: "Kumar, Mahesh" <mahesh1.kumar@xxxxxxxxx> > > We are re-using Mipi encoder enabled by GOP driver, but not incrementing > reference count for Audio Power domain, so audio was not working. This > patch increments the reference count during DSI init and Adds get/put in > DSI enable/disable functions as well so audio power domain will be on > when mipi is in use. Confused. DSI does not have HD audio. The codec enable calls are no-ops because DSI does not have EDID and therefore no ELD either. Hopefully the codec disable calls don't mess up things by accident. We don't need or want those calls in DSI. IMO the DSI encoder should not get/put the audio power domain either, because DSI simply does not use that. The question remains, *what* audio was failing? DP/HDMI audio? We may have problems in the power domain setup code, failing to take DSI into account or something. But I don't think this is the place to fix it. Cc Imre and Patrik. BR, Jani. > > Signed-off-by: Kumar, Mahesh <mahesh1.kumar@xxxxxxxxx> > Signed-off-by: Uma Shankar <uma.shankar@xxxxxxxxx> > Signed-off-by: Ramalingam C <ramalingam.c@xxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_dsi.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c > index 91cef35..8b43ef6 100644 > --- a/drivers/gpu/drm/i915/intel_dsi.c > +++ b/drivers/gpu/drm/i915/intel_dsi.c > @@ -461,6 +461,9 @@ static void intel_dsi_enable(struct intel_encoder *encoder) > intel_dsi_port_enable(encoder); > } > > + intel_display_power_get(dev_priv, POWER_DOMAIN_AUDIO); > + intel_audio_codec_enable(encoder); > + > intel_panel_enable_backlight(intel_dsi->attached_connector); > } > > @@ -531,11 +534,16 @@ static void intel_dsi_enable_nop(struct intel_encoder *encoder) > > static void intel_dsi_pre_disable(struct intel_encoder *encoder) > { > + struct drm_device *dev = encoder->base.dev; > + struct drm_i915_private *dev_priv = dev->dev_private; > struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); > enum port port; > > DRM_DEBUG_KMS("\n"); > > + intel_audio_codec_disable(encoder); > + intel_display_power_put(dev_priv, POWER_DOMAIN_AUDIO); > + > intel_panel_disable_backlight(intel_dsi->attached_connector); > > if (is_vid_mode(intel_dsi)) { > @@ -1236,6 +1244,11 @@ void intel_dsi_init(struct drm_device *dev) > intel_panel_init(&intel_connector->panel, fixed_mode, NULL); > intel_panel_setup_backlight(connector, INVALID_PIPE); > > + /* Enable Audio Power to fix use-count state machine */ > + port = (dev_priv->vbt.dsi.port == DVO_PORT_MIPIA) ? PORT_A : PORT_C; > + if (I915_READ(BXT_MIPI_PORT_CTRL(port)) & DPI_ENABLE) > + intel_display_power_get(dev_priv, POWER_DOMAIN_AUDIO); > + > return; > > err: -- Jani Nikula, Intel Open Source Technology Center _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx