aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThierry Reding <[email protected]>2015-12-03 13:07:43 +0100
committerThierry Reding <[email protected]>2019-10-28 11:18:44 +0100
commitcb072eebfa038361b4f578b65a205ad0abc6fe88 (patch)
tree3e5d3e0925116499f3028b067c4fd789f26167f6
parent480770440ad1681e5100e9719fc5f9bb8bc46ca8 (diff)
drm/tegra: dp: Read fast training capability from link
While probing the DisplayPort link, query the fast training capability. If supported, drivers can use the fast link training sequence instead of the more involved full link training sequence. Signed-off-by: Thierry Reding <[email protected]>
-rw-r--r--drivers/gpu/drm/tegra/dp.c3
-rw-r--r--drivers/gpu/drm/tegra/dp.h7
2 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gpu/drm/tegra/dp.c b/drivers/gpu/drm/tegra/dp.c
index f9234f66062d..97fc0225483f 100644
--- a/drivers/gpu/drm/tegra/dp.c
+++ b/drivers/gpu/drm/tegra/dp.c
@@ -11,12 +11,14 @@
static void drm_dp_link_caps_reset(struct drm_dp_link_caps *caps)
{
caps->enhanced_framing = false;
+ caps->fast_training = false;
}
void drm_dp_link_caps_copy(struct drm_dp_link_caps *dest,
const struct drm_dp_link_caps *src)
{
dest->enhanced_framing = src->enhanced_framing;
+ dest->fast_training = src->fast_training;
}
static void drm_dp_link_reset(struct drm_dp_link *link)
@@ -61,6 +63,7 @@ int drm_dp_link_probe(struct drm_dp_aux *aux, struct drm_dp_link *link)
link->max_lanes = drm_dp_max_lane_count(dpcd);
link->caps.enhanced_framing = drm_dp_enhanced_frame_cap(dpcd);
+ link->caps.fast_training = drm_dp_fast_training_cap(dpcd);
link->rate = link->max_rate;
link->lanes = link->max_lanes;
diff --git a/drivers/gpu/drm/tegra/dp.h b/drivers/gpu/drm/tegra/dp.h
index 6246f9afb5fe..d6ae477bab5c 100644
--- a/drivers/gpu/drm/tegra/dp.h
+++ b/drivers/gpu/drm/tegra/dp.h
@@ -21,6 +21,13 @@ struct drm_dp_link_caps {
* enhanced framing capability (mandatory as of DP 1.2)
*/
bool enhanced_framing;
+
+ /**
+ * @fast_training:
+ *
+ * AUX CH handshake not required for link training
+ */
+ bool fast_training;
};
void drm_dp_link_caps_copy(struct drm_dp_link_caps *dest,