All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lyude Paul <lyude@redhat.com>
To: Jani Nikula <jani.nikula@intel.com>,
	Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>,
	intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH v3] drm/i915/mst: Use MST sideband message transactions for dpms control
Date: Wed, 04 Oct 2017 15:03:22 -0400	[thread overview]
Message-ID: <1507143802.8401.5.camel@redhat.com> (raw)
In-Reply-To: <87shez47v8.fsf@intel.com>

On Wed, 2017-10-04 at 11:47 +0300, Jani Nikula wrote:
> On Tue, 03 Oct 2017, Jani Nikula <jani.nikula@intel.com> wrote:
> > From: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> > 
> > Use the POWER_DOWN_PHY and POWER_UP_PHY sideband message transactions to
> > set power states for downstream sinks. Apart from giving us the ability
> > to set power state for individual sinks, this fixes the below test for
> > me.
> > 
> > $ xrandr --display :0 --output DP-2-2-8 --off
> > $ xrandr --display :0 --output DP-2-2-1 --off
> > $ xrandr --display :0 --output DP-2-2-8 --auto #Black screen
> > $ xrandr --display :0 --output DP-2-2-1 --auto
> > 
> > v2: Modify and document the dpms and port disable order (Ville)
> >     Add comment explaining is_mst = !crtc_state equivalence(Ville,
> > Maarten)
> > 
> > v3 by Jani: rebase
> > 
> > References: https://bugs.freedesktop.org/show_bug.cgi?id=90963
> > References: https://bugs.freedesktop.org/show_bug.cgi?id=88124
> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > Cc: Lyude <lyude@redhat.com>
> > Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> > Reviewed-by: Lyude Paul <lyude@redhat.com>
> > Acked-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> 
> Lyude, Maarten, can you confirm your rb/ack on my rebase please?
Looks good to me
> 
> BR,
> Jani.
> 
> 
> > Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
> > Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> > ---
> >  drivers/gpu/drm/i915/intel_ddi.c    | 18 ++++++++++++++----
> >  drivers/gpu/drm/i915/intel_dp_mst.c | 10 ++++++++--
> >  2 files changed, 22 insertions(+), 6 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_ddi.c
> > b/drivers/gpu/drm/i915/intel_ddi.c
> > index 65f4b6786791..511aa60e0176 100644
> > --- a/drivers/gpu/drm/i915/intel_ddi.c
> > +++ b/drivers/gpu/drm/i915/intel_ddi.c
> > @@ -2162,7 +2162,8 @@ static void intel_ddi_pre_enable_dp(struct
> > intel_encoder *encoder,
> >  		intel_prepare_dp_ddi_buffers(encoder);
> >  
> >  	intel_ddi_init_dp_buf_reg(encoder);
> > -	intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON);
> > +	if (!link_mst)
> > +		intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON);
> >  	intel_dp_start_link_train(intel_dp);
> >  	if (port != PORT_A || INTEL_GEN(dev_priv) >= 9)
> >  		intel_dp_stop_link_train(intel_dp);
> > @@ -2236,12 +2237,21 @@ static void intel_ddi_post_disable(struct
> > intel_encoder *intel_encoder,
> >  	uint32_t val;
> >  	bool wait = false;
> >  
> > -	/* old_crtc_state and old_conn_state are NULL when called from
> > DP_MST */
> > -
> >  	if (type == INTEL_OUTPUT_DP || type == INTEL_OUTPUT_EDP) {
> > +		/*
> > +		 * old_crtc_state and old_conn_state are NULL when called
> > from
> > +		 * DP_MST. The main connector associated with this port
> > is never
> > +		 * bound to a crtc for MST.
> > +		 */
> > +		bool is_mst = !old_crtc_state;
> >  		struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
> >  
> > -		intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF);
> > +		/*
> > +		 * Power down sink before disabling the port, otherwise
> > we end
> > +		 * up getting interrupts from the sink on detecting link
> > loss.
> > +		 */
> > +		if (!is_mst)
> > +			intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF);
> >  	}
> >  
> >  	val = I915_READ(DDI_BUF_CTL(port));
> > diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c
> > b/drivers/gpu/drm/i915/intel_dp_mst.c
> > index 9a396f483f8b..3c131e2544cf 100644
> > --- a/drivers/gpu/drm/i915/intel_dp_mst.c
> > +++ b/drivers/gpu/drm/i915/intel_dp_mst.c
> > @@ -162,14 +162,19 @@ static void intel_mst_post_disable_dp(struct
> > intel_encoder *encoder,
> >  
> >  	drm_dp_mst_deallocate_vcpi(&intel_dp->mst_mgr, connector->port);
> >  
> > +	/*
> > +	 * Power down mst path before disabling the port, otherwise we
> > end
> > +	 * up getting interrupts from the sink upon detecting link loss.
> > +	 */
> > +	drm_dp_send_power_updown_phy(&intel_dp->mst_mgr, connector->port,
> > +				     false);
> > +
> >  	intel_dp->active_mst_links--;
> >  
> >  	intel_mst->connector = NULL;
> >  	if (intel_dp->active_mst_links == 0) {
> >  		intel_dig_port->base.post_disable(&intel_dig_port->base,
> >  						  NULL, NULL);
> > -
> > -		intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF);
> >  	}
> >  	DRM_DEBUG_KMS("active links %d\n", intel_dp->active_mst_links);
> >  }
> > @@ -196,6 +201,7 @@ static void intel_mst_pre_enable_dp(struct
> > intel_encoder *encoder,
> >  
> >  	DRM_DEBUG_KMS("active links %d\n", intel_dp->active_mst_links);
> >  
> > +	drm_dp_send_power_updown_phy(&intel_dp->mst_mgr, connector->port, 
> > true);
> >  	if (intel_dp->active_mst_links == 0)
> >  		intel_dig_port->base.pre_enable(&intel_dig_port->base,
> >  						pipe_config, NULL);
> 
> 
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  parent reply	other threads:[~2017-10-04 19:03 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-13 20:06 [PATCH v2] drm/i915/mst: Use MST sideband message transactions for dpms control Dhinakaran Pandiyan
2017-09-13 20:27 ` ✓ Fi.CI.BAT: success for " Patchwork
2017-09-14  5:11 ` ✓ Fi.CI.IGT: " Patchwork
2017-09-14 17:37 ` [PATCH v2] " Lyude Paul
2017-09-18  8:30 ` Maarten Lankhorst
2017-09-19 17:57 ` Pandiyan, Dhinakaran
2017-10-03 14:22 ` [PATCH v3] " Jani Nikula
2017-10-04  8:47   ` Jani Nikula
2017-10-04  9:05     ` Maarten Lankhorst
2017-10-04 19:03     ` Lyude Paul [this message]
2017-10-05  6:10       ` Jani Nikula
2017-10-03 15:05 ` ✓ Fi.CI.BAT: success for drm/i915/mst: Use MST sideband message transactions for dpms control (rev2) Patchwork
2017-10-03 16:23 ` ✓ Fi.CI.IGT: " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1507143802.8401.5.camel@redhat.com \
    --to=lyude@redhat.com \
    --cc=dhinakaran.pandiyan@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=jani.nikula@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.