static void i9xx_read_luts(struct intel_crtc_state *crtc_state)
 {
+       if (!crtc_state->gamma_enable)
+               return;
+
        crtc_state->base.gamma_lut = i9xx_read_lut_8(crtc_state);
 }
 
 
 static void i965_read_luts(struct intel_crtc_state *crtc_state)
 {
+       if (!crtc_state->gamma_enable)
+               return;
+
        if (crtc_state->gamma_mode == GAMMA_MODE_MODE_8BIT)
                crtc_state->base.gamma_lut = i9xx_read_lut_8(crtc_state);
        else
 
 static void chv_read_luts(struct intel_crtc_state *crtc_state)
 {
-       if (crtc_state->gamma_mode == GAMMA_MODE_MODE_8BIT)
-               crtc_state->base.gamma_lut = i9xx_read_lut_8(crtc_state);
-       else
+       if (crtc_state->cgm_mode & CGM_PIPE_MODE_GAMMA)
                crtc_state->base.gamma_lut = chv_read_cgm_lut(crtc_state);
+       else
+               i965_read_luts(crtc_state);
 }
 
 static struct drm_property_blob *
 
 static void ilk_read_luts(struct intel_crtc_state *crtc_state)
 {
+       if (!crtc_state->gamma_enable)
+               return;
+
+       if ((crtc_state->csc_mode & CSC_POSITION_BEFORE_GAMMA) == 0)
+               return;
+
        if (crtc_state->gamma_mode == GAMMA_MODE_MODE_8BIT)
                crtc_state->base.gamma_lut = i9xx_read_lut_8(crtc_state);
        else
 
 static void glk_read_luts(struct intel_crtc_state *crtc_state)
 {
+       if (!crtc_state->gamma_enable)
+               return;
+
        if (crtc_state->gamma_mode == GAMMA_MODE_MODE_8BIT)
                crtc_state->base.gamma_lut = i9xx_read_lut_8(crtc_state);
        else