Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCHv2 3/3] drm/i915/dp: Include the time taken by AUX Tx for timeout
  2024-09-24  6:13 [PATCHv2 0/3] Some correction in the DP Link Training sequence Arun R Murthy
@ 2024-09-24  6:13 ` Arun R Murthy
  0 siblings, 0 replies; 6+ messages in thread
From: Arun R Murthy @ 2024-09-24  6:13 UTC (permalink / raw)
  To: intel-xe, intel-gfx
  Cc: Arun R Murthy, Srikanth V NagaVenkata, Suraj Kandpal, Jani Nikula

As per DP spec the timeout for LANE_CHANNEL_EQ_DONE is 400ms. But this
timeout value is exclusively for the Aux RD Interval and excludes the
time consumed for the AUX Tx (i.e reading/writing FFE presets). Add
another 50ms for these AUX Tx to the 400ms timeout.
Ref: "Figure 3-52: 128b132b DP DPTC LANEx_CHANNEL_EQ_DONE Sequence" of
DP2.1a spec.

Co-developed-by: Srikanth V NagaVenkata <nagavenkata.srikanth.v@intel.com>
Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
Acked-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dp_link_training.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_training.c b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
index 460426a3b506..60bf375b9aec 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
@@ -1414,7 +1414,7 @@ intel_dp_128b132b_lane_eq(struct intel_dp *intel_dp,
 	}
 
 	/* Time budget for the LANEx_EQ_DONE Sequence */
-	deadline = jiffies + msecs_to_jiffies_timeout(400);
+	deadline = jiffies + msecs_to_jiffies_timeout(450);
 
 	for (try = 0; try < max_tries; try++) {
 		fsleep(delay_us);
-- 
2.25.1


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

* [PATCHv2 0/3] Some correction in the DP Link Training sequence
@ 2024-09-24  6:36 Arun R Murthy
  2024-09-24  6:36 ` [PATCHv2 1/3] drm/i915/dp: use fsleep instead of usleep_range for LT Arun R Murthy
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Arun R Murthy @ 2024-09-24  6:36 UTC (permalink / raw)
  To: intel-xe, intel-gfx; +Cc: Arun R Murthy


Arun R Murthy (3):
  drm/i915/dp: use fsleep instead of usleep_range for LT
  drm/i915/dp: read Aux RD interval just before setting the FFE preset
  drm/i915/dp: Include the time taken by AUX Tx for timeout

 .../drm/i915/display/intel_dp_link_training.c | 22 +++++++++----------
 1 file changed, 11 insertions(+), 11 deletions(-)

-- 
2.25.1


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

* [PATCHv2 1/3] drm/i915/dp: use fsleep instead of usleep_range for LT
  2024-09-24  6:36 [PATCHv2 0/3] Some correction in the DP Link Training sequence Arun R Murthy
@ 2024-09-24  6:36 ` Arun R Murthy
  2024-09-24  6:36 ` [PATCHv3 2/3] drm/i915/dp: read Aux RD interval just before setting the FFE preset Arun R Murthy
  2024-09-24  6:36 ` [PATCHv2 3/3] drm/i915/dp: Include the time taken by AUX Tx for timeout Arun R Murthy
  2 siblings, 0 replies; 6+ messages in thread
From: Arun R Murthy @ 2024-09-24  6:36 UTC (permalink / raw)
  To: intel-xe, intel-gfx; +Cc: Arun R Murthy, Srikanth V NagaVenkata, Jani Nikula

Sleeping for < 10us use udelay, for 10us to 20ms use usleep_range() and
for > 10ms use msleep. flseep() will call the particular API based on
the above condition. (Documentation/timers/timers-howto.rst)
Aux RD Interval value depends on the value read from the dpcd register
which is updated from the sink device, hence use flseep.

Co-developed-by: Srikanth V NagaVenkata <nagavenkata.srikanth.v@intel.com>
Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dp_link_training.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_training.c b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
index 397cc4ebae52..f41b69840ad9 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
@@ -898,7 +898,7 @@ intel_dp_link_training_clock_recovery(struct intel_dp *intel_dp,
 
 	voltage_tries = 1;
 	for (cr_tries = 0; cr_tries < max_cr_tries; ++cr_tries) {
-		usleep_range(delay_us, 2 * delay_us);
+		fsleep(delay_us);
 
 		if (drm_dp_dpcd_read_phy_link_status(&intel_dp->aux, dp_phy,
 						     link_status) < 0) {
@@ -1040,7 +1040,7 @@ intel_dp_link_training_channel_equalization(struct intel_dp *intel_dp,
 	}
 
 	for (tries = 0; tries < 5; tries++) {
-		usleep_range(delay_us, 2 * delay_us);
+		fsleep(delay_us);
 
 		if (drm_dp_dpcd_read_phy_link_status(&intel_dp->aux, dp_phy,
 						     link_status) < 0) {
@@ -1417,7 +1417,7 @@ intel_dp_128b132b_lane_eq(struct intel_dp *intel_dp,
 	deadline = jiffies + msecs_to_jiffies_timeout(400);
 
 	for (try = 0; try < max_tries; try++) {
-		usleep_range(delay_us, 2 * delay_us);
+		fsleep(delay_us);
 
 		/*
 		 * The delay may get updated. The transmitter shall read the
-- 
2.25.1


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

* [PATCHv3 2/3] drm/i915/dp: read Aux RD interval just before setting the FFE preset
  2024-09-24  6:36 [PATCHv2 0/3] Some correction in the DP Link Training sequence Arun R Murthy
  2024-09-24  6:36 ` [PATCHv2 1/3] drm/i915/dp: use fsleep instead of usleep_range for LT Arun R Murthy
