Skip to content

Commit 316d607

Browse files
effective-lightgregkh
authored andcommitted
drm/amd/display: fix ABM disablement
commit b9f46f0 upstream. On recent versions of DMUB firmware, if we want to completely disable ABM we have to pass ABM_LEVEL_IMMEDIATE_DISABLE as the requested ABM level to DMUB. Otherwise, LCD eDP displays are unable to reach their maximum brightness levels. So, to fix this whenever the user requests an ABM level of 0 pass ABM_LEVEL_IMMEDIATE_DISABLE to DMUB instead. Also, to keep the user's experience consistent map ABM_LEVEL_IMMEDIATE_DISABLE to 0 when a user tries to read the requested ABM level. Cc: stable@vger.kernel.org # 6.1+ Reviewed-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 11831e8 commit 316d607

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6236,7 +6236,7 @@ int amdgpu_dm_connector_atomic_set_property(struct drm_connector *connector,
62366236
dm_new_state->underscan_enable = val;
62376237
ret = 0;
62386238
} else if (property == adev->mode_info.abm_level_property) {
6239-
dm_new_state->abm_level = val;
6239+
dm_new_state->abm_level = val ?: ABM_LEVEL_IMMEDIATE_DISABLE;
62406240
ret = 0;
62416241
}
62426242

@@ -6281,7 +6281,8 @@ int amdgpu_dm_connector_atomic_get_property(struct drm_connector *connector,
62816281
*val = dm_state->underscan_enable;
62826282
ret = 0;
62836283
} else if (property == adev->mode_info.abm_level_property) {
6284-
*val = dm_state->abm_level;
6284+
*val = (dm_state->abm_level != ABM_LEVEL_IMMEDIATE_DISABLE) ?
6285+
dm_state->abm_level : 0;
62856286
ret = 0;
62866287
}
62876288

@@ -6354,7 +6355,8 @@ void amdgpu_dm_connector_funcs_reset(struct drm_connector *connector)
63546355
state->pbn = 0;
63556356

63566357
if (connector->connector_type == DRM_MODE_CONNECTOR_eDP)
6357-
state->abm_level = amdgpu_dm_abm_level;
6358+
state->abm_level = amdgpu_dm_abm_level ?:
6359+
ABM_LEVEL_IMMEDIATE_DISABLE;
63586360

63596361
__drm_atomic_helper_connector_reset(connector, &state->base);
63606362
}

0 commit comments

Comments
 (0)