- WARN_ON(offset & ~PAL_PREC_INDEX_VALUE_MASK);
-
- I915_WRITE(PREC_PAL_INDEX(pipe),
- (offset ? PAL_PREC_SPLIT_MODE : 0) |
- PAL_PREC_AUTO_INCREMENT |
- offset);
-
- if (gamma_lut) {
- const struct drm_color_lut *lut = gamma_lut->data;
-
- for (i = 0; i < lut_size; i++)
- I915_WRITE(PREC_PAL_DATA(pipe), ilk_lut_10(&lut[i]));
-
- /*
- * Program the max register to clamp values > 1.0.
- * ToDo: Extend the ABI to be able to program values
- * from 1.0 to 3.0
- */
- I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 0), (1 << 16));
- I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 1), (1 << 16));
- I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 2), (1 << 16));
-
- /*
- * Program the gc max 2 register to clamp values > 1.0.
- * ToDo: Extend the ABI to be able to program values
- * from 3.0 to 7.0
- */
- if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv)) {
- I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 0), (1 << 16));
- I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 1), (1 << 16));
- I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 2), (1 << 16));
- }
- } else {
- for (i = 0; i < lut_size; i++) {
- u32 v = (i * ((1 << 10) - 1)) / (lut_size - 1);
-
- I915_WRITE(PREC_PAL_DATA(pipe),
- (v << 20) | (v << 10) | v);
- }
-
- I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 0), (1 << 16));
- I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 1), (1 << 16));
- I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 2), (1 << 16));
-
- /*
- * Program the gc max 2 register to clamp values > 1.0.
- * ToDo: Extend the ABI to be able to program values
- * from 3.0 to 7.0
- */
- if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv)) {
- I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 0), (1 << 16));
- I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 1), (1 << 16));
- I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 2), (1 << 16));
- }
- }