Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 01/15] drm/i915: Make dp aux pack/unpack public outside intel_dp.c
@ 2014-11-14 16:52 Rodrigo Vivi
  2014-11-14 16:52 ` [PATCH 02/15] drm/i915: Introduce intel_psr.c Rodrigo Vivi
                   ` (14 more replies)
  0 siblings, 15 replies; 69+ messages in thread
From: Rodrigo Vivi @ 2014-11-14 16:52 UTC (permalink / raw)
  To: intel-gfx; +Cc: Rodrigo Vivi

No functional change. Just making it public for use outside intel_dp.c
Allowing split psr functions.

Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/i915/intel_dp.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 45b53ff..01834cd 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -227,8 +227,7 @@ intel_dp_mode_valid(struct drm_connector *connector,
 	return MODE_OK;
 }
 
-static uint32_t
-pack_aux(const uint8_t *src, int src_bytes)
+uint32_t intel_dp_pack_aux(const uint8_t *src, int src_bytes)
 {
 	int	i;
 	uint32_t v = 0;
@@ -240,8 +239,7 @@ pack_aux(const uint8_t *src, int src_bytes)
 	return v;
 }
 
-static void
-unpack_aux(uint32_t src, uint8_t *dst, int dst_bytes)
+void intel_dp_unpack_aux(uint32_t src, uint8_t *dst, int dst_bytes)
 {
 	int i;
 	if (dst_bytes > 4)
@@ -863,7 +861,8 @@ intel_dp_aux_ch(struct intel_dp *intel_dp,
 			/* Load the send data into the aux channel data registers */
 			for (i = 0; i < send_bytes; i += 4)
 				I915_WRITE(ch_data + i,
-					   pack_aux(send + i, send_bytes - i));
+					   intel_dp_pack_aux(send + i,
+							     send_bytes - i));
 
 			/* Send the command and wait for it to complete */
 			I915_WRITE(ch_ctl, send_ctl);
@@ -917,8 +916,8 @@ intel_dp_aux_ch(struct intel_dp *intel_dp,
 		recv_bytes = recv_size;
 
 	for (i = 0; i < recv_bytes; i += 4)
-		unpack_aux(I915_READ(ch_data + i),
-			   recv + i, recv_bytes - i);
+		intel_dp_unpack_aux(I915_READ(ch_data + i),
+				    recv + i, recv_bytes - i);
 
 	ret = recv_bytes;
 out:
@@ -2159,7 +2158,7 @@ static void intel_edp_psr_enable_sink(struct intel_dp *intel_dp)
 	/* Setup AUX registers */
 	for (i = 0; i < sizeof(aux_msg); i += 4)
 		I915_WRITE(EDP_PSR_AUX_DATA1(dev) + i,
-			   pack_aux(&aux_msg[i], sizeof(aux_msg) - i));
+			   intel_dp_pack_aux(&aux_msg[i], sizeof(aux_msg) - i));
 
 	I915_WRITE(EDP_PSR_AUX_CTL(dev),
 		   DP_AUX_CH_CTL_TIME_OUT_400us |
-- 
1.9.3

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

^ permalink raw reply related	[flat|nested] 69+ messages in thread
* [PATCH 1/2] drm/i915: VLV/CHV PSR: Increase wait delay time before active PSR.
@ 2015-07-24 23:38 Rodrigo Vivi
  2015-07-24 23:42 ` [PATCH] " Rodrigo Vivi
  0 siblings, 1 reply; 69+ messages in thread
From: Rodrigo Vivi @ 2015-07-24 23:38 UTC (permalink / raw)
  To: intel-gfx; +Cc: Rodrigo Vivi

Since active function on VLV immediately activate PSR let's give more
time for idleness. Different from core platforms where we have idle_frames
count.

Also kms_psr_sink_crc now is automated and always get this:

[drm:intel_enable_pipe] enabling pipe A
[drm:intel_edp_backlight_on]
[drm:intel_panel_enable_backlight] pipe
[drm:intel_panel_enable_backlight] pipe A
[drm:intel_panel_actually_set_backlight] set backlight PWM = 7812

PSR gets enabled somewhere here after backlight.

[drm:intel_get_hpd_pins] hotplug event received, stat 0x00000000, dig 0x0
[drm:vlv_pipe_set_fifo_size] Pipe A FIFO split 511 / 511 / 511
[drm:vlv_update_wm] Setting FIFO watermarks - A: plane=391, cursor=63, sp

PSR gets flushed around here by intel_atomic_commit

[drm:vlv_pipe_set_fifo_size] Pipe A FIFO split 511 / 511 / 511
[drm:vlv_update_wm] Setting FIFO watermarks - A: plane=391, cursor=63, sp
[drm:intel_set_memory_cxsr] memory self-refresh is enabled
[drm:intel_connector_check_state] [CONNECTOR:39:eDP-1]
[drm:check_encoder_state] [ENCODER:30:DAC-30]
[drm:check_encoder_state] [ENCODER:31:TMDS-31]
[drm:check_encoder_state] [ENCODER:36:TMDS-36]
[drm:check_encoder_state] [ENCODER:38:TMDS-38]
[drm:check_crtc_state] [CRTC:21]
[drm:check_crtc_state] [CRTC:26]
[drm:intel_psr_activate [i915]] *ERROR* PSR Active
[drm:intel_get_hpd_pins] hotplug event received, stat 0x00000000, dig 0x
[drm:intel_set_cpu_fifo_underrun_reporting [i915]] *ERROR* pipe A underrun
[drm:intel_cpu_fifo_underrun_irq_handler [i915]] *ERROR* CPU pipe A FIFO
Underrun.

It is true that in a product we won't keep disabling and enabling planes so
frequently, but for safeness let's stay conservative.

It is also true that 500ms is an etternity. But PSR is anyway a power saving
feature for idle scenario. So if it is idle feature stays on and 500ms to get
it reanabled is not that insane.

v2: Rebase over intel_psr.c and fix typo.
v3: Revival: Manual tests indicated that this is needed. With a short delay
    there is a huge risk of getting blank screens when planes are being enabled.
v4: Revival 2 with reasonable delay. 1/2 sec instead of 5. VBT is 10 sec but
    actually time for link training what we aren't doing, but with only 100 sec
    in some cases kms_psr_sink_crc manual was showing blank screen,
    so let's use this for now. Also changed comment by a FIXME.
v5: Rebase after a long time, remove FIXME and update comment above.

Reviewed-by: Durgadoss R <durgadoss.r@intel.com> (v4)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/i915/intel_psr.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_psr.c b/drivers/gpu/drm/i915/intel_psr.c
index acd8ec8..0f446b7 100644
--- a/drivers/gpu/drm/i915/intel_psr.c
+++ b/drivers/gpu/drm/i915/intel_psr.c
@@ -698,6 +698,7 @@ void intel_psr_flush(struct drm_device *dev,
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct drm_crtc *crtc;
 	enum pipe pipe;
+	int delay = msecs_to_jiffies(HAS_DDI(dev) ? 100 : 500);
 
 	mutex_lock(&dev_priv->psr.lock);
 	if (!dev_priv->psr.enabled) {
@@ -733,7 +734,7 @@ void intel_psr_flush(struct drm_device *dev,
 
 	if (!dev_priv->psr.active && !dev_priv->psr.busy_frontbuffer_bits)
 		schedule_delayed_work(&dev_priv->psr.work,
-				      msecs_to_jiffies(100));
+				      msecs_to_jiffies(delay));
 	mutex_unlock(&dev_priv->psr.lock);
 }
 
-- 
1.9.3

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

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

end of thread, other threads:[~2015-08-05  8:08 UTC | newest]

Thread overview: 69+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-14 16:52 [PATCH 01/15] drm/i915: Make dp aux pack/unpack public outside intel_dp.c Rodrigo Vivi
2014-11-14 16:52 ` [PATCH 02/15] drm/i915: Introduce intel_psr.c Rodrigo Vivi
2014-11-18 18:16   ` R, Durgadoss
2014-11-14 16:52 ` [PATCH 03/15] drm/i915: Add PSR docbook Rodrigo Vivi
2014-11-18 18:18   ` R, Durgadoss
2014-11-14 16:52 ` [PATCH 04/15] drm/i915: Parse VBT PSR block Rodrigo Vivi
2015-02-10 19:26   ` Damien Lespiau
2014-11-14 16:52 ` [PATCH 05/15] drm/i915: HSW/BDW PSR Set idle_frames = VBT + 1 Rodrigo Vivi
2014-11-14 16:52 ` [PATCH 06/15] drm/i915: PSR get full link off x standby from VBT Rodrigo Vivi
2014-11-18 18:21   ` R, Durgadoss
2014-11-21 18:46     ` Daniel Vetter
2014-11-14 16:52 ` [PATCH 07/15] drm/i915: PSR skip aux on wake up as defined by VBT Rodrigo Vivi
2014-11-17 18:48   ` Rodrigo Vivi
2014-11-14 16:52 ` [PATCH 08/15] drm/i915: remove PSR BDW single frame update Rodrigo Vivi
2014-11-18 18:23   ` R, Durgadoss
2014-11-19 15:34     ` [PATCH] " Rodrigo Vivi
2014-11-21 14:55       ` shuang.he
2014-11-14 16:52 ` [PATCH 09/15] drm/i915: Fix intel_psr_is_enabled function and document it Rodrigo Vivi
2014-11-18 18:24   ` R, Durgadoss
2014-11-19 13:51     ` Daniel Vetter
2014-11-19 15:34       ` [PATCH] drm/i915: Remove intel_psr_is_enabled function Rodrigo Vivi
2014-11-20  5:56         ` R, Durgadoss
2014-11-20 10:22           ` Rodrigo Vivi
2014-11-21 13:12             ` shuang.he
2014-11-21 18:29             ` Daniel Vetter
2014-11-21 11:35               ` Rodrigo Vivi
2014-11-21 18:28                 ` shuang.he
2014-11-21 13:14         ` shuang.he
2014-11-14 16:52 ` [PATCH 10/15] drm/i915: Add PSR registers for PSR VLV/CHV Rodrigo Vivi
2014-11-18 18:27   ` R, Durgadoss
2014-11-14 16:52 ` [PATCH 11/15] drm/i915: PSR VLV/CHV: Introduce setup, enable and disable functions Rodrigo Vivi
2014-11-18 18:32   ` R, Durgadoss
2014-11-19 18:20     ` Rodrigo Vivi
2014-11-19 19:22       ` R, Durgadoss
2014-11-19 15:37         ` [PATCH] " Rodrigo Vivi
2014-11-20  5:54           ` R, Durgadoss
2014-11-19 22:30         ` [PATCH 11/15] " Rodrigo Vivi
2014-11-14 16:52 ` [PATCH 12/15] drm/i915: VLV/CHV PSR Software timer mode Rodrigo Vivi
2014-11-18 18:36   ` R, Durgadoss
2014-11-19 15:37     ` [PATCH] " Rodrigo Vivi
2014-11-20  5:52       ` R, Durgadoss
2014-11-14 16:52 ` [PATCH 13/15] drm/i915: VLV/CHV PSR: Increase wait delay time before active PSR Rodrigo Vivi
2014-11-18 18:37   ` R, Durgadoss
2014-11-19 15:38     ` [PATCH] " Rodrigo Vivi
2014-11-21 18:45       ` Daniel Vetter
2014-11-21 22:00         ` Vivi, Rodrigo
2014-11-24  9:22           ` Daniel Vetter
2014-11-22  9:28       ` [PATCH] drm/i915: VLV/CHV PSR: Increase wait delay time shuang.he
2014-11-14 16:52 ` [PATCH 14/15] drm/i915: VLV/CHV PSR debugfs Rodrigo Vivi
2014-11-18 18:40   ` R, Durgadoss
2014-11-14 16:52 ` [PATCH 15/15] drm/i915: Enable PSR for Baytrail and Braswell Rodrigo Vivi
2014-11-15  9:47   ` [PATCH 15/15] drm/i915: Enable PSR for Baytrail and shuang.he
2014-11-17 18:18   ` [PATCH 15/15] drm/i915: Enable PSR for Baytrail and Braswell Daniel Vetter
2014-11-17 18:30     ` Rodrigo Vivi
2014-11-17 18:51       ` Daniel Vetter
2014-11-17 19:12         ` Rodrigo Vivi
2014-11-17 20:18           ` Daniel Vetter
2014-11-20 17:25   ` Rodrigo Vivi
2014-11-20 17:58     ` R, Durgadoss
2014-11-20 11:44       ` [PATCH] " Rodrigo Vivi
2014-11-22 17:08         ` shuang.he
2014-11-17 18:14 ` [PATCH 01/15] drm/i915: Make dp aux pack/unpack public outside intel_dp.c Daniel Vetter
  -- strict thread matches above, loose matches on Subject: below --
2015-07-24 23:38 [PATCH 1/2] drm/i915: VLV/CHV PSR: Increase wait delay time before active PSR Rodrigo Vivi
2015-07-24 23:42 ` [PATCH] " Rodrigo Vivi
2015-07-25  9:18   ` shuang.he
2015-07-27  8:36   ` Daniel Vetter
2015-07-27 18:37     ` Vivi, Rodrigo
2015-07-28  8:19       ` Daniel Vetter
2015-07-31  0:07         ` Rodrigo Vivi
2015-08-05  8:08           ` Daniel Vetter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox