All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] Rearranging eDP PPS code
@ 2014-11-10 11:28 Vandana Kannan
  2014-11-10 11:28 ` [PATCH 1/3] drm/i915: Move PPS calls to edp_init Vandana Kannan
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Vandana Kannan @ 2014-11-10 11:28 UTC (permalink / raw)
  To: intel-gfx

In the earlier RFC patch series, PPS related code was moved to intel_panel.c
to make it usable for all internal panels. In this patch series, the PPS
related functions are split based on platform in intel_dp.c itself. 
This avoids having code split across intel_dp.c and intel_panel.c w.r.t 
pps_lock/unlock, other pps delay functions. 
Also, the code rearrangement is for eDP alone.

Vandana Kannan (3):
  drm/i915: Move PPS calls to edp_init
  drm/i915: Use vlv_power_sequencer_pipe() only to get pipe
  drm/i915: Splitting PPS functions based on platform

 drivers/gpu/drm/i915/intel_dp.c  | 226 +++++++++++++++++++++++++--------------
 drivers/gpu/drm/i915/intel_drv.h |   3 +
 2 files changed, 147 insertions(+), 82 deletions(-)

-- 
2.0.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/3] drm/i915: Move PPS calls to edp_init
  2014-11-10 11:28 [PATCH 0/3] Rearranging eDP PPS code Vandana Kannan
@ 2014-11-10 11:28 ` Vandana Kannan
  2014-12-12 10:35   ` Jani Nikula
  2014-11-10 11:28 ` [PATCH 2/3] drm/i915: Use vlv_power_sequencer_pipe() only to get pipe Vandana Kannan
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 8+ messages in thread
From: Vandana Kannan @ 2014-11-10 11:28 UTC (permalink / raw)
  To: intel-gfx

Calls to setup eDP panel power sequencer were there in dp_init_connector()
function. Moving these calls to edp_init_connector() to keep all PPS calls
together and under edp init.

Signed-off-by: Vandana Kannan <vandana.kannan@intel.com>
---
 drivers/gpu/drm/i915/intel_dp.c | 15 +++++----------
 1 file changed, 5 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index ceb528f..34d8105 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -5258,6 +5258,11 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,
 
 	/* We now know it's not a ghost, init power sequence regs. */
 	pps_lock(intel_dp);
+	intel_dp_init_panel_power_timestamps(intel_dp);
+	if (IS_VALLEYVIEW(dev))
+		vlv_initial_power_sequencer_setup(intel_dp);
+	else
+		intel_dp_init_panel_power_sequencer(dev, intel_dp);
 	intel_dp_init_panel_power_sequencer_registers(dev, intel_dp);
 	pps_unlock(intel_dp);
 
@@ -5402,16 +5407,6 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
 		BUG();
 	}
 
-	if (is_edp(intel_dp)) {
-		pps_lock(intel_dp);
-		intel_dp_init_panel_power_timestamps(intel_dp);
-		if (IS_VALLEYVIEW(dev))
-			vlv_initial_power_sequencer_setup(intel_dp);
-		else
-			intel_dp_init_panel_power_sequencer(dev, intel_dp);
-		pps_unlock(intel_dp);
-	}
-
 	intel_dp_aux_init(intel_dp, intel_connector);
 
 	/* init MST on ports that can support it */
