[Why]
This change is a refactor in preparation for adding locking and removing
the requirement for a stream state on the CRTC for enabling CRC capture
to fix igt@kms_plane_multiple@* warnings.

[How]
We can get the aux by finding the matching connector for the CRTC
with the assumption that we're not doing cloning.

Cc: David Francis <david.fran...@amd.com>
Cc: Bhawanpreet Lakha <bhawanpreet.la...@amd.com>
Cc: Leo Li <sunpeng...@amd.com>
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlaus...@amd.com>
---
 .../drm/amd/display/amdgpu_dm/amdgpu_dm_crc.c | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.c
index f675626ef56b..c57ff8821fe2 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.c
@@ -101,7 +101,6 @@ int amdgpu_dm_crtc_set_crc_source(struct drm_crtc *crtc, 
const char *src_name)
        struct amdgpu_device *adev = crtc->dev->dev_private;
        struct dm_crtc_state *crtc_state = to_dm_crtc_state(crtc->state);
        struct dc_stream_state *stream_state = crtc_state->stream;
-       struct amdgpu_dm_connector *aconn;
        struct drm_dp_aux *aux = NULL;
        bool enable = false;
        bool enabled = false;
@@ -137,9 +136,21 @@ int amdgpu_dm_crtc_set_crc_source(struct drm_crtc *crtc, 
const char *src_name)
         * DPRX DITHER  | XXXX        | Enable DPRX CRC, need 'aux', set dither
         */
        if (dm_is_crc_source_dprx(source) ||
-               (source == AMDGPU_DM_PIPE_CRC_SOURCE_NONE &&
-                dm_is_crc_source_dprx(crtc_state->crc_src))) {
-               aconn = stream_state->link->priv;
+           (source == AMDGPU_DM_PIPE_CRC_SOURCE_NONE &&
+            dm_is_crc_source_dprx(crtc_state->crc_src))) {
+               struct amdgpu_dm_connector *aconn = NULL;
+               struct drm_connector *connector;
+               struct drm_connector_list_iter conn_iter;
+
+               drm_connector_list_iter_begin(crtc->dev, &conn_iter);
+               drm_for_each_connector_iter (connector, &conn_iter) {
+                       if (!connector->state || connector->state->crtc != crtc)
+                               continue;
+
+                       aconn = to_amdgpu_dm_connector(connector);
+                       break;
+               }
+               drm_connector_list_iter_end(&conn_iter);
 
                if (!aconn) {
                        DRM_DEBUG_DRIVER("No amd connector matching CRTC-%d\n", 
crtc->index);
-- 
2.17.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to