aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/0255-drm-amd-display-sometime-VtotalMin-less-than-VTotal-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/0255-drm-amd-display-sometime-VtotalMin-less-than-VTotal-.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/0255-drm-amd-display-sometime-VtotalMin-less-than-VTotal-.patch47
1 files changed, 47 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/0255-drm-amd-display-sometime-VtotalMin-less-than-VTotal-.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/0255-drm-amd-display-sometime-VtotalMin-less-than-VTotal-.patch
new file mode 100644
index 00000000..29461e57
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/0255-drm-amd-display-sometime-VtotalMin-less-than-VTotal-.patch
@@ -0,0 +1,47 @@
+From 29be0ac5310f933e19b3a1a4cf98d6a9726b64c9 Mon Sep 17 00:00:00 2001
+From: Charlene Liu <charlene.liu@amd.com>
+Date: Wed, 1 Mar 2017 18:20:58 -0500
+Subject: [PATCH 0255/4131] drm/amd/display: sometime VtotalMin less than
+ VTotal (rounding issue)
+
+Signed-off-by: Charlene Liu <charlene.liu@amd.com>
+Acked-by: Harry Wentland <Harry.Wentland@amd.com>
+Reviewed-by: Jordan Lazare <Jordan.Lazare@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/display/modules/freesync/freesync.c | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
+index 2026ef3..7a0731e 100644
+--- a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
++++ b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
+@@ -905,7 +905,6 @@ void mod_freesync_notify_mode_change(struct mod_freesync *mod_freesync,
+ core_freesync = MOD_FREESYNC_TO_CORE(mod_freesync);
+
+ for (stream_index = 0; stream_index < num_streams; stream_index++) {
+-
+ map_index = map_index_from_stream(core_freesync,
+ streams[stream_index]);
+
+@@ -913,11 +912,12 @@ void mod_freesync_notify_mode_change(struct mod_freesync *mod_freesync,
+
+ if (core_freesync->map[map_index].caps->supported) {
+ /* Update the field rate for new timing */
+- state->nominal_refresh_rate_in_micro_hz = 1000000 *
+- div64_u64(div64_u64((streams[stream_index]->
+- timing.pix_clk_khz * 1000),
+- streams[stream_index]->timing.v_total),
+- streams[stream_index]->timing.h_total);
++ unsigned long long temp;
++ temp = streams[stream_index]->timing.pix_clk_khz;
++ temp *= 1000ULL * 1000ULL * 1000ULL;
++ temp = div_u64(temp, streams[stream_index]->timing.h_total);
++ temp = div_u64(temp, streams[stream_index]->timing.v_total);
++ state->nominal_refresh_rate_in_micro_hz = (unsigned int) temp;
+
+ /* Update the stream */
+ update_stream(core_freesync, streams[stream_index]);
+--
+2.7.4
+