Skip to content

Commit b9f46f0

Browse files
effective-lightalexdeucher
authored andcommitted
drm/amd/display: fix ABM disablement
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: [email protected] # 6.1+ Reviewed-by: Harry Wentland <[email protected]> Signed-off-by: Hamza Mahfooz <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent 47831f4 commit b9f46f0

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
@@ -6267,7 +6267,7 @@ int amdgpu_dm_connector_atomic_set_property(struct drm_connector *connector,
62676267
dm_new_state->underscan_enable = val;
62686268
ret = 0;
62696269
} else if (property == adev->mode_info.abm_level_property) {
6270-
dm_new_state->abm_level = val;
6270+
dm_new_state->abm_level = val ?: ABM_LEVEL_IMMEDIATE_DISABLE;
62716271
ret = 0;
62726272
}
62736273

@@ -6312,7 +6312,8 @@ int amdgpu_dm_connector_atomic_get_property(struct drm_connector *connector,
63126312
*val = dm_state->underscan_enable;
63136313
ret = 0;
63146314
} else if (property == adev->mode_info.abm_level_property) {
6315-
*val = dm_state->abm_level;
6315+
*val = (dm_state->abm_level != ABM_LEVEL_IMMEDIATE_DISABLE) ?
6316+
dm_state->abm_level : 0;
63166317
ret = 0;
63176318
}
63186319

@@ -6385,7 +6386,8 @@ void amdgpu_dm_connector_funcs_reset(struct drm_connector *connector)
63856386
state->pbn = 0;
63866387

63876388
if (connector->connector_type == DRM_MODE_CONNECTOR_eDP)
6388-
state->abm_level = amdgpu_dm_abm_level;
6389+
state->abm_level = amdgpu_dm_abm_level ?:
6390+
ABM_LEVEL_IMMEDIATE_DISABLE;
63896391

63906392
__drm_atomic_helper_connector_reset(connector, &state->base);
63916393
}

0 commit comments

Comments
 (0)