-- 
2.0.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/3] drm/i915: Use vlv_power_sequencer_pipe() only to get pipe
  2014-11-10 11:28 [PATCH 0/3] Rearranging eDP PPS code Vandana Kannan
  2014-11-10 11:28 ` [PATCH 1/3] drm/i915: Move PPS calls to edp_init Vandana Kannan
@ 2014-11-10 11:28 ` Vandana Kannan
  2014-12-12 10:39   ` Jani Nikula
  2014-11-10 11:28 ` [PATCH 3/3] drm/i915: Splitting PPS functions based on platform Vandana Kannan
  2014-12-12  9:35 ` [PATCH 0/3] Rearranging eDP PPS code Kannan, Vandana
  3 siblings, 1 reply; 8+ messages in thread
From: Vandana Kannan @ 2014-11-10 11:28 UTC (permalink / raw)
  To: intel-gfx

vlv_power_sequencer_pipe() calls into init PPS functions. Changing this
function to make it only return pipe and not call PPS init.
This is because PPS init calls into this function to get a pipe ID and all
other callers just need the pipe ID.

Signed-off-by: Vandana Kannan <vandana.kannan@intel.com>
---
 drivers/gpu/drm/i915/intel_dp.c | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 34d8105..1d4bf78 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -434,10 +434,6 @@ vlv_power_sequencer_pipe(struct intel_dp *intel_dp)
 		      pipe_name(intel_dp->pps_pipe),
 		      port_name(intel_dig_port->port));
 
-	/* init power sequencer on this pipe and port */
-	intel_dp_init_panel_power_sequencer(dev, intel_dp);
-	intel_dp_init_panel_power_sequencer_registers(dev, intel_dp);
-
 	/*
 	 * Even vdd force doesn't work until we've made
 	 * the power sequencer lock in on the port.
-- 
2.0.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 3/3] drm/i915: Splitting PPS functions based on platform
  2014-11-10 11:28 [PATCH 0/3] Rearranging eDP PPS code Vandana Kannan
  2014-11-10 11:28 ` [PATCH 1/3] drm/i915: Move PPS calls to edp_init Vandana Kannan
  2014-11-10 11:28 ` [PATCH 2/3] drm/i915: Use vlv_power_sequencer_pipe() only to get pipe Vandana Kannan
@ 2014-11-10 11:28 ` Vandana Kannan
  2014-11-10 21:03   ` [PATCH 3/3] drm/i915: Splitting PPS functions based on shuang.he
  2014-12-12  9:35 ` [PATCH 0/3] Rearranging eDP PPS code Kannan, Vandana
  3 siblings, 1 reply; 8+ messages in thread
From: Vandana Kannan @ 2014-11-10 11:28 UTC (permalink / raw)
  To: intel-gfx

Modifying PPS functions in intel_dp.c to avoid using too many conditional
statements based on platform.
Calling vlv_initial_power_sequencer_setup() from vlv specific pps functions
to just initialize vlv specific data and continue with the rest of the generic
code.

Signed-off-by: Vandana Kannan <vandana.kannan@intel.com>
---
 drivers/gpu/drm/i915/intel_dp.c  | 215 ++++++++++++++++++++++++++-------------
 drivers/gpu/drm/i915/intel_drv.h |   3 +
 2 files changed, 146 insertions(+), 72 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 1d4bf78..1c6b4b3 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -520,8 +520,6 @@ vlv_initial_power_sequencer_setup(struct intel_dp *intel_dp)
 	DRM_DEBUG_KMS("initial power sequencer for port %c: pipe %c\n",
 		      port_name(port), pipe_name(intel_dp->pps_pipe));
 
-	intel_dp_init_panel_power_sequencer(dev, intel_dp);
-	intel_dp_init_panel_power_sequencer_registers(dev, intel_dp);
 }
 
 void vlv_power_sequencer_reset(struct drm_i915_private *dev_priv)
@@ -4714,6 +4712,7 @@ static void intel_edp_panel_vdd_sanitize(struct intel_dp *intel_dp)
 
 static void intel_dp_encoder_reset(struct drm_encoder *encoder)
 {
+	struct drm_device *dev = encoder->dev;
 	struct intel_dp *intel_dp;
 
 	if (to_intel_encoder(encoder)->type != INTEL_OUTPUT_EDP)
@@ -4727,8 +4726,10 @@ static void intel_dp_encoder_reset(struct drm_encoder *encoder)
 	 * Read out the current power sequencer assignment,
 	 * in case the BIOS did something with it.
 	 */
-	if (IS_VALLEYVIEW(encoder->dev))
-		vlv_initial_power_sequencer_setup(intel_dp);
+	if (IS_VALLEYVIEW(dev)) {
+		intel_dp_init_panel_power_sequencer(dev, intel_dp);
+		intel_dp_init_panel_power_sequencer_registers(dev, intel_dp);
+	}
 
 	intel_edp_panel_vdd_sanitize(intel_dp);
 
@@ -4917,45 +4918,26 @@ static void intel_dp_init_panel_power_timestamps(struct intel_dp *intel_dp)
 	intel_dp->last_backlight_off = jiffies;
 }
 
