diff options
author | Samson Tam <Samson.Tam@amd.com> | 2018-03-01 11:06:34 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-03-14 16:16:34 -0400 |
commit | 5231f5d1124eef853573cb3d2e3dc3c4ddc43e22 (patch) | |
tree | e4b05557f79a3c2b9f42fd29eca99e3d7cb9870f /drivers/gpu/drm/amd/display/modules/freesync/freesync.c | |
parent | df534fff0d23ba55a5880e592ec2901fdc09fdf6 (diff) |
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>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/display/modules/freesync/freesync.c')
-rw-r--r-- | drivers/gpu/drm/amd/display/modules/freesync/freesync.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c index e849b704f2f6..27d4003aa2c7 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 @@ | |||
46 | 46 | ||
47 | #define FREESYNC_NO_STATIC_FOR_INTERNAL_REGKEY "DalFreeSyncNoStaticForInternal" | 47 | #define FREESYNC_NO_STATIC_FOR_INTERNAL_REGKEY "DalFreeSyncNoStaticForInternal" |
48 | 48 | ||
49 | #define FREESYNC_DEFAULT_REGKEY "LCDFreeSyncDefault" | ||
50 | |||
49 | struct gradual_static_ramp { | 51 | struct gradual_static_ramp { |
50 | bool ramp_is_active; | 52 | bool ramp_is_active; |
51 | bool ramp_direction_is_up; | 53 | bool ramp_direction_is_up; |
@@ -125,6 +127,8 @@ struct freesync_entity { | |||
125 | struct freesync_registry_options { | 127 | struct freesync_registry_options { |
126 | bool drr_external_supported; | 128 | bool drr_external_supported; |
127 | bool drr_internal_supported; | 129 | bool drr_internal_supported; |
130 | bool lcd_freesync_default_set; | ||
131 | int lcd_freesync_default_value; | ||
128 | }; | 132 | }; |
129 | 133 | ||
130 | struct core_freesync { | 134 | struct core_freesync { |
@@ -189,6 +193,16 @@ struct mod_freesync *mod_freesync_create(struct dc *dc) | |||
189 | (data & 1) ? false : true; | 193 | (data & 1) ? false : true; |
190 | } | 194 | } |
191 | 195 | ||
196 | if (dm_read_persistent_data(dc->ctx, NULL, NULL, | ||
197 | FREESYNC_DEFAULT_REGKEY, | ||
198 | &data, sizeof(data), &flag)) { | ||
199 | core_freesync->opts.lcd_freesync_default_set = true; | ||
200 | core_freesync->opts.lcd_freesync_default_value = data; | ||
201 | } else { | ||
202 | core_freesync->opts.lcd_freesync_default_set = false; | ||
203 | core_freesync->opts.lcd_freesync_default_value = 0; | ||
204 | } | ||
205 | |||
192 | return &core_freesync->public; | 206 | return &core_freesync->public; |
193 | 207 | ||
194 | fail_construct: | 208 | fail_construct: |
@@ -294,6 +308,18 @@ bool mod_freesync_add_stream(struct mod_freesync *mod_freesync, | |||
294 | core_freesync->map[core_freesync->num_entities].user_enable. | 308 | core_freesync->map[core_freesync->num_entities].user_enable. |
295 | enable_for_video = | 309 | enable_for_video = |
296 | (persistent_freesync_enable & 4) ? true : false; | 310 | (persistent_freesync_enable & 4) ? true : false; |
311 | /* If FreeSync display and LCDFreeSyncDefault is set, use as default values write back to userenable */ | ||
312 | } else if (caps->supported && (core_freesync->opts.lcd_freesync_default_set)) { | ||
313 | core_freesync->map[core_freesync->num_entities].user_enable.enable_for_gaming = | ||
314 | (core_freesync->opts.lcd_freesync_default_value & 1) ? true : false; | ||
315 | core_freesync->map[core_freesync->num_entities].user_enable.enable_for_static = | ||
316 | (core_freesync->opts.lcd_freesync_default_value & 2) ? true : false; | ||
317 | core_freesync->map[core_freesync->num_entities].user_enable.enable_for_video = | ||
318 | (core_freesync->opts.lcd_freesync_default_value & 4) ? true : false; | ||
319 | dm_write_persistent_data(dc->ctx, stream->sink, | ||
320 | FREESYNC_REGISTRY_NAME, | ||
321 | "userenable", &core_freesync->opts.lcd_freesync_default_value, | ||
322 | sizeof(int), &flag); | ||
297 | } else { | 323 | } else { |
298 | core_freesync->map[core_freesync->num_entities].user_enable. | 324 | core_freesync->map[core_freesync->num_entities].user_enable. |
299 | enable_for_gaming = false; | 325 | enable_for_gaming = false; |