diff for duplicates of <20161213130301.GJ31595@intel.com> diff --git a/a/1.txt b/N1/1.txt index 904d996..59b7745 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,6 +1,6 @@ On Mon, Dec 12, 2016 at 11:06:19PM +0200, Imre Deak wrote: > On Mon, 2016-12-12 at 16:21 +0200, ville.syrjala@linux.intel.com wrote: -> > From: Ville Syrjälä <ville.syrjala@linux.intel.com> +> > From: Ville Syrj�l� <ville.syrjala@linux.intel.com> > > > > VLV apparently gets upset if the PPS for a pipe currently driving an > > external DP port gets used for VDD stuff on another eDP port. The DP @@ -18,42 +18,42 @@ On Mon, Dec 12, 2016 at 11:06:19PM +0200, Imre Deak wrote: > > AUX communication to occur in parallel for multiple DP ports. > > > > Cc: stable@vger.kernel.org -> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> +> > Signed-off-by: Ville Syrj�l� <ville.syrjala@linux.intel.com> > > --- -> > drivers/gpu/drm/i915/intel_dp.c | 151 +++++++++++++++++++++++++++------------ -> > drivers/gpu/drm/i915/intel_drv.h | 6 ++ -> > 2 files changed, 110 insertions(+), 47 deletions(-) +> > �drivers/gpu/drm/i915/intel_dp.c��| 151 +++++++++++++++++++++++++++------------ +> > �drivers/gpu/drm/i915/intel_drv.h |���6 ++ +> > �2 files changed, 110 insertions(+), 47 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c > > index db75bb924e48..0da7d528c1a9 100644 > > --- a/drivers/gpu/drm/i915/intel_dp.c > > +++ b/drivers/gpu/drm/i915/intel_dp.c > > @@ -454,14 +454,52 @@ vlv_power_sequencer_kick(struct intel_dp *intel_dp) -> > } -> > } -> > +> > � } +> > �} +> > � > > +static enum pipe vlv_find_free_pps(struct drm_i915_private *dev_priv) > > +{ > > + struct intel_encoder *encoder; > > + unsigned int pipes = (1 << PIPE_A) | (1 << PIPE_B); > > + > > + /* -> > + * We don't have power sequencer currently. -> > + * Pick one that's not used by other ports. -> > + * -> > + * We will +> > + �* We don't have power sequencer currently. +> > + �* Pick one that's not used by other ports. +> > + �* +> > + �* We will > > Remnant line. Will nuke. > -> > + */ +> > + �*/ > > + for_each_intel_encoder(&dev_priv->drm, encoder) { > > + struct intel_dp *intel_dp; > > + > > + if (encoder->type != INTEL_OUTPUT_DP && -> > + encoder->type != INTEL_OUTPUT_EDP) +> > + ����encoder->type != INTEL_OUTPUT_EDP) > > + continue; > > + > > + intel_dp = enc_to_intel_dp(&encoder->base); @@ -90,31 +90,31 @@ so not something I'd expect to see. > > + return ffs(pipes) - 1; > > +} > > + -> > static enum pipe -> > vlv_power_sequencer_pipe(struct intel_dp *intel_dp) -> > { -> > struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); -> > struct drm_device *dev = intel_dig_port->base.base.dev; -> > struct drm_i915_private *dev_priv = to_i915(dev); +> > �static enum pipe +> > �vlv_power_sequencer_pipe(struct intel_dp *intel_dp) +> > �{ +> > � struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); +> > � struct drm_device *dev = intel_dig_port->base.base.dev; +> > � struct drm_i915_private *dev_priv = to_i915(dev); > > - struct intel_encoder *encoder; > > - unsigned int pipes = (1 << PIPE_A) | (1 << PIPE_B); -> > enum pipe pipe; -> > -> > lockdep_assert_held(&dev_priv->pps_mutex); +> > � enum pipe pipe; +> > � +> > � lockdep_assert_held(&dev_priv->pps_mutex); > > @@ -469,33 +507,20 @@ vlv_power_sequencer_pipe(struct intel_dp *intel_dp) -> > /* We should never land here with regular DP ports */ -> > WARN_ON(!is_edp(intel_dp)); -> > +> > � /* We should never land here with regular DP ports */ +> > � WARN_ON(!is_edp(intel_dp)); +> > � > > + WARN_ON(intel_dp->active_pipe != INVALID_PIPE && > > + intel_dp->active_pipe != intel_dp->pps_pipe); > > + -> > if (intel_dp->pps_pipe != INVALID_PIPE) -> > return intel_dp->pps_pipe; -> > +> > � if (intel_dp->pps_pipe != INVALID_PIPE) +> > � return intel_dp->pps_pipe; +> > � > > - /* -> > - * We don't have power sequencer currently. -> > - * Pick one that's not used by other ports. -> > - */ +> > - �* We don't have power sequencer currently. +> > - �* Pick one that's not used by other ports. +> > - �*/ > > - for_each_intel_encoder(dev, encoder) { > > - struct intel_dp *tmp; > > - @@ -127,131 +127,131 @@ so not something I'd expect to see. > > - pipes &= ~(1 << tmp->pps_pipe); > > - } > > + pipe = vlv_find_free_pps(dev_priv); -> > -> > /* -> > * Didn't find one. This should not happen since there -> > * are two power sequencers and up to two eDP ports. -> > */ +> > � +> > � /* +> > � �* Didn't find one. This should not happen since there +> > � �* are two power sequencers and up to two eDP ports. +> > � �*/ > > - if (WARN_ON(pipes == 0)) > > + if (WARN_ON(pipe == INVALID_PIPE)) -> > pipe = PIPE_A; +> > � pipe = PIPE_A; > > - else > > - pipe = ffs(pipes) - 1; -> > -> > vlv_steal_power_sequencer(dev, pipe); -> > intel_dp->pps_pipe = pipe; +> > � +> > � vlv_steal_power_sequencer(dev, pipe); +> > � intel_dp->pps_pipe = pipe; > > @@ -651,10 +676,17 @@ void intel_power_sequencer_reset(struct drm_i915_private *dev_priv) -> > for_each_intel_encoder(dev, encoder) { -> > struct intel_dp *intel_dp; -> > +> > � for_each_intel_encoder(dev, encoder) { +> > � struct intel_dp *intel_dp; +> > � > > - if (encoder->type != INTEL_OUTPUT_EDP) > > + if (encoder->type != INTEL_OUTPUT_DP && -> > + encoder->type != INTEL_OUTPUT_EDP) -> > continue; -> > -> > intel_dp = enc_to_intel_dp(&encoder->base); +> > + ����encoder->type != INTEL_OUTPUT_EDP) +> > � continue; +> > � +> > � intel_dp = enc_to_intel_dp(&encoder->base); > > + > > + WARN_ON(intel_dp->active_pipe != INVALID_PIPE); > > + > > + if (encoder->type != INTEL_OUTPUT_EDP) > > + continue; > > + -> > if (IS_GEN9_LP(dev_priv)) -> > intel_dp->pps_reset = true; -> > else +> > � if (IS_GEN9_LP(dev_priv)) +> > � intel_dp->pps_reset = true; +> > � else > > @@ -2814,6 +2846,8 @@ static void vlv_detach_power_sequencer(struct intel_dp *intel_dp) -> > enum pipe pipe = intel_dp->pps_pipe; -> > i915_reg_t pp_on_reg = PP_ON_DELAYS(pipe); -> > +> > � enum pipe pipe = intel_dp->pps_pipe; +> > � i915_reg_t pp_on_reg = PP_ON_DELAYS(pipe); +> > � > > + WARN_ON(intel_dp->active_pipe != INVALID_PIPE); > > + -> > edp_panel_vdd_off_sync(intel_dp); -> > -> > /* +> > � edp_panel_vdd_off_sync(intel_dp); +> > � +> > � /* > > @@ -2848,22 +2882,23 @@ static void vlv_steal_power_sequencer(struct drm_device *dev, -> > struct intel_dp *intel_dp; -> > enum port port; -> > +> > � struct intel_dp *intel_dp; +> > � enum port port; +> > � > > - if (encoder->type != INTEL_OUTPUT_EDP) > > + if (encoder->type != INTEL_OUTPUT_EDP && -> > + encoder->type != INTEL_OUTPUT_DP) -> > continue; -> > -> > intel_dp = enc_to_intel_dp(&encoder->base); -> > port = dp_to_dig_port(intel_dp)->port; -> > +> > + ����encoder->type != INTEL_OUTPUT_DP) +> > � continue; +> > � +> > � intel_dp = enc_to_intel_dp(&encoder->base); +> > � port = dp_to_dig_port(intel_dp)->port; +> > � > > + WARN(intel_dp->active_pipe == pipe, -> > + "stealing pipe %c power sequencer from active (e)DP port %c\n", -> > + pipe_name(pipe), port_name(port)); +> > + �����"stealing pipe %c power sequencer from active (e)DP port %c\n", +> > + �����pipe_name(pipe), port_name(port)); > > + -> > if (intel_dp->pps_pipe != pipe) -> > continue; -> > -> > DRM_DEBUG_KMS("stealing pipe %c power sequencer from port %c\n", -> > pipe_name(pipe), port_name(port)); -> > +> > � if (intel_dp->pps_pipe != pipe) +> > � continue; +> > � +> > � DRM_DEBUG_KMS("stealing pipe %c power sequencer from port %c\n", +> > � ������pipe_name(pipe), port_name(port)); +> > � > > - WARN(encoder->base.crtc, -> > - "stealing pipe %c power sequencer from active eDP port %c\n", -> > - pipe_name(pipe), port_name(port)); +> > - �����"stealing pipe %c power sequencer from active eDP port %c\n", +> > - �����pipe_name(pipe), port_name(port)); > > - -> > /* make sure vdd is off before we steal it */ -> > vlv_detach_power_sequencer(intel_dp); -> > } +> > � /* make sure vdd is off before we steal it */ +> > � vlv_detach_power_sequencer(intel_dp); +> > � } > > @@ -2879,19 +2914,17 @@ static void vlv_init_panel_power_sequencer(struct intel_dp *intel_dp) -> > -> > lockdep_assert_held(&dev_priv->pps_mutex); -> > +> > � +> > � lockdep_assert_held(&dev_priv->pps_mutex); +> > � > > - if (!is_edp(intel_dp)) > > - return; > > - > > - if (intel_dp->pps_pipe == crtc->pipe) > > - return; > > + WARN_ON(intel_dp->active_pipe != INVALID_PIPE); -> > +> > � > > - /* -> > - * If another power sequencer was being used on this -> > - * port previously make sure to turn off vdd there while -> > - * we still have control of it. -> > - */ +> > - �* If another power sequencer was being used on this +> > - �* port previously make sure to turn off vdd there while +> > - �* we still have control of it. +> > - �*/ > > - if (intel_dp->pps_pipe != INVALID_PIPE) > > + if (intel_dp->pps_pipe != INVALID_PIPE && -> > + intel_dp->pps_pipe != crtc->pipe) { +> > + ����intel_dp->pps_pipe != crtc->pipe) { > > + /* -> > + * If another power sequencer was being used on this -> > + * port previously make sure to turn off vdd there while -> > + * we still have control of it. -> > + */ -> > vlv_detach_power_sequencer(intel_dp); +> > + �* If another power sequencer was being used on this +> > + �* port previously make sure to turn off vdd there while +> > + �* we still have control of it. +> > + �*/ +> > � vlv_detach_power_sequencer(intel_dp); > > + } -> > -> > /* -> > * We may be stealing the power +> > � +> > � /* +> > � �* We may be stealing the power > > @@ -2899,6 +2932,11 @@ static void vlv_init_panel_power_sequencer(struct intel_dp *intel_dp) -> > */ -> > vlv_steal_power_sequencer(dev, crtc->pipe); -> > +> > � �*/ +> > � vlv_steal_power_sequencer(dev, crtc->pipe); +> > � > > + intel_dp->active_pipe = crtc->pipe; > > + > > + if (!is_edp(intel_dp)) > > + return; > > + -> > /* now it's all ours */ -> > intel_dp->pps_pipe = crtc->pipe; -> > +> > � /* now it's all ours */ +> > � intel_dp->pps_pipe = crtc->pipe; +> > � > > @@ -3485,6 +3523,9 @@ intel_dp_link_down(struct intel_dp *intel_dp) -> > msleep(intel_dp->panel_power_down_delay); -> > -> > intel_dp->DP = DP; +> > � msleep(intel_dp->panel_power_down_delay); +> > � +> > � intel_dp->DP = DP; > > + > > + if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) > > + intel_dp->active_pipe = INVALID_PIPE; -> > } -> > -> > bool +> > �} +> > � +> > �bool > > @@ -4750,6 +4791,19 @@ static void intel_edp_panel_vdd_sanitize(struct intel_dp *intel_dp) -> > edp_panel_vdd_schedule_off(intel_dp); -> > } -> > +> > � edp_panel_vdd_schedule_off(intel_dp); +> > �} +> > � > > +enum pipe vlv_active_pipe(struct intel_dp *intel_dp) > > +{ > > + struct drm_i915_private *dev_priv = to_i915(intel_dp_to_dev(intel_dp)); @@ -265,18 +265,18 @@ so not something I'd expect to see. > > + return PORT_TO_PIPE(intel_dp->DP); > > +} > > + -> > void intel_dp_encoder_reset(struct drm_encoder *encoder) -> > { -> > struct drm_i915_private *dev_priv = to_i915(encoder->dev); +> > �void intel_dp_encoder_reset(struct drm_encoder *encoder) +> > �{ +> > � struct drm_i915_private *dev_priv = to_i915(encoder->dev); > > @@ -4762,14 +4816,16 @@ void intel_dp_encoder_reset(struct drm_encoder *encoder) -> > if (lspcon->active) -> > lspcon_resume(lspcon); -> > +> > � if (lspcon->active) +> > � lspcon_resume(lspcon); +> > � > > - if (to_intel_encoder(encoder)->type != INTEL_OUTPUT_EDP) > > - return; > > - -> > pps_lock(intel_dp); -> > +> > � pps_lock(intel_dp); +> > � > > - /* Reinit the power sequencer, in case BIOS did something with it. */ > > - intel_dp_pps_init(encoder->dev, intel_dp); > > - intel_edp_panel_vdd_sanitize(intel_dp); @@ -288,57 +288,57 @@ so not something I'd expect to see. > > + intel_dp_pps_init(encoder->dev, intel_dp); > > + intel_edp_panel_vdd_sanitize(intel_dp); > > + } -> > -> > pps_unlock(intel_dp); -> > } +> > � +> > � pps_unlock(intel_dp); +> > �} > > @@ -5596,10 +5652,7 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp, -> > * If the current pipe isn't valid, try the PPS pipe, and if that -> > * fails just assume pipe A. -> > */ +> > � �* If the current pipe isn't valid, try the PPS pipe, and if that +> > � �* fails just assume pipe A. +> > � �*/ > > - if (IS_CHERRYVIEW(dev_priv)) > > - pipe = DP_PORT_TO_PIPE_CHV(intel_dp->DP); > > - else > > - pipe = PORT_TO_PIPE(intel_dp->DP); > > + pipe = vlv_active_pipe(intel_dp); -> > -> > if (pipe != PIPE_A && pipe != PIPE_B) -> > pipe = intel_dp->pps_pipe; +> > � +> > � if (pipe != PIPE_A && pipe != PIPE_B) +> > � pipe = intel_dp->pps_pipe; > > @@ -5648,6 +5701,7 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port, -> > return false; -> > -> > intel_dp->pps_pipe = INVALID_PIPE; +> > � return false; +> > � +> > � intel_dp->pps_pipe = INVALID_PIPE; > > + intel_dp->active_pipe = INVALID_PIPE; -> > -> > /* intel_dp vfuncs */ -> > if (INTEL_GEN(dev_priv) >= 9) +> > � +> > � /* intel_dp vfuncs */ +> > � if (INTEL_GEN(dev_priv) >= 9) > > @@ -5676,6 +5730,9 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port, -> > else -> > type = DRM_MODE_CONNECTOR_DisplayPort; -> > +> > � else +> > � type = DRM_MODE_CONNECTOR_DisplayPort; +> > � > > + if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) > > + intel_dp->active_pipe = vlv_active_pipe(intel_dp); > > + -> > /* -> > * For eDP we always set the encoder type to INTEL_OUTPUT_EDP, but -> > * for DP the encoder type can be set by the caller to +> > � /* +> > � �* For eDP we always set the encoder type to INTEL_OUTPUT_EDP, but +> > � �* for DP the encoder type can be set by the caller to > > diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h > > index 8f4ddca0f521..85b39d3a6dff 100644 > > --- a/drivers/gpu/drm/i915/intel_drv.h > > +++ b/drivers/gpu/drm/i915/intel_drv.h > > @@ -929,6 +929,12 @@ struct intel_dp { -> > */ -> > enum pipe pps_pipe; -> > /* -> > + * Pipe currently driving the port. Used for preventing -> > + * the use of the PPS for any pipe currentrly driving -> > + * external DP as that will mess things up on VLV. -> > + */ +> > � �*/ +> > � enum pipe pps_pipe; +> > � /* +> > + �* Pipe currently driving the port. Used for preventing +> > + �* the use of the PPS for any pipe currentrly driving +> > + �* external DP as that will mess things up on VLV. +> > + �*/ > > + enum pipe active_pipe; > > + /* -> > * Set if the sequencer may be reset due to a power transition, -> > * requiring a reinitialization. Only relevant on BXT. -> > */ +> > � �* Set if the sequencer may be reset due to a power transition, +> > � �* requiring a reinitialization. Only relevant on BXT. +> > � �*/ -- -Ville Syrjälä +Ville Syrj�l� Intel OTC diff --git a/a/content_digest b/N1/content_digest index edd789a..1c4f4c1 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -10,7 +10,7 @@ "b\0" "On Mon, Dec 12, 2016 at 11:06:19PM +0200, Imre Deak wrote:\n" "> On Mon, 2016-12-12 at 16:21 +0200, ville.syrjala@linux.intel.com wrote:\n" - "> > From: Ville Syrj\303\244l\303\244 <ville.syrjala@linux.intel.com>\n" + "> > From: Ville Syrj\303\257\302\277\302\275l\303\257\302\277\302\275 <ville.syrjala@linux.intel.com>\n" "> > \n" "> > VLV apparently gets upset if the PPS for a pipe currently driving an\n" "> > external DP port gets used for VDD stuff on another eDP port. The DP\n" @@ -28,42 +28,42 @@ "> > AUX communication to occur in parallel for multiple DP ports.\n" "> > \n" "> > Cc: stable@vger.kernel.org\n" - "> > Signed-off-by: Ville Syrj\303\244l\303\244 <ville.syrjala@linux.intel.com>\n" + "> > Signed-off-by: Ville Syrj\303\257\302\277\302\275l\303\257\302\277\302\275 <ville.syrjala@linux.intel.com>\n" "> > ---\n" - "> > \302\240drivers/gpu/drm/i915/intel_dp.c\302\240\302\240| 151 +++++++++++++++++++++++++++------------\n" - "> > \302\240drivers/gpu/drm/i915/intel_drv.h |\302\240\302\240\302\2406 ++\n" - "> > \302\2402 files changed, 110 insertions(+), 47 deletions(-)\n" + "> > \303\257\302\277\302\275drivers/gpu/drm/i915/intel_dp.c\303\257\302\277\302\275\303\257\302\277\302\275| 151 +++++++++++++++++++++++++++------------\n" + "> > \303\257\302\277\302\275drivers/gpu/drm/i915/intel_drv.h |\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\2756 ++\n" + "> > \303\257\302\277\302\2752 files changed, 110 insertions(+), 47 deletions(-)\n" "> > \n" "> > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c\n" "> > index db75bb924e48..0da7d528c1a9 100644\n" "> > --- a/drivers/gpu/drm/i915/intel_dp.c\n" "> > +++ b/drivers/gpu/drm/i915/intel_dp.c\n" "> > @@ -454,14 +454,52 @@ vlv_power_sequencer_kick(struct intel_dp *intel_dp)\n" - "> > \302\240\t}\n" - "> > \302\240}\n" - "> > \302\240\n" + "> > \303\257\302\277\302\275\t}\n" + "> > \303\257\302\277\302\275}\n" + "> > \303\257\302\277\302\275\n" "> > +static enum pipe vlv_find_free_pps(struct drm_i915_private *dev_priv)\n" "> > +{\n" "> > +\tstruct intel_encoder *encoder;\n" "> > +\tunsigned int pipes = (1 << PIPE_A) | (1 << PIPE_B);\n" "> > +\n" "> > +\t/*\n" - "> > +\t\302\240* We don't have power sequencer currently.\n" - "> > +\t\302\240* Pick one that's not used by other ports.\n" - "> > +\t\302\240*\n" - "> > +\t\302\240* We will\n" + "> > +\t\303\257\302\277\302\275* We don't have power sequencer currently.\n" + "> > +\t\303\257\302\277\302\275* Pick one that's not used by other ports.\n" + "> > +\t\303\257\302\277\302\275*\n" + "> > +\t\303\257\302\277\302\275* We will\n" "> \n" "> Remnant line.\n" "\n" "Will nuke.\n" "\n" "> \n" - "> > +\t\302\240*/\n" + "> > +\t\303\257\302\277\302\275*/\n" "> > +\tfor_each_intel_encoder(&dev_priv->drm, encoder) {\n" "> > +\t\tstruct intel_dp *intel_dp;\n" "> > +\n" "> > +\t\tif (encoder->type != INTEL_OUTPUT_DP &&\n" - "> > +\t\t\302\240\302\240\302\240\302\240encoder->type != INTEL_OUTPUT_EDP)\n" + "> > +\t\t\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\275encoder->type != INTEL_OUTPUT_EDP)\n" "> > +\t\t\tcontinue;\n" "> > +\n" "> > +\t\tintel_dp = enc_to_intel_dp(&encoder->base);\n" @@ -100,31 +100,31 @@ "> > +\treturn ffs(pipes) - 1;\n" "> > +}\n" "> > +\n" - "> > \302\240static enum pipe\n" - "> > \302\240vlv_power_sequencer_pipe(struct intel_dp *intel_dp)\n" - "> > \302\240{\n" - "> > \302\240\tstruct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);\n" - "> > \302\240\tstruct drm_device *dev = intel_dig_port->base.base.dev;\n" - "> > \302\240\tstruct drm_i915_private *dev_priv = to_i915(dev);\n" + "> > \303\257\302\277\302\275static enum pipe\n" + "> > \303\257\302\277\302\275vlv_power_sequencer_pipe(struct intel_dp *intel_dp)\n" + "> > \303\257\302\277\302\275{\n" + "> > \303\257\302\277\302\275\tstruct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);\n" + "> > \303\257\302\277\302\275\tstruct drm_device *dev = intel_dig_port->base.base.dev;\n" + "> > \303\257\302\277\302\275\tstruct drm_i915_private *dev_priv = to_i915(dev);\n" "> > -\tstruct intel_encoder *encoder;\n" "> > -\tunsigned int pipes = (1 << PIPE_A) | (1 << PIPE_B);\n" - "> > \302\240\tenum pipe pipe;\n" - "> > \302\240\n" - "> > \302\240\tlockdep_assert_held(&dev_priv->pps_mutex);\n" + "> > \303\257\302\277\302\275\tenum pipe pipe;\n" + "> > \303\257\302\277\302\275\n" + "> > \303\257\302\277\302\275\tlockdep_assert_held(&dev_priv->pps_mutex);\n" "> > @@ -469,33 +507,20 @@ vlv_power_sequencer_pipe(struct intel_dp *intel_dp)\n" - "> > \302\240\t/* We should never land here with regular DP ports */\n" - "> > \302\240\tWARN_ON(!is_edp(intel_dp));\n" - "> > \302\240\n" + "> > \303\257\302\277\302\275\t/* We should never land here with regular DP ports */\n" + "> > \303\257\302\277\302\275\tWARN_ON(!is_edp(intel_dp));\n" + "> > \303\257\302\277\302\275\n" "> > +\tWARN_ON(intel_dp->active_pipe != INVALID_PIPE &&\n" "> > +\t\tintel_dp->active_pipe != intel_dp->pps_pipe);\n" "> > +\n" - "> > \302\240\tif (intel_dp->pps_pipe != INVALID_PIPE)\n" - "> > \302\240\t\treturn intel_dp->pps_pipe;\n" - "> > \302\240\n" + "> > \303\257\302\277\302\275\tif (intel_dp->pps_pipe != INVALID_PIPE)\n" + "> > \303\257\302\277\302\275\t\treturn intel_dp->pps_pipe;\n" + "> > \303\257\302\277\302\275\n" "> > -\t/*\n" - "> > -\t\302\240* We don't have power sequencer currently.\n" - "> > -\t\302\240* Pick one that's not used by other ports.\n" - "> > -\t\302\240*/\n" + "> > -\t\303\257\302\277\302\275* We don't have power sequencer currently.\n" + "> > -\t\303\257\302\277\302\275* Pick one that's not used by other ports.\n" + "> > -\t\303\257\302\277\302\275*/\n" "> > -\tfor_each_intel_encoder(dev, encoder) {\n" "> > -\t\tstruct intel_dp *tmp;\n" "> > -\n" @@ -137,131 +137,131 @@ "> > -\t\t\tpipes &= ~(1 << tmp->pps_pipe);\n" "> > -\t}\n" "> > +\tpipe = vlv_find_free_pps(dev_priv);\n" - "> > \302\240\n" - "> > \302\240\t/*\n" - "> > \302\240\t\302\240* Didn't find one. This should not happen since there\n" - "> > \302\240\t\302\240* are two power sequencers and up to two eDP ports.\n" - "> > \302\240\t\302\240*/\n" + "> > \303\257\302\277\302\275\n" + "> > \303\257\302\277\302\275\t/*\n" + "> > \303\257\302\277\302\275\t\303\257\302\277\302\275* Didn't find one. This should not happen since there\n" + "> > \303\257\302\277\302\275\t\303\257\302\277\302\275* are two power sequencers and up to two eDP ports.\n" + "> > \303\257\302\277\302\275\t\303\257\302\277\302\275*/\n" "> > -\tif (WARN_ON(pipes == 0))\n" "> > +\tif (WARN_ON(pipe == INVALID_PIPE))\n" - "> > \302\240\t\tpipe = PIPE_A;\n" + "> > \303\257\302\277\302\275\t\tpipe = PIPE_A;\n" "> > -\telse\n" "> > -\t\tpipe = ffs(pipes) - 1;\n" - "> > \302\240\n" - "> > \302\240\tvlv_steal_power_sequencer(dev, pipe);\n" - "> > \302\240\tintel_dp->pps_pipe = pipe;\n" + "> > \303\257\302\277\302\275\n" + "> > \303\257\302\277\302\275\tvlv_steal_power_sequencer(dev, pipe);\n" + "> > \303\257\302\277\302\275\tintel_dp->pps_pipe = pipe;\n" "> > @@ -651,10 +676,17 @@ void intel_power_sequencer_reset(struct drm_i915_private *dev_priv)\n" - "> > \302\240\tfor_each_intel_encoder(dev, encoder) {\n" - "> > \302\240\t\tstruct intel_dp *intel_dp;\n" - "> > \302\240\n" + "> > \303\257\302\277\302\275\tfor_each_intel_encoder(dev, encoder) {\n" + "> > \303\257\302\277\302\275\t\tstruct intel_dp *intel_dp;\n" + "> > \303\257\302\277\302\275\n" "> > -\t\tif (encoder->type != INTEL_OUTPUT_EDP)\n" "> > +\t\tif (encoder->type != INTEL_OUTPUT_DP &&\n" - "> > +\t\t\302\240\302\240\302\240\302\240encoder->type != INTEL_OUTPUT_EDP)\n" - "> > \302\240\t\t\tcontinue;\n" - "> > \302\240\n" - "> > \302\240\t\tintel_dp = enc_to_intel_dp(&encoder->base);\n" + "> > +\t\t\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\275encoder->type != INTEL_OUTPUT_EDP)\n" + "> > \303\257\302\277\302\275\t\t\tcontinue;\n" + "> > \303\257\302\277\302\275\n" + "> > \303\257\302\277\302\275\t\tintel_dp = enc_to_intel_dp(&encoder->base);\n" "> > +\n" "> > +\t\tWARN_ON(intel_dp->active_pipe != INVALID_PIPE);\n" "> > +\n" "> > +\t\tif (encoder->type != INTEL_OUTPUT_EDP)\n" "> > +\t\t\tcontinue;\n" "> > +\n" - "> > \302\240\t\tif (IS_GEN9_LP(dev_priv))\n" - "> > \302\240\t\t\tintel_dp->pps_reset = true;\n" - "> > \302\240\t\telse\n" + "> > \303\257\302\277\302\275\t\tif (IS_GEN9_LP(dev_priv))\n" + "> > \303\257\302\277\302\275\t\t\tintel_dp->pps_reset = true;\n" + "> > \303\257\302\277\302\275\t\telse\n" "> > @@ -2814,6 +2846,8 @@ static void vlv_detach_power_sequencer(struct intel_dp *intel_dp)\n" - "> > \302\240\tenum pipe pipe = intel_dp->pps_pipe;\n" - "> > \302\240\ti915_reg_t pp_on_reg = PP_ON_DELAYS(pipe);\n" - "> > \302\240\n" + "> > \303\257\302\277\302\275\tenum pipe pipe = intel_dp->pps_pipe;\n" + "> > \303\257\302\277\302\275\ti915_reg_t pp_on_reg = PP_ON_DELAYS(pipe);\n" + "> > \303\257\302\277\302\275\n" "> > +\tWARN_ON(intel_dp->active_pipe != INVALID_PIPE);\n" "> > +\n" - "> > \302\240\tedp_panel_vdd_off_sync(intel_dp);\n" - "> > \302\240\n" - "> > \302\240\t/*\n" + "> > \303\257\302\277\302\275\tedp_panel_vdd_off_sync(intel_dp);\n" + "> > \303\257\302\277\302\275\n" + "> > \303\257\302\277\302\275\t/*\n" "> > @@ -2848,22 +2882,23 @@ static void vlv_steal_power_sequencer(struct drm_device *dev,\n" - "> > \302\240\t\tstruct intel_dp *intel_dp;\n" - "> > \302\240\t\tenum port port;\n" - "> > \302\240\n" + "> > \303\257\302\277\302\275\t\tstruct intel_dp *intel_dp;\n" + "> > \303\257\302\277\302\275\t\tenum port port;\n" + "> > \303\257\302\277\302\275\n" "> > -\t\tif (encoder->type != INTEL_OUTPUT_EDP)\n" "> > +\t\tif (encoder->type != INTEL_OUTPUT_EDP &&\n" - "> > +\t\t\302\240\302\240\302\240\302\240encoder->type != INTEL_OUTPUT_DP)\n" - "> > \302\240\t\t\tcontinue;\n" - "> > \302\240\n" - "> > \302\240\t\tintel_dp = enc_to_intel_dp(&encoder->base);\n" - "> > \302\240\t\tport = dp_to_dig_port(intel_dp)->port;\n" - "> > \302\240\n" + "> > +\t\t\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\275encoder->type != INTEL_OUTPUT_DP)\n" + "> > \303\257\302\277\302\275\t\t\tcontinue;\n" + "> > \303\257\302\277\302\275\n" + "> > \303\257\302\277\302\275\t\tintel_dp = enc_to_intel_dp(&encoder->base);\n" + "> > \303\257\302\277\302\275\t\tport = dp_to_dig_port(intel_dp)->port;\n" + "> > \303\257\302\277\302\275\n" "> > +\t\tWARN(intel_dp->active_pipe == pipe,\n" - "> > +\t\t\302\240\302\240\302\240\302\240\302\240\"stealing pipe %c power sequencer from active (e)DP port %c\\n\",\n" - "> > +\t\t\302\240\302\240\302\240\302\240\302\240pipe_name(pipe), port_name(port));\n" + "> > +\t\t\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\275\"stealing pipe %c power sequencer from active (e)DP port %c\\n\",\n" + "> > +\t\t\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\275pipe_name(pipe), port_name(port));\n" "> > +\n" - "> > \302\240\t\tif (intel_dp->pps_pipe != pipe)\n" - "> > \302\240\t\t\tcontinue;\n" - "> > \302\240\n" - "> > \302\240\t\tDRM_DEBUG_KMS(\"stealing pipe %c power sequencer from port %c\\n\",\n" - "> > \302\240\t\t\t\302\240\302\240\302\240\302\240\302\240\302\240pipe_name(pipe), port_name(port));\n" - "> > \302\240\n" + "> > \303\257\302\277\302\275\t\tif (intel_dp->pps_pipe != pipe)\n" + "> > \303\257\302\277\302\275\t\t\tcontinue;\n" + "> > \303\257\302\277\302\275\n" + "> > \303\257\302\277\302\275\t\tDRM_DEBUG_KMS(\"stealing pipe %c power sequencer from port %c\\n\",\n" + "> > \303\257\302\277\302\275\t\t\t\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\275pipe_name(pipe), port_name(port));\n" + "> > \303\257\302\277\302\275\n" "> > -\t\tWARN(encoder->base.crtc,\n" - "> > -\t\t\302\240\302\240\302\240\302\240\302\240\"stealing pipe %c power sequencer from active eDP port %c\\n\",\n" - "> > -\t\t\302\240\302\240\302\240\302\240\302\240pipe_name(pipe), port_name(port));\n" + "> > -\t\t\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\275\"stealing pipe %c power sequencer from active eDP port %c\\n\",\n" + "> > -\t\t\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\275pipe_name(pipe), port_name(port));\n" "> > -\n" - "> > \302\240\t\t/* make sure vdd is off before we steal it */\n" - "> > \302\240\t\tvlv_detach_power_sequencer(intel_dp);\n" - "> > \302\240\t}\n" + "> > \303\257\302\277\302\275\t\t/* make sure vdd is off before we steal it */\n" + "> > \303\257\302\277\302\275\t\tvlv_detach_power_sequencer(intel_dp);\n" + "> > \303\257\302\277\302\275\t}\n" "> > @@ -2879,19 +2914,17 @@ static void vlv_init_panel_power_sequencer(struct intel_dp *intel_dp)\n" - "> > \302\240\n" - "> > \302\240\tlockdep_assert_held(&dev_priv->pps_mutex);\n" - "> > \302\240\n" + "> > \303\257\302\277\302\275\n" + "> > \303\257\302\277\302\275\tlockdep_assert_held(&dev_priv->pps_mutex);\n" + "> > \303\257\302\277\302\275\n" "> > -\tif (!is_edp(intel_dp))\n" "> > -\t\treturn;\n" "> > -\n" "> > -\tif (intel_dp->pps_pipe == crtc->pipe)\n" "> > -\t\treturn;\n" "> > +\tWARN_ON(intel_dp->active_pipe != INVALID_PIPE);\n" - "> > \302\240\n" + "> > \303\257\302\277\302\275\n" "> > -\t/*\n" - "> > -\t\302\240* If another power sequencer was being used on this\n" - "> > -\t\302\240* port previously make sure to turn off vdd there while\n" - "> > -\t\302\240* we still have control of it.\n" - "> > -\t\302\240*/\n" + "> > -\t\303\257\302\277\302\275* If another power sequencer was being used on this\n" + "> > -\t\303\257\302\277\302\275* port previously make sure to turn off vdd there while\n" + "> > -\t\303\257\302\277\302\275* we still have control of it.\n" + "> > -\t\303\257\302\277\302\275*/\n" "> > -\tif (intel_dp->pps_pipe != INVALID_PIPE)\n" "> > +\tif (intel_dp->pps_pipe != INVALID_PIPE &&\n" - "> > +\t\302\240\302\240\302\240\302\240intel_dp->pps_pipe != crtc->pipe) {\n" + "> > +\t\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\275\303\257\302\277\302\275intel_dp->pps_pipe != crtc->pipe) {\n" "> > +\t\t/*\n" - "> > +\t\t\302\240* If another power sequencer was being used on this\n" - "> > +\t\t\302\240* port previously make sure to turn off vdd there while\n" - "> > +\t\t\302\240* we still have control of it.\n" - "> > +\t\t\302\240*/\n" - "> > \302\240\t\tvlv_detach_power_sequencer(intel_dp);\n" + "> > +\t\t\303\257\302\277\302\275* If another power sequencer was being used on this\n" + "> > +\t\t\303\257\302\277\302\275* port previously make sure to turn off vdd there while\n" + "> > +\t\t\303\257\302\277\302\275* we still have control of it.\n" + "> > +\t\t\303\257\302\277\302\275*/\n" + "> > \303\257\302\277\302\275\t\tvlv_detach_power_sequencer(intel_dp);\n" "> > +\t}\n" - "> > \302\240\n" - "> > \302\240\t/*\n" - "> > \302\240\t\302\240* We may be stealing the power\n" + "> > \303\257\302\277\302\275\n" + "> > \303\257\302\277\302\275\t/*\n" + "> > \303\257\302\277\302\275\t\303\257\302\277\302\275* We may be stealing the power\n" "> > @@ -2899,6 +2932,11 @@ static void vlv_init_panel_power_sequencer(struct intel_dp *intel_dp)\n" - "> > \302\240\t\302\240*/\n" - "> > \302\240\tvlv_steal_power_sequencer(dev, crtc->pipe);\n" - "> > \302\240\n" + "> > \303\257\302\277\302\275\t\303\257\302\277\302\275*/\n" + "> > \303\257\302\277\302\275\tvlv_steal_power_sequencer(dev, crtc->pipe);\n" + "> > \303\257\302\277\302\275\n" "> > +\tintel_dp->active_pipe = crtc->pipe;\n" "> > +\n" "> > +\tif (!is_edp(intel_dp))\n" "> > +\t\treturn;\n" "> > +\n" - "> > \302\240\t/* now it's all ours */\n" - "> > \302\240\tintel_dp->pps_pipe = crtc->pipe;\n" - "> > \302\240\n" + "> > \303\257\302\277\302\275\t/* now it's all ours */\n" + "> > \303\257\302\277\302\275\tintel_dp->pps_pipe = crtc->pipe;\n" + "> > \303\257\302\277\302\275\n" "> > @@ -3485,6 +3523,9 @@ intel_dp_link_down(struct intel_dp *intel_dp)\n" - "> > \302\240\tmsleep(intel_dp->panel_power_down_delay);\n" - "> > \302\240\n" - "> > \302\240\tintel_dp->DP = DP;\n" + "> > \303\257\302\277\302\275\tmsleep(intel_dp->panel_power_down_delay);\n" + "> > \303\257\302\277\302\275\n" + "> > \303\257\302\277\302\275\tintel_dp->DP = DP;\n" "> > +\n" "> > +\tif (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))\n" "> > +\t\tintel_dp->active_pipe = INVALID_PIPE;\n" - "> > \302\240}\n" - "> > \302\240\n" - "> > \302\240bool\n" + "> > \303\257\302\277\302\275}\n" + "> > \303\257\302\277\302\275\n" + "> > \303\257\302\277\302\275bool\n" "> > @@ -4750,6 +4791,19 @@ static void intel_edp_panel_vdd_sanitize(struct intel_dp *intel_dp)\n" - "> > \302\240\tedp_panel_vdd_schedule_off(intel_dp);\n" - "> > \302\240}\n" - "> > \302\240\n" + "> > \303\257\302\277\302\275\tedp_panel_vdd_schedule_off(intel_dp);\n" + "> > \303\257\302\277\302\275}\n" + "> > \303\257\302\277\302\275\n" "> > +enum pipe vlv_active_pipe(struct intel_dp *intel_dp)\n" "> > +{\n" "> > +\tstruct drm_i915_private *dev_priv = to_i915(intel_dp_to_dev(intel_dp));\n" @@ -275,18 +275,18 @@ "> > +\t\treturn PORT_TO_PIPE(intel_dp->DP);\n" "> > +}\n" "> > +\n" - "> > \302\240void intel_dp_encoder_reset(struct drm_encoder *encoder)\n" - "> > \302\240{\n" - "> > \302\240\tstruct drm_i915_private *dev_priv = to_i915(encoder->dev);\n" + "> > \303\257\302\277\302\275void intel_dp_encoder_reset(struct drm_encoder *encoder)\n" + "> > \303\257\302\277\302\275{\n" + "> > \303\257\302\277\302\275\tstruct drm_i915_private *dev_priv = to_i915(encoder->dev);\n" "> > @@ -4762,14 +4816,16 @@ void intel_dp_encoder_reset(struct drm_encoder *encoder)\n" - "> > \302\240\tif (lspcon->active)\n" - "> > \302\240\t\tlspcon_resume(lspcon);\n" - "> > \302\240\n" + "> > \303\257\302\277\302\275\tif (lspcon->active)\n" + "> > \303\257\302\277\302\275\t\tlspcon_resume(lspcon);\n" + "> > \303\257\302\277\302\275\n" "> > -\tif (to_intel_encoder(encoder)->type != INTEL_OUTPUT_EDP)\n" "> > -\t\treturn;\n" "> > -\n" - "> > \302\240\tpps_lock(intel_dp);\n" - "> > \302\240\n" + "> > \303\257\302\277\302\275\tpps_lock(intel_dp);\n" + "> > \303\257\302\277\302\275\n" "> > -\t/* Reinit the power sequencer, in case BIOS did something with it. */\n" "> > -\tintel_dp_pps_init(encoder->dev, intel_dp);\n" "> > -\tintel_edp_panel_vdd_sanitize(intel_dp);\n" @@ -298,59 +298,59 @@ "> > +\t\tintel_dp_pps_init(encoder->dev, intel_dp);\n" "> > +\t\tintel_edp_panel_vdd_sanitize(intel_dp);\n" "> > +\t}\n" - "> > \302\240\n" - "> > \302\240\tpps_unlock(intel_dp);\n" - "> > \302\240}\n" + "> > \303\257\302\277\302\275\n" + "> > \303\257\302\277\302\275\tpps_unlock(intel_dp);\n" + "> > \303\257\302\277\302\275}\n" "> > @@ -5596,10 +5652,7 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,\n" - "> > \302\240\t\t\302\240* If the current pipe isn't valid, try the PPS pipe, and if that\n" - "> > \302\240\t\t\302\240* fails just assume pipe A.\n" - "> > \302\240\t\t\302\240*/\n" + "> > \303\257\302\277\302\275\t\t\303\257\302\277\302\275* If the current pipe isn't valid, try the PPS pipe, and if that\n" + "> > \303\257\302\277\302\275\t\t\303\257\302\277\302\275* fails just assume pipe A.\n" + "> > \303\257\302\277\302\275\t\t\303\257\302\277\302\275*/\n" "> > -\t\tif (IS_CHERRYVIEW(dev_priv))\n" "> > -\t\t\tpipe = DP_PORT_TO_PIPE_CHV(intel_dp->DP);\n" "> > -\t\telse\n" "> > -\t\t\tpipe = PORT_TO_PIPE(intel_dp->DP);\n" "> > +\t\tpipe = vlv_active_pipe(intel_dp);\n" - "> > \302\240\n" - "> > \302\240\t\tif (pipe != PIPE_A && pipe != PIPE_B)\n" - "> > \302\240\t\t\tpipe = intel_dp->pps_pipe;\n" + "> > \303\257\302\277\302\275\n" + "> > \303\257\302\277\302\275\t\tif (pipe != PIPE_A && pipe != PIPE_B)\n" + "> > \303\257\302\277\302\275\t\t\tpipe = intel_dp->pps_pipe;\n" "> > @@ -5648,6 +5701,7 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port,\n" - "> > \302\240\t\treturn false;\n" - "> > \302\240\n" - "> > \302\240\tintel_dp->pps_pipe = INVALID_PIPE;\n" + "> > \303\257\302\277\302\275\t\treturn false;\n" + "> > \303\257\302\277\302\275\n" + "> > \303\257\302\277\302\275\tintel_dp->pps_pipe = INVALID_PIPE;\n" "> > +\tintel_dp->active_pipe = INVALID_PIPE;\n" - "> > \302\240\n" - "> > \302\240\t/* intel_dp vfuncs */\n" - "> > \302\240\tif (INTEL_GEN(dev_priv) >= 9)\n" + "> > \303\257\302\277\302\275\n" + "> > \303\257\302\277\302\275\t/* intel_dp vfuncs */\n" + "> > \303\257\302\277\302\275\tif (INTEL_GEN(dev_priv) >= 9)\n" "> > @@ -5676,6 +5730,9 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port,\n" - "> > \302\240\telse\n" - "> > \302\240\t\ttype = DRM_MODE_CONNECTOR_DisplayPort;\n" - "> > \302\240\n" + "> > \303\257\302\277\302\275\telse\n" + "> > \303\257\302\277\302\275\t\ttype = DRM_MODE_CONNECTOR_DisplayPort;\n" + "> > \303\257\302\277\302\275\n" "> > +\tif (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))\n" "> > +\t\tintel_dp->active_pipe = vlv_active_pipe(intel_dp);\n" "> > +\n" - "> > \302\240\t/*\n" - "> > \302\240\t\302\240* For eDP we always set the encoder type to INTEL_OUTPUT_EDP, but\n" - "> > \302\240\t\302\240* for DP the encoder type can be set by the caller to\n" + "> > \303\257\302\277\302\275\t/*\n" + "> > \303\257\302\277\302\275\t\303\257\302\277\302\275* For eDP we always set the encoder type to INTEL_OUTPUT_EDP, but\n" + "> > \303\257\302\277\302\275\t\303\257\302\277\302\275* for DP the encoder type can be set by the caller to\n" "> > diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h\n" "> > index 8f4ddca0f521..85b39d3a6dff 100644\n" "> > --- a/drivers/gpu/drm/i915/intel_drv.h\n" "> > +++ b/drivers/gpu/drm/i915/intel_drv.h\n" "> > @@ -929,6 +929,12 @@ struct intel_dp {\n" - "> > \302\240\t\302\240*/\n" - "> > \302\240\tenum pipe pps_pipe;\n" - "> > \302\240\t/*\n" - "> > +\t\302\240* Pipe currently driving the port. Used for preventing\n" - "> > +\t\302\240* the use of the PPS for any pipe currentrly driving\n" - "> > +\t\302\240* external DP as that will mess things up on VLV.\n" - "> > +\t\302\240*/\n" + "> > \303\257\302\277\302\275\t\303\257\302\277\302\275*/\n" + "> > \303\257\302\277\302\275\tenum pipe pps_pipe;\n" + "> > \303\257\302\277\302\275\t/*\n" + "> > +\t\303\257\302\277\302\275* Pipe currently driving the port. Used for preventing\n" + "> > +\t\303\257\302\277\302\275* the use of the PPS for any pipe currentrly driving\n" + "> > +\t\303\257\302\277\302\275* external DP as that will mess things up on VLV.\n" + "> > +\t\303\257\302\277\302\275*/\n" "> > +\tenum pipe active_pipe;\n" "> > +\t/*\n" - "> > \302\240\t\302\240* Set if the sequencer may be reset due to a power transition,\n" - "> > \302\240\t\302\240* requiring a reinitialization. Only relevant on BXT.\n" - "> > \302\240\t\302\240*/\n" + "> > \303\257\302\277\302\275\t\303\257\302\277\302\275* Set if the sequencer may be reset due to a power transition,\n" + "> > \303\257\302\277\302\275\t\303\257\302\277\302\275* requiring a reinitialization. Only relevant on BXT.\n" + "> > \303\257\302\277\302\275\t\303\257\302\277\302\275*/\n" "\n" "-- \n" - "Ville Syrj\303\244l\303\244\n" + "Ville Syrj\303\257\302\277\302\275l\303\257\302\277\302\275\n" Intel OTC -4cdafa2c27fd3c7cb36aacf5d016daf9c6b485646ee43f7a45e05321aced8d16 +a612f7be29f29bcf3b2ae6792de1e7fbf8ca8fb7a1bfd187930f26c229d3d7e2
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.