-static void
-intel_dp_init_panel_power_sequencer(struct drm_device *dev,
-				    struct intel_dp *intel_dp)
+static struct edp_power_seq pch_get_pps_registers(
+				struct intel_dp *intel_dp,
+				u32 pp_ctrl_reg, u32 pp_on_reg,
+				u32 pp_off_reg, u32 pp_div_reg)
 {
+	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 = dev->dev_private;
-	struct edp_power_seq cur, vbt, spec,
-		*final = &intel_dp->pps_delays;
 	u32 pp_on, pp_off, pp_div, pp;
-	int pp_ctrl_reg, pp_on_reg, pp_off_reg, pp_div_reg;
-
-	lockdep_assert_held(&dev_priv->pps_mutex);
+	struct edp_power_seq cur;
 
-	/* already initialized? */
-	if (final->t11_t12 != 0)
-		return;
-
-	if (HAS_PCH_SPLIT(dev)) {
-		pp_ctrl_reg = PCH_PP_CONTROL;
-		pp_on_reg = PCH_PP_ON_DELAYS;
-		pp_off_reg = PCH_PP_OFF_DELAYS;
-		pp_div_reg = PCH_PP_DIVISOR;
-	} else {
-		enum pipe pipe = vlv_power_sequencer_pipe(intel_dp);
-
-		pp_ctrl_reg = VLV_PIPE_PP_CONTROL(pipe);
-		pp_on_reg = VLV_PIPE_PP_ON_DELAYS(pipe);
-		pp_off_reg = VLV_PIPE_PP_OFF_DELAYS(pipe);
-		pp_div_reg = VLV_PIPE_PP_DIVISOR(pipe);
-	}
+	pp_on = I915_READ(pp_on_reg);
+	pp_off = I915_READ(pp_off_reg);
+	pp_div = I915_READ(pp_div_reg);
 
 	/* Workaround: Need to write PP_CONTROL with the unlock key as
 	 * the very first thing. */
 	pp = ironlake_get_pp_control(intel_dp);
 	I915_WRITE(pp_ctrl_reg, pp);
 
-	pp_on = I915_READ(pp_on_reg);
-	pp_off = I915_READ(pp_off_reg);
-	pp_div = I915_READ(pp_div_reg);
-
 	/* Pull timing values out of registers */
 	cur.t1_t3 = (pp_on & PANEL_POWER_UP_DELAY_MASK) >>
 		PANEL_POWER_UP_DELAY_SHIFT;
@@ -4970,10 +4952,61 @@ intel_dp_init_panel_power_sequencer(struct drm_device *dev,
 		PANEL_POWER_DOWN_DELAY_SHIFT;
 
 	cur.t11_t12 = ((pp_div & PANEL_POWER_CYCLE_DELAY_MASK) >>
-		       PANEL_POWER_CYCLE_DELAY_SHIFT) * 1000;
+			PANEL_POWER_CYCLE_DELAY_SHIFT) * 1000;
 
 	DRM_DEBUG_KMS("cur t1_t3 %d t8 %d t9 %d t10 %d t11_t12 %d\n",
-		      cur.t1_t3, cur.t8, cur.t9, cur.t10, cur.t11_t12);
+			cur.t1_t3, cur.t8, cur.t9, cur.t10, cur.t11_t12);
+
+	return cur;
+}
+
+
+static struct edp_power_seq pch_setup_pps(struct intel_dp *intel_dp)
+{
+	int pp_ctrl_reg, pp_on_reg, pp_off_reg, pp_div_reg;
+
+	pp_ctrl_reg = PCH_PP_CONTROL;
+	pp_on_reg = PCH_PP_ON_DELAYS;
+	pp_off_reg = PCH_PP_OFF_DELAYS;
+	pp_div_reg = PCH_PP_DIVISOR;
+
+	return pch_get_pps_registers(intel_dp, pp_ctrl_reg, pp_on_reg,
+			pp_off_reg, pp_div_reg);
+}
+
+static struct edp_power_seq vlv_setup_pps(struct intel_dp *intel_dp)
+{
+	enum pipe pipe = vlv_power_sequencer_pipe(intel_dp);
+	int pp_ctrl_reg, pp_on_reg, pp_off_reg, pp_div_reg;
+
+	vlv_initial_power_sequencer_setup(intel_dp);
+
+	pp_ctrl_reg = VLV_PIPE_PP_CONTROL(pipe);
+	pp_on_reg = VLV_PIPE_PP_ON_DELAYS(pipe);
+	pp_off_reg = VLV_PIPE_PP_OFF_DELAYS(pipe);
+	pp_div_reg = VLV_PIPE_PP_DIVISOR(pipe);
+
+	return pch_get_pps_registers(intel_dp, pp_ctrl_reg, pp_on_reg,
+			pp_off_reg, pp_div_reg);
+}
+
+static void
+intel_dp_init_panel_power_sequencer(struct drm_device *dev,
+				    struct intel_dp *intel_dp)
+{
+	struct drm_i915_private *dev_priv = dev->dev_private;
+	struct edp_power_seq cur = { 0, 0, 0, 0, 0 }, vbt, spec,
+		*final = &intel_dp->pps_delays;
+
+	lockdep_assert_held(&dev_priv->pps_mutex);
+
+	/* already initialized? */
+	if (final->t11_t12 != 0)
+		return;
+
+	/* Get chip specific register values */
+	if (intel_dp->setup_panel_power_seq)
+		cur = intel_dp->setup_panel_power_seq(intel_dp);
 
 	vbt = dev_priv->vbt.edp_pps;
 
@@ -5020,30 +5053,16 @@ intel_dp_init_panel_power_sequencer(struct drm_device *dev,
 		      intel_dp->backlight_on_delay, intel_dp->backlight_off_delay);
 }
 
