リビジョン | 8e3a1c500288d806e80b2de08eb9186653267e6f (tree) |
---|---|
日時 | 2019-01-13 17:51:11 |
作者 | Nicholas Kazlauskas <nicholas.kazlauskas@amd....> |
コミッター | Greg Kroah-Hartman |
drm/amd/display: Fix unintialized max_bpc state values
commit 49f1c44b581b08e3289127ffe58bd208c3166701 upstream.
[Why]
If the "max bpc" isn't explicitly set in the atomic state then it
have a value of 0. This has the correct behavior of limiting a panel
to 8bpc in the case where the panel supports 8bpc. In the case of eDP
panels this isn't a true assumption - there are panels that can only
do 6bpc.
Banding occurs for these displays.
[How]
Initialize the max_bpc when the connector resets to 8bpc. Also carry
over the value when the state is duplicated.
Bugzilla: https://bugs.freedesktop.org/108825
Fixes: 307638884f72 ("drm/amd/display: Support amdgpu "max bpc" connector property")
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
@@ -2894,6 +2894,7 @@ void amdgpu_dm_connector_funcs_reset(struct drm_connector *connector) | ||
2894 | 2894 | state->underscan_enable = false; |
2895 | 2895 | state->underscan_hborder = 0; |
2896 | 2896 | state->underscan_vborder = 0; |
2897 | + state->max_bpc = 8; | |
2897 | 2898 | |
2898 | 2899 | __drm_atomic_helper_connector_reset(connector, &state->base); |
2899 | 2900 | } |
@@ -2911,6 +2912,7 @@ amdgpu_dm_connector_atomic_duplicate_state(struct drm_connector *connector) | ||
2911 | 2912 | if (new_state) { |
2912 | 2913 | __drm_atomic_helper_connector_duplicate_state(connector, |
2913 | 2914 | &new_state->base); |
2915 | + new_state->max_bpc = state->max_bpc; | |
2914 | 2916 | return &new_state->base; |
2915 | 2917 | } |
2916 | 2918 |