@@ -373,10 +373,16 @@ static void ilk_assign_csc(struct intel_crtc_state *crtc_state)
373373 bool limited_color_range = ilk_csc_limited_range (crtc_state );
374374
375375 if (crtc_state -> hw .ctm ) {
376+ drm_WARN_ON (& i915 -> drm , !crtc_state -> csc_enable );
377+
376378 ilk_csc_convert_ctm (crtc_state , & crtc_state -> csc , limited_color_range );
377379 } else if (crtc_state -> output_format != INTEL_OUTPUT_FORMAT_RGB ) {
380+ drm_WARN_ON (& i915 -> drm , !crtc_state -> csc_enable );
381+
378382 ilk_csc_copy (i915 , & crtc_state -> csc , & ilk_csc_matrix_rgb_to_ycbcr );
379383 } else if (limited_color_range ) {
384+ drm_WARN_ON (& i915 -> drm , !crtc_state -> csc_enable );
385+
380386 ilk_csc_copy (i915 , & crtc_state -> csc , & ilk_csc_matrix_limited_range );
381387 } else if (crtc_state -> csc_enable ) {
382388 /*
@@ -405,17 +411,29 @@ static void icl_assign_csc(struct intel_crtc_state *crtc_state)
405411{
406412 struct drm_i915_private * i915 = to_i915 (crtc_state -> uapi .crtc -> dev );
407413
408- if (crtc_state -> hw .ctm )
414+ if (crtc_state -> hw .ctm ) {
415+ drm_WARN_ON (& i915 -> drm , (crtc_state -> csc_mode & ICL_CSC_ENABLE ) == 0 );
416+
409417 ilk_csc_convert_ctm (crtc_state , & crtc_state -> csc , false);
410- else
418+ } else {
419+ drm_WARN_ON (& i915 -> drm , (crtc_state -> csc_mode & ICL_CSC_ENABLE ) != 0 );
420+
411421 intel_csc_clear (& crtc_state -> csc );
422+ }
423+
424+ if (crtc_state -> output_format != INTEL_OUTPUT_FORMAT_RGB ) {
425+ drm_WARN_ON (& i915 -> drm , (crtc_state -> csc_mode & ICL_OUTPUT_CSC_ENABLE ) == 0 );
412426
413- if (crtc_state -> output_format != INTEL_OUTPUT_FORMAT_RGB )
414427 ilk_csc_copy (i915 , & crtc_state -> output_csc , & ilk_csc_matrix_rgb_to_ycbcr );
415- else if (crtc_state -> limited_color_range )
428+ } else if (crtc_state -> limited_color_range ) {
429+ drm_WARN_ON (& i915 -> drm , (crtc_state -> csc_mode & ICL_OUTPUT_CSC_ENABLE ) == 0 );
430+
416431 ilk_csc_copy (i915 , & crtc_state -> output_csc , & ilk_csc_matrix_limited_range );
417- else
432+ } else {
433+ drm_WARN_ON (& i915 -> drm , (crtc_state -> csc_mode & ICL_OUTPUT_CSC_ENABLE ) != 0 );
434+
418435 intel_csc_clear (& crtc_state -> output_csc );
436+ }
419437}
420438
421439static void icl_load_csc_matrix (const struct intel_crtc_state * crtc_state )
@@ -474,10 +492,17 @@ static void chv_load_cgm_csc(struct intel_crtc *crtc,
474492
475493static void chv_assign_csc (struct intel_crtc_state * crtc_state )
476494{
477- if (crtc_state -> hw .ctm )
495+ struct drm_i915_private * i915 = to_i915 (crtc_state -> uapi .crtc -> dev );
496+
497+ if (crtc_state -> hw .ctm ) {
498+ drm_WARN_ON (& i915 -> drm , (crtc_state -> cgm_mode & CGM_PIPE_MODE_CSC ) == 0 );
499+
478500 chv_cgm_csc_convert_ctm (crtc_state , & crtc_state -> csc );
479- else
501+ } else {
502+ drm_WARN_ON (& i915 -> drm , (crtc_state -> cgm_mode & CGM_PIPE_MODE_CSC ) != 0 );
503+
480504 intel_csc_clear (& crtc_state -> csc );
505+ }
481506}
482507
483508/* convert hw value with given bit_precision to lut property val */
0 commit comments