-static void
-intel_dp_init_panel_power_sequencer_registers(struct drm_device *dev,
-					      struct intel_dp *intel_dp)
+static void pch_actually_set_pps_registers(
+			struct intel_dp *intel_dp,
+			int pp_on_reg, int pp_off_reg, int pp_div_reg,
+			int port_sel, int div)
 {
+	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 = dev->dev_private;
-	u32 pp_on, pp_off, pp_div, port_sel = 0;
-	int div = HAS_PCH_SPLIT(dev) ? intel_pch_rawclk(dev) : intel_hrawclk(dev);
-	int pp_on_reg, pp_off_reg, pp_div_reg;
-	enum port port = dp_to_dig_port(intel_dp)->port;
 	const struct edp_power_seq *seq = &intel_dp->pps_delays;
-
-	lockdep_assert_held(&dev_priv->pps_mutex);
-
-	if (HAS_PCH_SPLIT(dev)) {
-		pp_on_reg = PCH_PP_ON_DELAYS;
-		pp_off_reg = PCH_PP_OFF_DELAYS;
-		pp_div_reg = PCH_PP_DIVISOR;
-	} else {
-		enum pipe pipe = vlv_power_sequencer_pipe(intel_dp);
-
-		pp_on_reg = VLV_PIPE_PP_ON_DELAYS(pipe);
-		pp_off_reg = VLV_PIPE_PP_OFF_DELAYS(pipe);
-		pp_div_reg = VLV_PIPE_PP_DIVISOR(pipe);
-	}
+	u32 pp_on, pp_off, pp_div;
 
 	/*
 	 * And finally store the new values in the power sequencer. The
@@ -5056,24 +5075,13 @@ intel_dp_init_panel_power_sequencer_registers(struct drm_device *dev,
 	pp_on = (seq->t1_t3 << PANEL_POWER_UP_DELAY_SHIFT) |
 		(1 << PANEL_LIGHT_ON_DELAY_SHIFT);
 	pp_off = (1 << PANEL_LIGHT_OFF_DELAY_SHIFT) |
-		 (seq->t10 << PANEL_POWER_DOWN_DELAY_SHIFT);
+		(seq->t10 << PANEL_POWER_DOWN_DELAY_SHIFT);
 	/* Compute the divisor for the pp clock, simply match the Bspec
 	 * formula. */
 	pp_div = ((100 * div)/2 - 1) << PP_REFERENCE_DIVIDER_SHIFT;
 	pp_div |= (DIV_ROUND_UP(seq->t11_t12, 1000)
 			<< PANEL_POWER_CYCLE_DELAY_SHIFT);
 
-	/* Haswell doesn't have any port selection bits for the panel
-	 * power sequencer any more. */
-	if (IS_VALLEYVIEW(dev)) {
-		port_sel = PANEL_PORT_SELECT_VLV(port);
-	} else if (HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev)) {
-		if (port == PORT_A)
-			port_sel = PANEL_PORT_SELECT_DPA;
-		else
-			port_sel = PANEL_PORT_SELECT_DPD;
-	}
-
 	pp_on |= port_sel;
 
 	I915_WRITE(pp_on_reg, pp_on);
