diff options
| -rw-r--r-- | drivers/gpu/drm/drm_crtc.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 9 | ||||
| -rw-r--r-- | drivers/gpu/drm/nouveau/nv04_crtc.c | 10 | ||||
| -rw-r--r-- | drivers/gpu/drm/nouveau/nv50_crtc.c | 9 | ||||
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_display.c | 10 | ||||
| -rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c | 2 | ||||
| -rw-r--r-- | include/drm/drm_crtc.h | 2 |
7 files changed, 16 insertions, 28 deletions
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index bdd0d903872a..37e0b4fa482a 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c | |||
| @@ -2541,7 +2541,7 @@ int drm_mode_gamma_set_ioctl(struct drm_device *dev, | |||
| 2541 | goto out; | 2541 | goto out; |
| 2542 | } | 2542 | } |
| 2543 | 2543 | ||
| 2544 | crtc->funcs->gamma_set(crtc, r_base, g_base, b_base, crtc->gamma_size); | 2544 | crtc->funcs->gamma_set(crtc, r_base, g_base, b_base, 0, crtc->gamma_size); |
| 2545 | 2545 | ||
| 2546 | out: | 2546 | out: |
| 2547 | mutex_unlock(&dev->mode_config.mutex); | 2547 | mutex_unlock(&dev->mode_config.mutex); |
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index ec8336a4b7de..6bb5ffc76ced 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
| @@ -4330,15 +4330,12 @@ void intel_crtc_fb_gamma_get(struct drm_crtc *crtc, u16 *red, u16 *green, | |||
| 4330 | } | 4330 | } |
| 4331 | 4331 | ||
| 4332 | static void intel_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, | 4332 | static void intel_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, |
| 4333 | u16 *blue, uint32_t size) | 4333 | u16 *blue, uint32_t start, uint32_t size) |
| 4334 | { | 4334 | { |
| 4335 | int end = (start + size > 256) ? 256 : start + size, i; | ||
| 4335 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); | 4336 | struct intel_crtc *intel_crtc = to_intel_crtc(crtc); |
| 4336 | int i; | ||
| 4337 | |||
| 4338 | if (size != 256) | ||
| 4339 | return; | ||
| 4340 | 4337 | ||
| 4341 | for (i = 0; i < 256; i++) { | 4338 | for (i = start; i < end; i++) { |
| 4342 | intel_crtc->lut_r[i] = red[i] >> 8; | 4339 | intel_crtc->lut_r[i] = red[i] >> 8; |
| 4343 | intel_crtc->lut_g[i] = green[i] >> 8; | 4340 | intel_crtc->lut_g[i] = green[i] >> 8; |
| 4344 | intel_crtc->lut_b[i] = blue[i] >> 8; | 4341 | intel_crtc->lut_b[i] = blue[i] >> 8; |
diff --git a/drivers/gpu/drm/nouveau/nv04_crtc.c b/drivers/gpu/drm/nouveau/nv04_crtc.c index 96f46c421fa5..497df8765f28 100644 --- a/drivers/gpu/drm/nouveau/nv04_crtc.c +++ b/drivers/gpu/drm/nouveau/nv04_crtc.c | |||
| @@ -742,15 +742,13 @@ nv_crtc_gamma_load(struct drm_crtc *crtc) | |||
| 742 | } | 742 | } |
| 743 | 743 | ||
| 744 | static void | 744 | static void |
| 745 | nv_crtc_gamma_set(struct drm_crtc *crtc, u16 *r, u16 *g, u16 *b, uint32_t size) | 745 | nv_crtc_gamma_set(struct drm_crtc *crtc, u16 *r, u16 *g, u16 *b, uint32_t start, |
| 746 | uint32_t size) | ||
| 746 | { | 747 | { |
| 748 | int end = (start + size > 256) ? 256 : start + size, i; | ||
| 747 | struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc); | 749 | struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc); |
| 748 | int i; | ||
| 749 | |||
| 750 | if (size != 256) | ||
| 751 | return; | ||
| 752 | 750 | ||
| 753 | for (i = 0; i < 256; i++) { | 751 | for (i = start; i < end; i++) { |
| 754 | nv_crtc->lut.r[i] = r[i]; | 752 | nv_crtc->lut.r[i] = r[i]; |
| 755 | nv_crtc->lut.g[i] = g[i]; | 753 | nv_crtc->lut.g[i] = g[i]; |
| 756 | nv_crtc->lut.b[i] = b[i]; | 754 | nv_crtc->lut.b[i] = b[i]; |
diff --git a/drivers/gpu/drm/nouveau/nv50_crtc.c b/drivers/gpu/drm/nouveau/nv50_crtc.c index dbd9a63bc7f2..bfd4ca2fe7ef 100644 --- a/drivers/gpu/drm/nouveau/nv50_crtc.c +++ b/drivers/gpu/drm/nouveau/nv50_crtc.c | |||
| @@ -398,15 +398,12 @@ nv50_crtc_cursor_move(struct drm_crtc *crtc, int x, int y) | |||
| 398 | 398 | ||
| 399 | static void | 399 | static void |
| 400 | nv50_crtc_gamma_set(struct drm_crtc *crtc, u16 *r, u16 *g, u16 *b, | 400 | nv50_crtc_gamma_set(struct drm_crtc *crtc, u16 *r, u16 *g, u16 *b, |
| 401 | uint32_t size) | 401 | uint32_t start, uint32_t size) |
| 402 | { | 402 | { |
| 403 | int end = (start + size > 256) ? 256 : start + size, i; | ||
| 403 | struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc); | 404 | struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc); |
| 404 | int i; | ||
| 405 | |||
| 406 | if (size != 256) | ||
| 407 | return; | ||
| 408 | 405 | ||
| 409 | for (i = 0; i < 256; i++) { | 406 | for (i = start; i < end; i++) { |
| 410 | nv_crtc->lut.r[i] = r[i]; | 407 | nv_crtc->lut.r[i] = r[i]; |
| 411 | nv_crtc->lut.g[i] = g[i]; | 408 | nv_crtc->lut.g[i] = g[i]; |
| 412 | nv_crtc->lut.b[i] = b[i]; | 409 | nv_crtc->lut.b[i] = b[i]; |
diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c index 6130ec9ed502..5764f4d3b4f1 100644 --- a/drivers/gpu/drm/radeon/radeon_display.c +++ b/drivers/gpu/drm/radeon/radeon_display.c | |||
| @@ -161,17 +161,13 @@ void radeon_crtc_fb_gamma_get(struct drm_crtc *crtc, u16 *red, u16 *green, | |||
| 161 | } | 161 | } |
| 162 | 162 | ||
| 163 | static void radeon_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, | 163 | static void radeon_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, |
| 164 | u16 *blue, uint32_t size) | 164 | u16 *blue, uint32_t start, uint32_t size) |
| 165 | { | 165 | { |
| 166 | struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc); | 166 | struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc); |
| 167 | int i; | 167 | int end = (start + size > 256) ? 256 : start + size, i; |
| 168 | |||
| 169 | if (size != 256) { | ||
| 170 | return; | ||
| 171 | } | ||
| 172 | 168 | ||
| 173 | /* userspace palettes are always correct as is */ | 169 | /* userspace palettes are always correct as is */ |
| 174 | for (i = 0; i < 256; i++) { | 170 | for (i = start; i < end; i++) { |
| 175 | radeon_crtc->lut_r[i] = red[i] >> 6; | 171 | radeon_crtc->lut_r[i] = red[i] >> 6; |
| 176 | radeon_crtc->lut_g[i] = green[i] >> 6; | 172 | radeon_crtc->lut_g[i] = green[i] >> 6; |
| 177 | radeon_crtc->lut_b[i] = blue[i] >> 6; | 173 | radeon_crtc->lut_b[i] = blue[i] >> 6; |
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c index cfaf690a5b2f..2ff5cf78235f 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c | |||
| @@ -79,7 +79,7 @@ static void vmw_ldu_crtc_restore(struct drm_crtc *crtc) | |||
| 79 | 79 | ||
| 80 | static void vmw_ldu_crtc_gamma_set(struct drm_crtc *crtc, | 80 | static void vmw_ldu_crtc_gamma_set(struct drm_crtc *crtc, |
| 81 | u16 *r, u16 *g, u16 *b, | 81 | u16 *r, u16 *g, u16 *b, |
| 82 | uint32_t size) | 82 | uint32_t start, uint32_t size) |
| 83 | { | 83 | { |
| 84 | } | 84 | } |
| 85 | 85 | ||
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index 606eb93d7db0..692cc55eeab6 100644 --- a/include/drm/drm_crtc.h +++ b/include/drm/drm_crtc.h | |||
| @@ -310,7 +310,7 @@ struct drm_crtc_funcs { | |||
| 310 | 310 | ||
| 311 | /* Set gamma on the CRTC */ | 311 | /* Set gamma on the CRTC */ |
| 312 | void (*gamma_set)(struct drm_crtc *crtc, u16 *r, u16 *g, u16 *b, | 312 | void (*gamma_set)(struct drm_crtc *crtc, u16 *r, u16 *g, u16 *b, |
| 313 | uint32_t size); | 313 | uint32_t start, uint32_t size); |
| 314 | /* Object destroy routine */ | 314 | /* Object destroy routine */ |
| 315 | void (*destroy)(struct drm_crtc *crtc); | 315 | void (*destroy)(struct drm_crtc *crtc); |
| 316 | 316 | ||
