aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3764-drm-amd-display-add-support-for-regkey-LCDFreeSyncDe.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3764-drm-amd-display-add-support-for-regkey-LCDFreeSyncDe.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3764-drm-amd-display-add-support-for-regkey-LCDFreeSyncDe.patch74
1 files changed, 74 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3764-drm-amd-display-add-support-for-regkey-LCDFreeSyncDe.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3764-drm-amd-display-add-support-for-regkey-LCDFreeSyncDe.patch
new file mode 100644
index 00000000..c79d7cc8
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3764-drm-amd-display-add-support-for-regkey-LCDFreeSyncDe.patch
@@ -0,0 +1,74 @@
+From 846f7318fb0afb68e8a0f63a3b3706288ce52630 Mon Sep 17 00:00:00 2001
+From: Samson Tam <Samson.Tam@amd.com>
+Date: Thu, 1 Mar 2018 11:06:34 -0500
+Subject: [PATCH 3764/4131] drm/amd/display: add support for regkey
+ "LCDFreeSyncDefault"
+
+Signed-off-by: Samson Tam <Samson.Tam@amd.com>
+Reviewed-by: Anthony Koo <Anthony.Koo@amd.com>
+Acked-by: Harry Wentland <harry.wentland@amd.com>
+---
+ .../drm/amd/display/modules/freesync/freesync.c | 26 ++++++++++++++++++++++
+ 1 file changed, 26 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
+index e849b70..27d4003 100644
+--- a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
++++ b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
+@@ -46,6 +46,8 @@
+
+ #define FREESYNC_NO_STATIC_FOR_INTERNAL_REGKEY "DalFreeSyncNoStaticForInternal"
+
++#define FREESYNC_DEFAULT_REGKEY "LCDFreeSyncDefault"
++
+ struct gradual_static_ramp {
+ bool ramp_is_active;
+ bool ramp_direction_is_up;
+@@ -125,6 +127,8 @@ struct freesync_entity {
+ struct freesync_registry_options {
+ bool drr_external_supported;
+ bool drr_internal_supported;
++ bool lcd_freesync_default_set;
++ int lcd_freesync_default_value;
+ };
+
+ struct core_freesync {
+@@ -189,6 +193,16 @@ struct mod_freesync *mod_freesync_create(struct dc *dc)
+ (data & 1) ? false : true;
+ }
+
++ if (dm_read_persistent_data(dc->ctx, NULL, NULL,
++ FREESYNC_DEFAULT_REGKEY,
++ &data, sizeof(data), &flag)) {
++ core_freesync->opts.lcd_freesync_default_set = true;
++ core_freesync->opts.lcd_freesync_default_value = data;
++ } else {
++ core_freesync->opts.lcd_freesync_default_set = false;
++ core_freesync->opts.lcd_freesync_default_value = 0;
++ }
++
+ return &core_freesync->public;
+
+ fail_construct:
+@@ -294,6 +308,18 @@ bool mod_freesync_add_stream(struct mod_freesync *mod_freesync,
+ core_freesync->map[core_freesync->num_entities].user_enable.
+ enable_for_video =
+ (persistent_freesync_enable & 4) ? true : false;
++ /* If FreeSync display and LCDFreeSyncDefault is set, use as default values write back to userenable */
++ } else if (caps->supported && (core_freesync->opts.lcd_freesync_default_set)) {
++ core_freesync->map[core_freesync->num_entities].user_enable.enable_for_gaming =
++ (core_freesync->opts.lcd_freesync_default_value & 1) ? true : false;
++ core_freesync->map[core_freesync->num_entities].user_enable.enable_for_static =
++ (core_freesync->opts.lcd_freesync_default_value & 2) ? true : false;
++ core_freesync->map[core_freesync->num_entities].user_enable.enable_for_video =
++ (core_freesync->opts.lcd_freesync_default_value & 4) ? true : false;
++ dm_write_persistent_data(dc->ctx, stream->sink,
++ FREESYNC_REGISTRY_NAME,
++ "userenable", &core_freesync->opts.lcd_freesync_default_value,
++ sizeof(int), &flag);
+ } else {
+ core_freesync->map[core_freesync->num_entities].user_enable.
+ enable_for_gaming = false;
+--
+2.7.4
+