@@ -5084,6 +5092,64 @@ intel_dp_init_panel_power_sequencer_registers(struct drm_device *dev,
 		      I915_READ(pp_on_reg),
 		      I915_READ(pp_off_reg),
 		      I915_READ(pp_div_reg));
+
+}
+
+static void vlv_set_pps_registers(struct intel_dp *intel_dp,
+		enum port port)
+{
+	struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
+	struct drm_device *dev = intel_dig_port->base.base.dev;
+	int pp_on_reg, pp_off_reg, pp_div_reg, port_sel = 0, div;
+	enum pipe pipe = PIPE_A;
+
+	pipe = vlv_power_sequencer_pipe(intel_dp);
+
+	pp_on_reg = VLV_PIPE_PP_ON_DELAYS(pipe);
+	pp_off_reg = VLV_PIPE_PP_OFF_DELAYS(pipe);
+	pp_div_reg = VLV_PIPE_PP_DIVISOR(pipe);
+
+	port_sel = PANEL_PORT_SELECT_VLV(port);
+	div = intel_hrawclk(dev);
+
+	pch_actually_set_pps_registers(intel_dp, pp_on_reg, pp_off_reg,
+				pp_div_reg, port_sel, div);
+}
+
+static void pch_set_pps_registers(struct intel_dp *intel_dp,
+				enum port port)
+{
+	struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
+	struct drm_device *dev = intel_dig_port->base.base.dev;
+	int pp_on_reg, pp_off_reg, pp_div_reg, port_sel = 0, div;
+
+	pp_on_reg = PCH_PP_ON_DELAYS;
+	pp_off_reg = PCH_PP_OFF_DELAYS;
+	pp_div_reg = PCH_PP_DIVISOR;
+
+	if (HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev)) {
+		if (port == PORT_A)
+			port_sel = PANEL_PORT_SELECT_DPA;
+		else
+			port_sel = PANEL_PORT_SELECT_DPD;
+	}
+	div = intel_pch_rawclk(dev);
+
+	pch_actually_set_pps_registers(intel_dp, pp_on_reg, pp_off_reg,
+				pp_div_reg, port_sel, div);
+}
+
+static void
+intel_dp_init_panel_power_sequencer_registers(struct drm_device *dev,
+					      struct intel_dp *intel_dp)
+{
+	struct drm_i915_private *dev_priv = dev->dev_private;
+	enum port port = dp_to_dig_port(intel_dp)->port;
+
+	lockdep_assert_held(&dev_priv->pps_mutex);
+
+	if (intel_dp->set_pps_registers)
+		intel_dp->set_pps_registers(intel_dp, port);
 }
 
 void intel_dp_set_drrs_state(struct drm_device *dev, int refresh_rate)
