Merge drm/drm-next into drm-misc-next
[linux-block.git] / drivers / gpu / drm / amd / display / amdgpu_dm / amdgpu_dm_crc.c
index 9bfb040352e9875584b4efbb137c84e2fb7a0bf9..01fc5717b657fb73ecb5b5d41ca03d511ba358a3 100644 (file)
@@ -46,8 +46,23 @@ static enum amdgpu_dm_pipe_crc_source dm_parse_crc_source(const char *source)
        return AMDGPU_DM_PIPE_CRC_SOURCE_INVALID;
 }
 
-int amdgpu_dm_crtc_set_crc_source(struct drm_crtc *crtc, const char *src_name,
-                          size_t *values_cnt)
+int
+amdgpu_dm_crtc_verify_crc_source(struct drm_crtc *crtc, const char *src_name,
+                                size_t *values_cnt)
+{
+       enum amdgpu_dm_pipe_crc_source source = dm_parse_crc_source(src_name);
+
+       if (source < 0) {
+               DRM_DEBUG_DRIVER("Unknown CRC source %s for CRTC%d\n",
+                                src_name, crtc->index);
+               return -EINVAL;
+       }
+
+       *values_cnt = 3;
+       return 0;
+}
+
+int amdgpu_dm_crtc_set_crc_source(struct drm_crtc *crtc, const char *src_name)
 {
        struct dm_crtc_state *crtc_state = to_dm_crtc_state(crtc->state);
        struct dc_stream_state *stream_state = crtc_state->stream;
@@ -83,7 +98,6 @@ int amdgpu_dm_crtc_set_crc_source(struct drm_crtc *crtc, const char *src_name,
                        return -EINVAL;
        }
 
-       *values_cnt = 3;
        /* Reset crc_skipped on dm state */
        crtc_state->crc_skip_count = 0;
        return 0;