From: Ander Conselvan De Oliveira <conselvan2@gmail.com>
To: Shubhangi Shrivastava <shubhangi.shrivastava@intel.com>,
intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 1/6] drm/i915: Splitting intel_dp_detect
Date: Wed, 13 Jan 2016 15:33:50 +0200 [thread overview]
Message-ID: <1452692030.2628.21.camel@gmail.com> (raw)
In-Reply-To: <1452684041.2628.15.camel@gmail.com>
On Wed, 2016-01-13 at 13:20 +0200, Ander Conselvan De Oliveira wrote:
> On Tue, 2016-01-05 at 18:20 +0530, Shubhangi Shrivastava wrote:
> > intel_dp_detect() is called for not just detection but
> > during modes enumeration as well. Repeating the whole
> > sequence during each of these calls is wasteful and
> > time consuming.
> > This patch moves probing for panel, DPCD read etc done in
> > intel_dp_detect() to a new function intel_dp_long_pulse().
> > Note that the behavior of intel_dp_detect() is changed to
> > report connected or disconnected depending on whether the
> > EDID is available or not.
> > This change will be required by further patches in the series
> > to avoid performing duplicated DPCD operations on hotplug.
> >
> > v2: Moved a hunk to next patch of the series.
> > Moved intel_dp_unset_edid to out. (Ander)
> > v3: Rephrased commit message and intel_dp_unset_dp() is called
> > within intel_dp_set_dp() to free the previous EDID. (Ander)
> >
> > Tested-by: Nathan D Ciobanu <nathan.d.ciobanu@intel.com>
> > Signed-off-by: Sivakumar Thulasimani <sivakumar.thulasimani@intel.com>
> > Signed-off-by: Shubhangi Shrivastava <shubhangi.shrivastava@intel.com>
> > ---
> > drivers/gpu/drm/i915/intel_dp.c | 56 +++++++++++++++++++++++++-------------
> > --
> > -
> > 1 file changed, 35 insertions(+), 21 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_dp.c
> > b/drivers/gpu/drm/i915/intel_dp.c
> > index 796e3d3..e3b4208 100644
> > --- a/drivers/gpu/drm/i915/intel_dp.c
> > +++ b/drivers/gpu/drm/i915/intel_dp.c
> > @@ -129,6 +129,7 @@ static void edp_panel_vdd_off(struct intel_dp *intel_dp,
> > bool sync);
> > static void vlv_init_panel_power_sequencer(struct intel_dp *intel_dp);
> > static void vlv_steal_power_sequencer(struct drm_device *dev,
> > enum pipe pipe);
> > +static void intel_dp_unset_edid(struct intel_dp *intel_dp);
> >
> > static unsigned int intel_dp_unused_lane_mask(int lane_count)
> > {
> > @@ -4587,6 +4588,7 @@ intel_dp_set_edid(struct intel_dp *intel_dp)
> > struct intel_connector *intel_connector = intel_dp
> > ->attached_connector;
> > struct edid *edid;
> >
> > + intel_dp_unset_edid(intel_dp);
> > edid = intel_dp_get_edid(intel_dp);
> > intel_connector->detect_edid = edid;
> >
> > @@ -4607,9 +4609,10 @@ intel_dp_unset_edid(struct intel_dp *intel_dp)
> > intel_dp->has_audio = false;
> > }
> >
> > -static enum drm_connector_status
> > -intel_dp_detect(struct drm_connector *connector, bool force)
> > +static void
> > +intel_dp_long_pulse(struct intel_connector *intel_connector)
> > {
> > + struct drm_connector *connector = &intel_connector->base;
> > struct intel_dp *intel_dp = intel_attached_dp(connector);
> > struct intel_digital_port *intel_dig_port =
> > dp_to_dig_port(intel_dp);
> > struct intel_encoder *intel_encoder = &intel_dig_port->base;
> > @@ -4619,17 +4622,6 @@ intel_dp_detect(struct drm_connector *connector, bool
> > force)
> > bool ret;
> > u8 sink_irq_vector;
> >
> > - DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n",
> > - connector->base.id, connector->name);
> > - intel_dp_unset_edid(intel_dp);
> > -
> > - if (intel_dp->is_mst) {
> > - /* MST devices are disconnected from a monitor POV */
> > - if (intel_encoder->type != INTEL_OUTPUT_EDP)
> > - intel_encoder->type = INTEL_OUTPUT_DISPLAYPORT;
> > - return connector_status_disconnected;
> > - }
> > -
> > power_domain = intel_display_port_aux_power_domain(intel_encoder);
> > intel_display_power_get(to_i915(dev), power_domain);
> >
> > @@ -4653,14 +4645,8 @@ intel_dp_detect(struct drm_connector *connector, bool
> > force)
> > intel_dp_probe_oui(intel_dp);
> >
> > ret = intel_dp_probe_mst(intel_dp);
> > - if (ret) {
> > - /* if we are in MST mode then this connector
> > - won't appear connected or have anything with EDID on it
> > */
> > - if (intel_encoder->type != INTEL_OUTPUT_EDP)
> > - intel_encoder->type = INTEL_OUTPUT_DISPLAYPORT;
>
> This deletion is new in this version of the patch. I think we still need the
> hunk above, otherwise we might not properly update the encoder type when we
> switch from an HDMI sink connected through a level shifter to an MST sink.
>
> Ander
>
>
> > - status = connector_status_disconnected;
> > + if (ret)
> > goto out;
Also, there is no call to intel_dp_unset_edid() for this case, since the code
will reach the label 'out' with status being connected. So in this case the
return value of intel_dp_detect() will depend on the stale value of
intel_dp->detect_edid.
Ander
> > - }
> >
> > /*
> > * Clearing NACK and defer counts to get their exact values
> > @@ -4691,8 +4677,36 @@ intel_dp_detect(struct drm_connector *connector, bool
> > force)
> > }
> >
> > out:
> > + if (status != connector_status_connected)
> > + intel_dp_unset_edid(intel_dp);
> > intel_display_power_put(to_i915(dev), power_domain);
> > - return status;
> > + return;
> > +}
> > +
> > +static enum drm_connector_status
> > +intel_dp_detect(struct drm_connector *connector, bool force)
> > +{
> > + struct intel_dp *intel_dp = intel_attached_dp(connector);
> > + struct intel_digital_port *intel_dig_port =
> > dp_to_dig_port(intel_dp);
> > + struct intel_encoder *intel_encoder = &intel_dig_port->base;
> > + struct intel_connector *intel_connector =
> > to_intel_connector(connector);
> > +
> > + DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n",
> > + connector->base.id, connector->name);
> > +
> > + if (intel_dp->is_mst) {
> > + /* MST devices are disconnected from a monitor POV */
> > + if (intel_encoder->type != INTEL_OUTPUT_EDP)
> > + intel_encoder->type = INTEL_OUTPUT_DISPLAYPORT;
> > + return connector_status_disconnected;
> > + }
> > +
> > + intel_dp_long_pulse(intel_dp->attached_connector);
> > +
> > + if (intel_connector->detect_edid)
> > + return connector_status_connected;
> > + else
> > + return connector_status_disconnected;
> > }
> >
> > static void
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2016-01-13 13:33 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-05 12:50 [PATCH 0/6] Fixing sink count related detection over Shubhangi Shrivastava
2016-01-05 12:50 ` [PATCH 1/6] drm/i915: Splitting intel_dp_detect Shubhangi Shrivastava
2016-01-13 11:20 ` Ander Conselvan De Oliveira
2016-01-13 13:33 ` Ander Conselvan De Oliveira [this message]
2016-01-14 13:50 ` Shubhangi Shrivastava
2016-01-15 10:07 ` Ander Conselvan De Oliveira
2016-01-18 10:24 ` [PATCH] " Shubhangi Shrivastava
2016-01-19 8:51 ` [PATCH 1/6] " Shubhangi Shrivastava
2016-01-05 12:50 ` [PATCH 2/6] drm/i915: Cleaning up intel_dp_hpd_pulse Shubhangi Shrivastava
2016-01-13 14:05 ` Ander Conselvan De Oliveira
2016-01-05 12:50 ` [PATCH 3/6] drm/i915: Splitting intel_dp_check_link_status Shubhangi Shrivastava
2016-01-13 15:04 ` Ander Conselvan De Oliveira
2016-01-18 10:52 ` [PATCH] " Shubhangi Shrivastava
2016-01-18 21:05 ` Lukas Wunner
2016-01-19 4:44 ` Thulasimani, Sivakumar
2016-01-19 8:44 ` Daniel Vetter
2016-01-19 8:59 ` Thulasimani, Sivakumar
2016-01-19 9:05 ` Daniel Vetter
2016-01-19 9:11 ` Thulasimani, Sivakumar
2016-01-19 9:55 ` [PATCH] drm/i915: Reorganizing intel_dp_check_link_status Shubhangi Shrivastava
2016-01-19 8:53 ` [PATCH 3/6] drm/i915: Splitting intel_dp_check_link_status Shubhangi Shrivastava
2016-01-05 12:50 ` [PATCH 4/6] drm/i915: Save sink_count for tracking changes to it Shubhangi Shrivastava
2016-01-14 13:00 ` Ander Conselvan De Oliveira
2016-01-19 8:56 ` Shubhangi Shrivastava
2016-01-05 12:50 ` [PATCH 5/6] drm/i915: read sink_count dpcd always Shubhangi Shrivastava
2016-01-14 13:04 ` Ander Conselvan De Oliveira
2016-01-18 12:44 ` Shubhangi Shrivastava
2016-01-18 12:46 ` Shubhangi Shrivastava
2016-01-18 12:49 ` [PATCH] drm/i915: Save sink_count for tracking changes to it and " Shubhangi Shrivastava
2016-01-18 13:00 ` [PATCH 5/6] drm/i915: " Ander Conselvan De Oliveira
2016-01-19 8:36 ` Shubhangi Shrivastava
2016-01-05 12:50 ` [PATCH 6/6] drm/i915: force full detect on sink count change Shubhangi Shrivastava
2016-01-14 13:50 ` Ander Conselvan De Oliveira
2016-01-19 8:40 ` Shubhangi Shrivastava
2016-01-05 13:49 ` ✗ warning: Fi.CI.BAT Patchwork
2016-01-18 10:49 ` ✗ Fi.CI.BAT: warning for Fixing sink count related detection over (rev6) Patchwork
2016-01-18 11:01 ` ✗ Fi.CI.BAT: failure for Fixing sink count related detection over (rev7) Patchwork
2016-01-18 13:01 ` ✗ Fi.CI.BAT: failure for Fixing sink count related detection over (rev8) Patchwork
2016-01-19 9:38 ` Ander Conselvan De Oliveira
2016-01-19 10:22 ` Shrivastava, Shubhangi
2016-01-19 10:01 ` ✗ Fi.CI.BAT: failure for Fixing sink count related detection over (rev9) Patchwork
-- strict thread matches above, loose matches on Subject: below --
2015-11-06 12:28 [PATCH 0/6] Fixing sink count related detection over Shubhangi Shrivastava
2015-11-06 12:28 ` [PATCH 1/6] drm/i915: Splitting intel_dp_detect Shubhangi Shrivastava
2015-11-16 13:40 ` Ander Conselvan De Oliveira
2015-11-17 6:17 ` Shubhangi Shrivastava
2015-11-17 9:22 ` Ander Conselvan De Oliveira
2015-11-17 11:50 ` Shubhangi Shrivastava
2015-11-02 12:55 [PATCH 0/6] Fixing sink count related detection over Shubhangi Shrivastava
2015-11-02 12:55 ` [PATCH 1/6] drm/i915: Splitting intel_dp_detect Shubhangi Shrivastava
2015-11-02 13:05 ` kbuild test robot
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=1452692030.2628.21.camel@gmail.com \
--to=conselvan2@gmail.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=shubhangi.shrivastava@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.