@@ -5234,6 +5300,14 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,
 	if (!is_edp(intel_dp))
 		return true;
 
+	if (IS_VALLEYVIEW(dev)) {
+		intel_dp->setup_panel_power_seq = vlv_setup_pps;
+		intel_dp->set_pps_registers = vlv_set_pps_registers;
+	} else {
+		intel_dp->setup_panel_power_seq = pch_setup_pps;
+		intel_dp->set_pps_registers = pch_set_pps_registers;
+	}
+
 	pps_lock(intel_dp);
 	intel_edp_panel_vdd_sanitize(intel_dp);
 	pps_unlock(intel_dp);
@@ -5255,10 +5329,7 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,
 	/* We now know it's not a ghost, init power sequence regs. */
 	pps_lock(intel_dp);
 	intel_dp_init_panel_power_timestamps(intel_dp);
-	if (IS_VALLEYVIEW(dev))
-		vlv_initial_power_sequencer_setup(intel_dp);
-	else
-		intel_dp_init_panel_power_sequencer(dev, intel_dp);
+	intel_dp_init_panel_power_sequencer(dev, intel_dp);
 	intel_dp_init_panel_power_sequencer_registers(dev, intel_dp);
 	pps_unlock(intel_dp);
 
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 5c622ad..345bcbc 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -629,6 +629,9 @@ struct intel_dp {
 		struct mutex mutex;
 	} drrs_state;
 
+	struct edp_power_seq (*setup_panel_power_seq)
+				(struct intel_dp *intel_dp);
+	void (*set_pps_registers)(struct intel_dp *intel_dp, enum port port);
 };
 
 struct intel_digital_port {
-- 
2.0.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 3/3] drm/i915: Splitting PPS functions based on
  2014-11-10 11:28 ` [PATCH 3/3] drm/i915: Splitting PPS functions based on platform Vandana Kannan
@ 2014-11-10 21:03   ` shuang.he
  0 siblings, 0 replies; 8+ messages in thread
From: shuang.he @ 2014-11-10 21:03 UTC (permalink / raw)
  To: shuang.he, intel-gfx, vandana.kannan