@ 2024-09-24  6:36 ` Arun R Murthy
  2024-09-24  6:36 ` [PATCHv2 3/3] drm/i915/dp: Include the time taken by AUX Tx for timeout Arun R Murthy
  2 siblings, 0 replies; 6+ messages in thread
From: Arun R Murthy @ 2024-09-24  6:36 UTC (permalink / raw)
  To: intel-xe, intel-gfx; +Cc: Arun R Murthy, Srikanth V NagaVenkata

Figure 3-52: 128b132b DP DPTC LANEx_CHANNEL_EQ_DONE Sequence of
DP2.1a spec.
After reading LANEx_CHANNEL_EQ_DONE, read the FFE presets.
AUX_RD_INTERVAL and then write the new FFE presets.

Co-developed-by: Srikanth V NagaVenkata <nagavenkata.srikanth.v@intel.com>
Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>

squash 2

Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
 .../gpu/drm/i915/display/intel_dp_link_training.c  | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_training.c b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
index f41b69840ad9..ec6c323a49c0 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
@@ -1419,12 +1419,6 @@ intel_dp_128b132b_lane_eq(struct intel_dp *intel_dp,
 	for (try = 0; try < max_tries; try++) {
 		fsleep(delay_us);
 
-		/*
-		 * The delay may get updated. The transmitter shall read the
-		 * delay before link status during link training.
-		 */
-		delay_us = drm_dp_128b132b_read_aux_rd_interval(&intel_dp->aux);
-
 		if (drm_dp_dpcd_read_link_status(&intel_dp->aux, link_status) < 0) {
 			lt_err(intel_dp, DP_PHY_DPRX, "Failed to read link status\n");
 			return false;
@@ -1451,8 +1445,14 @@ intel_dp_128b132b_lane_eq(struct intel_dp *intel_dp,
 		if (time_after(jiffies, deadline))
 			timeout = true; /* try one last time after deadline */
 
-		/* Update signal levels and training set as requested. */
 		intel_dp_get_adjust_train(intel_dp, crtc_state, DP_PHY_DPRX, link_status);
+		/*
+		 * During LT, Tx shall read DPCD 02216h before DPCD 00202h to 00207h and
+		 * 0200Ch through 0200Fh.
+		 */
+		delay_us = drm_dp_128b132b_read_aux_rd_interval(&intel_dp->aux);
+
+		/* Update signal levels and training set as requested. */
 		if (!intel_dp_update_link_train(intel_dp, crtc_state, DP_PHY_DPRX)) {
 			lt_err(intel_dp, DP_PHY_DPRX, "Failed to update TX FFE settings\n");
 			return false;
-- 
2.25.1


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

* [PATCHv2 3/3] drm/i915/dp: Include the time taken by AUX Tx for timeout
  2024-09-24  6:36 [PATCHv2 0/3] Some correction in the DP Link Training sequence Arun R Murthy
  2024-09-24  6:36 ` [PATCHv2 1/3] drm/i915/dp: use fsleep instead of usleep_range for LT Arun R Murthy
  2024-09-24  6:36 ` [PATCHv3 2/3] drm/i915/dp: read Aux RD interval just before setting the FFE preset Arun R Murthy
@ 2024-09-24  6:36 ` Arun R Murthy
  2 siblings, 0 replies; 6+ messages in thread
From: Arun R Murthy @ 2024-09-24  6:36 UTC (permalink / raw)
  To: intel-xe, intel-gfx
  Cc: Arun R Murthy, Srikanth V NagaVenkata, Suraj Kandpal, Jani Nikula

As per DP spec the timeout for LANE_CHANNEL_EQ_DONE is 400ms. But this
timeout value is exclusively for the Aux RD Interval and excludes the
time consumed for the AUX Tx (i.e reading/writing FFE presets). Add
another 50ms for these AUX Tx to the 400ms timeout.
Ref: "Figure 3-52: 128b132b DP DPTC LANEx_CHANNEL_EQ_DONE Sequence" of
DP2.1a spec.

Co-developed-by: Srikanth V NagaVenkata <nagavenkata.srikanth.v@intel.com>
Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
Acked-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dp_link_training.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_training.c b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
index ec6c323a49c0..ddf91b3533a4 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
@@ -1414,7 +1414,7 @@ intel_dp_128b132b_lane_eq(struct intel_dp *intel_dp,
 	}
 
 	/* Time budget for the LANEx_EQ_DONE Sequence */
-	deadline = jiffies + msecs_to_jiffies_timeout(400);
+	deadline = jiffies + msecs_to_jiffies_timeout(450);
 
 	for (try = 0; try < max_tries; try++) {
 		fsleep(delay_us);
-- 
2.25.1


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

* [PATCHv2 3/3] drm/i915/dp: Include the time taken by AUX Tx for timeout
  2024-09-25  3:44 [PATCHv2 0/3] Some correction in the DP Link Training sequence Arun R Murthy
@ 2024-09-25  3:44 ` Arun R Murthy
  0 siblings, 0 replies; 6+ messages in thread
From: Arun R Murthy @ 2024-09-25  3:44 UTC (permalink / raw)
  To: intel-xe, intel-gfx
  Cc: Arun R Murthy, Srikanth V NagaVenkata, Suraj Kandpal, Jani Nikula

As per DP spec the timeout for LANE_CHANNEL_EQ_DONE is 400ms. But this
timeout value is exclusively for the Aux RD Interval and excludes the
time consumed for the AUX Tx (i.e reading/writing FFE presets). Add
another 50ms for these AUX Tx to the 400ms timeout.
Ref: "Figure 3-52: 128b132b DP DPTC LANEx_CHANNEL_EQ_DONE Sequence" of
DP2.1a spec.

Co-developed-by: Srikanth V NagaVenkata <nagavenkata.srikanth.v@intel.com>
Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
Acked-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dp_link_training.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_training.c b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
index 1bac00e46533..0dde31f2df20 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
@@ -1414,7 +1414,7 @@ intel_dp_128b132b_lane_eq(struct intel_dp *intel_dp,
 	}
 
 	/* Time budget for the LANEx_EQ_DONE Sequence */
-	deadline = jiffies + msecs_to_jiffies_timeout(400);
+	deadline = jiffies + msecs_to_jiffies_timeout(450);
 
 	for (try = 0; try < max_tries; try++) {
 		fsleep(delay_us);
-- 
2.25.1


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

end of thread, other threads:[~2024-09-25  3:54 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-24  6:36 [PATCHv2 0/3] Some correction in the DP Link Training sequence Arun R Murthy
2024-09-24  6:36 ` [PATCHv2 1/3] drm/i915/dp: use fsleep instead of usleep_range for LT Arun R Murthy
2024-09-24  6:36 ` [PATCHv3 2/3] drm/i915/dp: read Aux RD interval just before setting the FFE preset Arun R Murthy
2024-09-24  6:36 ` [PATCHv2 3/3] drm/i915/dp: Include the time taken by AUX Tx for timeout Arun R Murthy
  -- strict thread matches above, loose matches on Subject: below --
2024-09-25  3:44 [PATCHv2 0/3] Some correction in the DP Link Training sequence Arun R Murthy
2024-09-25  3:44 ` [PATCHv2 3/3] drm/i915/dp: Include the time taken by AUX Tx for timeout Arun R Murthy
2024-09-24  6:13 [PATCHv2 0/3] Some correction in the DP Link Training sequence Arun R Murthy
2024-09-24  6:13 ` [PATCHv2 3/3] drm/i915/dp: Include the time taken by AUX Tx for timeout Arun R Murthy

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