From 0b1366ede9ef2ec5cd03f10f6e72aba5819f2fd0 Mon Sep 17 00:00:00 2001 From: Ard van Breemen Date: Mon, 25 Jul 2016 13:36:04 +0200 Subject: [PATCH 1/2] Add 5.4GBPS lane speed as a valid one, fallback to half of that speed --- drivers/gpu/drm/exynos/exynos_dp_core.c | 11 ++++++++--- drivers/gpu/drm/exynos/exynos_dp_core.h | 3 ++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_dp_core.c b/drivers/gpu/drm/exynos/exynos_dp_core.c index f38537f26987b4..8f20405d324347 100755 --- a/drivers/gpu/drm/exynos/exynos_dp_core.c +++ b/drivers/gpu/drm/exynos/exynos_dp_core.c @@ -671,9 +671,14 @@ static void exynos_dp_init_training(struct exynos_dp_device *dp, if ((dp->link_train.link_rate != LINK_RATE_1_62GBPS) && (dp->link_train.link_rate != LINK_RATE_2_70GBPS)) { - dev_err(dp->dev, "Rx Max Link Rate is abnormal :%x !\n", - dp->link_train.link_rate); - dp->link_train.link_rate = LINK_RATE_1_62GBPS; + if (dp->link_train.link_rate == LINK_RATE_5_40GBPS) { + dev_err(dp->dev, "Rx Max Link Rate 5.4GBPS is too high, fallback to half!\n") + dp->link_train.link_rate = LINK_RATE_2_70GBPS; + } else { + dev_err(dp->dev, "Rx Max Link Rate is abnormal :%x !\n", + dp->link_train.link_rate); + dp->link_train.link_rate = LINK_RATE_1_62GBPS; + } } if (dp->link_train.lane_count == 0) { diff --git a/drivers/gpu/drm/exynos/exynos_dp_core.h b/drivers/gpu/drm/exynos/exynos_dp_core.h index 02cc4f9ab9034f..331c01076500b7 100644 --- a/drivers/gpu/drm/exynos/exynos_dp_core.h +++ b/drivers/gpu/drm/exynos/exynos_dp_core.h @@ -23,7 +23,8 @@ enum link_rate_type { LINK_RATE_1_62GBPS = 0x06, - LINK_RATE_2_70GBPS = 0x0a + LINK_RATE_2_70GBPS = 0x0a, + LINK_RATE_5_40GBPS = 0x14 }; enum link_lane_count_type { From 972d0093eb12076a21be8a31f7ae572a8657abd4 Mon Sep 17 00:00:00 2001 From: Ard van Breemen Date: Mon, 25 Jul 2016 14:24:08 +0200 Subject: [PATCH 2/2] Fix ; and reworded fallback --- drivers/gpu/drm/exynos/exynos_dp_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/exynos/exynos_dp_core.c b/drivers/gpu/drm/exynos/exynos_dp_core.c index 8f20405d324347..05adc5f924f3b1 100755 --- a/drivers/gpu/drm/exynos/exynos_dp_core.c +++ b/drivers/gpu/drm/exynos/exynos_dp_core.c @@ -672,7 +672,7 @@ static void exynos_dp_init_training(struct exynos_dp_device *dp, if ((dp->link_train.link_rate != LINK_RATE_1_62GBPS) && (dp->link_train.link_rate != LINK_RATE_2_70GBPS)) { if (dp->link_train.link_rate == LINK_RATE_5_40GBPS) { - dev_err(dp->dev, "Rx Max Link Rate 5.4GBPS is too high, fallback to half!\n") + dev_err(dp->dev, "Rx Max Link Rate 5.4GBPS is too high, fallback to 2.7GBPS!\n"); dp->link_train.link_rate = LINK_RATE_2_70GBPS; } else { dev_err(dp->dev, "Rx Max Link Rate is abnormal :%x !\n",