Tested-By: PRC QA PRTS (Patch Regression Test System Contact: shuang.he@intel.com)
-------------------------------------Summary-------------------------------------
Platform: baseline_drm_intel_nightly_pass_rate->patch_applied_pass_rate
BYT: pass/total=277/348->276/348
PNV: pass/total=323/328->324/328
ILK: pass/total=328/330->330/330
IVB: pass/total=545/546->544/546
SNB: pass/total=558/563->558/563
HSW: pass/total=574/578->573/578
BDW: pass/total=435/435->434/435
-------------------------------------Detailed-------------------------------------
test_platform: test_suite, test_case, result_with_drm_intel_nightly(count, machine_id...)...->result_with_patch_applied(count, machine_id)...
BYT: Intel_gpu_tools, igt_gem_bad_reloc_negative-reloc-lut, NSPT(1, M29)PASS(9, M36M29) -> NSPT(1, M36)PASS(3, M36)
PNV: Intel_gpu_tools, igt_gem_concurrent_blit_gpu-bcs-early-read, PASS(7, M23M24) -> DMESG_WARN(1, M23)PASS(3, M23)
PNV: Intel_gpu_tools, igt_gem_mmap_offset_exhaustion, DMESG_WARN(2, M23M24)PASS(14, M24M23M7) -> PASS(4, M23)
PNV: Intel_gpu_tools, igt_gem_unref_active_buffers, DMESG_WARN(2, M23)PASS(14, M24M23M7) -> PASS(4, M23)
ILK: Intel_gpu_tools, igt_kms_render_gpu-blit, DMESG_WARN(1, M26)PASS(15, M6M26M37) -> PASS(4, M6)
ILK: Intel_gpu_tools, igt_kms_flip_wf_vblank-vs-dpms-interruptible, DMESG_WARN(1, M26)PASS(15, M6M26M37) -> PASS(4, M6)
IVB: Intel_gpu_tools, igt_gem_bad_reloc_negative-reloc, NSPT(2, M4M34)PASS(5, M34M4) -> NSPT(2, M34)PASS(2, M34)
SNB: Intel_gpu_tools, igt_kms_cursor_crc_cursor-256x256-random, PASS(4, M35M22) -> DMESG_WARN(1, M22)PASS(3, M22)
SNB: Intel_gpu_tools, igt_kms_cursor_crc_cursor-256x256-sliding, DMESG_WARN(1, M35)PASS(3, M22) -> PASS(4, M22)
HSW: Intel_gpu_tools, igt_gem_bad_reloc_negative-reloc, NSPT(4, M39M20M40)PASS(9, M40M39M20) -> NSPT(2, M20)PASS(2, M20)
BDW: Intel_gpu_tools, igt_gem_reset_stats_ban-bsd, PASS(10, M30M28) -> DMESG_WARN(1, M30)PASS(3, M30)
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 0/3] Rearranging eDP PPS code
  2014-11-10 11:28 [PATCH 0/3] Rearranging eDP PPS code Vandana Kannan
                   ` (2 preceding siblings ...)
  2014-11-10 11:28 ` [PATCH 3/3] drm/i915: Splitting PPS functions based on platform Vandana Kannan
@ 2014-12-12  9:35 ` Kannan, Vandana
  3 siblings, 0 replies; 8+ messages in thread
From: Kannan, Vandana @ 2014-12-12  9:35 UTC (permalink / raw)
  To: intel-gfx@lists.freedesktop.org

Gentle reminder for review..

- Vandana

On 10-Nov-14 4:58 PM, Kannan, Vandana wrote:
> In the earlier RFC patch series, PPS related code was moved to intel_panel.c
> to make it usable for all internal panels. In this patch series, the PPS
> related functions are split based on platform in intel_dp.c itself.
> This avoids having code split across intel_dp.c and intel_panel.c w.r.t
> pps_lock/unlock, other pps delay functions.
> Also, the code rearrangement is for eDP alone.
>
> Vandana Kannan (3):
>    drm/i915: Move PPS calls to edp_init
>    drm/i915: Use vlv_power_sequencer_pipe() only to get pipe
>    drm/i915: Splitting PPS functions based on platform
>
>   drivers/gpu/drm/i915/intel_dp.c  | 226 +++++++++++++++++++++++++--------------
>   drivers/gpu/drm/i915/intel_drv.h |   3 +
>   2 files changed, 147 insertions(+), 82 deletions(-)
>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/3] drm/i915: Move PPS calls to edp_init
  2014-11-10 11:28 ` [PATCH 1/3] drm/i915: Move PPS calls to edp_init Vandana Kannan
@ 2014-12-12 10:35   ` Jani Nikula
  0 siblings, 0 replies; 8+ messages in thread
From: Jani Nikula @ 2014-12-12 10:35 UTC (permalink / raw)
  To: Vandana Kannan, intel-gfx

On Mon, 10 Nov 2014, Vandana Kannan <vandana.kannan@intel.com> wrote:
> Calls to setup eDP panel power sequencer were there in dp_init_connector()
> function. Moving these calls to edp_init_connector() to keep all PPS calls
> together and under edp init.

It's a bit tricky, but I think you need to setup the power sequencer
stuff on eDP before you do AUX communication.

BR,
Jani.



>
> Signed-off-by: Vandana Kannan <vandana.kannan@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_dp.c | 15 +++++----------
>  1 file changed, 5 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index ceb528f..34d8105 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -5258,6 +5258,11 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,
>  
>  	/* We now know it's not a ghost, init power sequence regs. */
>  	pps_lock(intel_dp);
> +	intel_dp_init_panel_power_timestamps(intel_dp);
> +	if (IS_VALLEYVIEW(dev))
> +		vlv_initial_power_sequencer_setup(intel_dp);
> +	else
> +		intel_dp_init_panel_power_sequencer(dev, intel_dp);
>  	intel_dp_init_panel_power_sequencer_registers(dev, intel_dp);
>  	pps_unlock(intel_dp);
>  
> @@ -5402,16 +5407,6 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port,
>  		BUG();
>  	}
>  
> -	if (is_edp(intel_dp)) {
> -		pps_lock(intel_dp);
> -		intel_dp_init_panel_power_timestamps(intel_dp);
> -		if (IS_VALLEYVIEW(dev))
> -			vlv_initial_power_sequencer_setup(intel_dp);
> -		else
> -			intel_dp_init_panel_power_sequencer(dev, intel_dp);
> -		pps_unlock(intel_dp);
> -	}
> -
>  	intel_dp_aux_init(intel_dp, intel_connector);
>  
>  	/* init MST on ports that can support it */
> -- 
> 2.0.1
>

-- 
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/3] drm/i915: Use vlv_power_sequencer_pipe() only to get pipe
  2014-11-10 11:28 ` [PATCH 2/3] drm/i915: Use vlv_power_sequencer_pipe() only to get pipe Vandana Kannan
@ 2014-12-12 10:39   ` Jani Nikula
  0 siblings, 0 replies; 8+ messages in thread
From: Jani Nikula @ 2014-12-12 10:39 UTC (permalink / raw)
  To: Vandana Kannan, intel-gfx

On Mon, 10 Nov 2014, Vandana Kannan <vandana.kannan@intel.com> wrote:
> vlv_power_sequencer_pipe() calls into init PPS functions. Changing this
> function to make it only return pipe and not call PPS init.
> This is because PPS init calls into this function to get a pipe ID and all
> other callers just need the pipe ID.
>
> Signed-off-by: Vandana Kannan <vandana.kannan@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_dp.c | 4 ----
>  1 file changed, 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index 34d8105..1d4bf78 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -434,10 +434,6 @@ vlv_power_sequencer_pipe(struct intel_dp *intel_dp)
>  		      pipe_name(intel_dp->pps_pipe),
>  		      port_name(intel_dig_port->port));
>  
> -	/* init power sequencer on this pipe and port */
> -	intel_dp_init_panel_power_sequencer(dev, intel_dp);
> -	intel_dp_init_panel_power_sequencer_registers(dev, intel_dp);

IIUC if you end up this far in the function it's a special case, in most
cases it'll return with intel_dp->pps_pipe. And the special case
probably means you'll need to setup the registers and everything.

Ville?

BR,
Jani.


> -
>  	/*
>  	 * Even vdd force doesn't work until we've made
>  	 * the power sequencer lock in on the port.
> -- 
> 2.0.1
>

-- 
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2014-12-12 10:39 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-10 11:28 [PATCH 0/3] Rearranging eDP PPS code Vandana Kannan
2014-11-10 11:28 ` [PATCH 1/3] drm/i915: Move PPS calls to edp_init Vandana Kannan
2014-12-12 10:35   ` Jani Nikula
2014-11-10 11:28 ` [PATCH 2/3] drm/i915: Use vlv_power_sequencer_pipe() only to get pipe Vandana Kannan
2014-12-12 10:39   ` Jani Nikula
2014-11-10 11:28 ` [PATCH 3/3] drm/i915: Splitting PPS functions based on platform Vandana Kannan
2014-11-10 21:03   ` [PATCH 3/3] drm/i915: Splitting PPS functions based on shuang.he
2014-12-12  9:35 ` [PATCH 0/3] Rearranging eDP PPS code Kannan, Vandana

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.