[Intel-gfx] [PATCH] drm/core: Change declaration for gamma_set.
Deucher, Alexander
Alexander.Deucher at amd.com
Mon Jun 6 16:01:41 UTC 2016
> -----Original Message-----
> From: Daniel Vetter [mailto:daniel.vetter at ffwll.ch] On Behalf Of Daniel
> Vetter
> Sent: Monday, June 06, 2016 12:00 PM
> To: Maarten Lankhorst
> Cc: dri-devel at lists.freedesktop.org; intel-gfx at lists.freedesktop.org;
> Mathieu Larouche; VMware Graphics; Ben Skeggs; Deucher, Alexander;
> Thierry Reding; Koenig, Christian
> Subject: Re: [PATCH] drm/core: Change declaration for gamma_set.
>
> On Mon, Jun 06, 2016 at 11:18:09AM +0200, Maarten Lankhorst wrote:
> > Change return value to int to propagate errors from gamma_set,
> > and remove start parameter. Updates always use the full size,
> > and some drivers even ignore the start parameter altogether.
>
> Commit message should explain why we suddenly need to pass up the error
> code, too:
>
> "This is needed for atomic drivers, where an atomic commit can fail with
> EAGAIN and should be restarted."
>
> I'll add that when merging, but will wait for a bit more acks/r-b first.
Thanks. I was just about to ask why this was necessary. Patch is:
Acked-by: Alex Deucher <alexander.deucher at amd.com>
> -Daniel
> >
> > Cc: Alex Deucher <alexander.deucher at amd.com>
> > Cc: Christian König <christian.koenig at amd.com>
> > Cc: David Airlie <airlied at linux.ie>
> > Cc: Patrik Jakobsson <patrik.r.jakobsson at gmail.com>
> > Cc: Ben Skeggs <bskeggs at redhat.com>
> > Cc: Eric Anholt <eric at anholt.net>
> > Cc: VMware Graphics <linux-graphics-maintainer at vmware.com>
> > Cc: Mathieu Larouche <mathieu.larouche at matrox.com>
> > Cc: Thierry Reding <treding at nvidia.com>
> > Signed-off-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
> > ---
> > drivers/gpu/drm/amd/amdgpu/dce_v10_0.c | 10 ++++++----
> > drivers/gpu/drm/amd/amdgpu/dce_v11_0.c | 10 ++++++----
> > drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | 10 ++++++----
> > drivers/gpu/drm/ast/ast_mode.c | 10 ++++++----
> > drivers/gpu/drm/cirrus/cirrus_mode.c | 8 +++++---
> > drivers/gpu/drm/drm_atomic_helper.c | 13 ++++++-------
> > drivers/gpu/drm/drm_crtc.c | 2 +-
> > drivers/gpu/drm/drm_fb_helper.c | 4 +---
> > drivers/gpu/drm/gma500/gma_display.c | 9 +++++----
> > drivers/gpu/drm/gma500/gma_display.h | 4 ++--
> > drivers/gpu/drm/mgag200/mgag200_mode.c | 9 +++++----
> > drivers/gpu/drm/nouveau/dispnv04/crtc.c | 12 +++++++-----
> > drivers/gpu/drm/nouveau/nv50_display.c | 9 +++++----
> > drivers/gpu/drm/radeon/radeon_display.c | 11 +++++++----
> > drivers/gpu/drm/vc4/vc4_crtc.c | 8 +++++---
> > drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 8 +++++---
> > drivers/gpu/drm/vmwgfx/vmwgfx_kms.h | 4 ++--
> > include/drm/drm_atomic_helper.h | 6 +++---
> > include/drm/drm_crtc.h | 4 ++--
> > 19 files changed, 85 insertions(+), 66 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> > index 8227344d2ff6..16de862ea51f 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
> > @@ -2667,19 +2667,21 @@ static void dce_v10_0_cursor_reset(struct
> drm_crtc *crtc)
> > }
> > }
> >
> > -static void dce_v10_0_crtc_gamma_set(struct drm_crtc *crtc, u16 *red,
> u16 *green,
> > - u16 *blue, uint32_t start, uint32_t size)
> > +static int dce_v10_0_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16
> *green,
> > + u16 *blue, uint32_t size)
> > {
> > struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
> > - int end = (start + size > 256) ? 256 : start + size, i;
> > + int i;
> >
> > /* userspace palettes are always correct as is */
> > - for (i = start; i < end; i++) {
> > + for (i = 0; i < size; i++) {
> > amdgpu_crtc->lut_r[i] = red[i] >> 6;
> > amdgpu_crtc->lut_g[i] = green[i] >> 6;
> > amdgpu_crtc->lut_b[i] = blue[i] >> 6;
> > }
> > dce_v10_0_crtc_load_lut(crtc);
> > +
> > + return 0;
> > }
> >
> > static void dce_v10_0_crtc_destroy(struct drm_crtc *crtc)
> > diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> > index af26ec0bc59d..6e0ae8e2e65c 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
> > @@ -2678,19 +2678,21 @@ static void dce_v11_0_cursor_reset(struct
> drm_crtc *crtc)
> > }
> > }
> >
> > -static void dce_v11_0_crtc_gamma_set(struct drm_crtc *crtc, u16 *red,
> u16 *green,
> > - u16 *blue, uint32_t start, uint32_t size)
> > +static int dce_v11_0_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16
> *green,
> > + u16 *blue, uint32_t size)
> > {
> > struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
> > - int end = (start + size > 256) ? 256 : start + size, i;
> > + int i;
> >
> > /* userspace palettes are always correct as is */
> > - for (i = start; i < end; i++) {
> > + for (i = 0; i < size; i++) {
> > amdgpu_crtc->lut_r[i] = red[i] >> 6;
> > amdgpu_crtc->lut_g[i] = green[i] >> 6;
> > amdgpu_crtc->lut_b[i] = blue[i] >> 6;
> > }
> > dce_v11_0_crtc_load_lut(crtc);
> > +
> > + return 0;
> > }
> >
> > static void dce_v11_0_crtc_destroy(struct drm_crtc *crtc)
> > diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
> b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
> > index 3fb65e41a6ef..7b5fae4c74f1 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
> > @@ -2574,19 +2574,21 @@ static void dce_v8_0_cursor_reset(struct
> drm_crtc *crtc)
> > }
> > }
> >
> > -static void dce_v8_0_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16
> *green,
> > - u16 *blue, uint32_t start, uint32_t size)
> > +static int dce_v8_0_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16
> *green,
> > + u16 *blue, uint32_t size)
> > {
> > struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
> > - int end = (start + size > 256) ? 256 : start + size, i;
> > + int i;
> >
> > /* userspace palettes are always correct as is */
> > - for (i = start; i < end; i++) {
> > + for (i = 0; i < size; i++) {
> > amdgpu_crtc->lut_r[i] = red[i] >> 6;
> > amdgpu_crtc->lut_g[i] = green[i] >> 6;
> > amdgpu_crtc->lut_b[i] = blue[i] >> 6;
> > }
> > dce_v8_0_crtc_load_lut(crtc);
> > +
> > + return 0;
> > }
> >
> > static void dce_v8_0_crtc_destroy(struct drm_crtc *crtc)
> > diff --git a/drivers/gpu/drm/ast/ast_mode.c
> b/drivers/gpu/drm/ast/ast_mode.c
> > index c337922606e3..5957c3e659fe 100644
> > --- a/drivers/gpu/drm/ast/ast_mode.c
> > +++ b/drivers/gpu/drm/ast/ast_mode.c
> > @@ -624,19 +624,21 @@ static void ast_crtc_reset(struct drm_crtc *crtc)
> >
> > }
> >
> > -static void ast_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16
> *green,
> > - u16 *blue, uint32_t start, uint32_t size)
> > +static int ast_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16
> *green,
> > + u16 *blue, uint32_t size)
> > {
> > struct ast_crtc *ast_crtc = to_ast_crtc(crtc);
> > - int end = (start + size > 256) ? 256 : start + size, i;
> > + int i;
> >
> > /* userspace palettes are always correct as is */
> > - for (i = start; i < end; i++) {
> > + for (i = 0; i < size; i++) {
> > ast_crtc->lut_r[i] = red[i] >> 8;
> > ast_crtc->lut_g[i] = green[i] >> 8;
> > ast_crtc->lut_b[i] = blue[i] >> 8;
> > }
> > ast_crtc_load_lut(crtc);
> > +
> > + return 0;
> > }
> >
> >
> > diff --git a/drivers/gpu/drm/cirrus/cirrus_mode.c
> b/drivers/gpu/drm/cirrus/cirrus_mode.c
> > index 0b1a411cb89e..17c915d9a03e 100644
> > --- a/drivers/gpu/drm/cirrus/cirrus_mode.c
> > +++ b/drivers/gpu/drm/cirrus/cirrus_mode.c
> > @@ -325,18 +325,20 @@ static void cirrus_crtc_commit(struct drm_crtc
> *crtc)
> > * use this for 8-bit mode so can't perform smooth fades on deeper
> modes,
> > * but it's a requirement that we provide the function
> > */
> > -static void cirrus_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16
> *green,
> > - u16 *blue, uint32_t start, uint32_t size)
> > +static int cirrus_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16
> *green,
> > + u16 *blue, uint32_t size)
> > {
> > struct cirrus_crtc *cirrus_crtc = to_cirrus_crtc(crtc);
> > int i;
> >
> > - for (i = 0; i < CIRRUS_LUT_SIZE; i++) {
> > + for (i = 0; i < size; i++) {
> > cirrus_crtc->lut_r[i] = red[i];
> > cirrus_crtc->lut_g[i] = green[i];
> > cirrus_crtc->lut_b[i] = blue[i];
> > }
> > cirrus_crtc_load_lut(crtc);
> > +
> > + return 0;
> > }
> >
> > /* Simple cleanup function */
> > diff --git a/drivers/gpu/drm/drm_atomic_helper.c
> b/drivers/gpu/drm/drm_atomic_helper.c
> > index 939df900dcaa..266c11018a19 100644
> > --- a/drivers/gpu/drm/drm_atomic_helper.c
> > +++ b/drivers/gpu/drm/drm_atomic_helper.c
> > @@ -2933,16 +2933,15 @@
> EXPORT_SYMBOL(drm_atomic_helper_connector_destroy_state);
> > * @red: red correction table
> > * @green: green correction table
> > * @blue: green correction table
> > - * @start:
> > * @size: size of the tables
> > *
> > * Implements support for legacy gamma correction table for drivers
> > * that support color management through the
> DEGAMMA_LUT/GAMMA_LUT
> > * properties.
> > */
> > -void drm_atomic_helper_legacy_gamma_set(struct drm_crtc *crtc,
> > - u16 *red, u16 *green, u16 *blue,
> > - uint32_t start, uint32_t size)
> > +int drm_atomic_helper_legacy_gamma_set(struct drm_crtc *crtc,
> > + u16 *red, u16 *green, u16 *blue,
> > + uint32_t size)
> > {
> > struct drm_device *dev = crtc->dev;
> > struct drm_mode_config *config = &dev->mode_config;
> > @@ -2954,7 +2953,7 @@ void
> drm_atomic_helper_legacy_gamma_set(struct drm_crtc *crtc,
> >
> > state = drm_atomic_state_alloc(crtc->dev);
> > if (!state)
> > - return;
> > + return -ENOMEM;
> >
> > blob = drm_property_create_blob(dev,
> > sizeof(struct drm_color_lut) * size,
> > @@ -3005,7 +3004,7 @@ retry:
> >
> > drm_property_unreference_blob(blob);
> >
> > - return;
> > + return 0;
> > fail:
> > if (ret == -EDEADLK)
> > goto backoff;
> > @@ -3013,7 +3012,7 @@ fail:
> > drm_atomic_state_free(state);
> > drm_property_unreference_blob(blob);
> >
> > - return;
> > + return ret;
> > backoff:
> > drm_atomic_state_clear(state);
> > drm_atomic_legacy_backoff(state);
> > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> > index d2a6d958ca76..4d61ceae789c 100644
> > --- a/drivers/gpu/drm/drm_crtc.c
> > +++ b/drivers/gpu/drm/drm_crtc.c
> > @@ -5215,7 +5215,7 @@ int drm_mode_gamma_set_ioctl(struct
> drm_device *dev,
> > goto out;
> > }
> >
> > - crtc->funcs->gamma_set(crtc, r_base, g_base, b_base, 0, crtc-
> >gamma_size);
> > + ret = crtc->funcs->gamma_set(crtc, r_base, g_base, b_base, crtc-
> >gamma_size);
> >
> > out:
> > drm_modeset_unlock_all(dev);
> > diff --git a/drivers/gpu/drm/drm_fb_helper.c
> b/drivers/gpu/drm/drm_fb_helper.c
> > index 7590df5e2e72..4accf6039058 100644
> > --- a/drivers/gpu/drm/drm_fb_helper.c
> > +++ b/drivers/gpu/drm/drm_fb_helper.c
> > @@ -227,7 +227,7 @@ static void
> drm_fb_helper_restore_lut_atomic(struct drm_crtc *crtc)
> > g_base = r_base + crtc->gamma_size;
> > b_base = g_base + crtc->gamma_size;
> >
> > - crtc->funcs->gamma_set(crtc, r_base, g_base, b_base, 0, crtc-
> >gamma_size);
> > + crtc->funcs->gamma_set(crtc, r_base, g_base, b_base, crtc-
> >gamma_size);
> > }
> >
> > /**
> > @@ -1076,8 +1076,6 @@ static int setcolreg(struct drm_crtc *crtc, u16 red,
> u16 green,
> > WARN_ON(fb->bits_per_pixel != 8);
> >
> > fb_helper->funcs->gamma_set(crtc, red, green, blue, regno);
> > -
> > - return 0;
> > }
> >
> > /**
> > diff --git a/drivers/gpu/drm/gma500/gma_display.c
> b/drivers/gpu/drm/gma500/gma_display.c
> > index c95406e6f44d..5b636bf0b467 100644
> > --- a/drivers/gpu/drm/gma500/gma_display.c
> > +++ b/drivers/gpu/drm/gma500/gma_display.c
> > @@ -175,20 +175,21 @@ void gma_crtc_load_lut(struct drm_crtc *crtc)
> > }
> > }
> >
> > -void gma_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
> u16 *blue,
> > - u32 start, u32 size)
> > +int gma_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
> u16 *blue,
> > + u32 size)
> > {
> > struct gma_crtc *gma_crtc = to_gma_crtc(crtc);
> > int i;
> > - int end = (start + size > 256) ? 256 : start + size;
> >
> > - for (i = start; i < end; i++) {
> > + for (i = 0; i < size; i++) {
> > gma_crtc->lut_r[i] = red[i] >> 8;
> > gma_crtc->lut_g[i] = green[i] >> 8;
> > gma_crtc->lut_b[i] = blue[i] >> 8;
> > }
> >
> > gma_crtc_load_lut(crtc);
> > +
> > + return 0;
> > }
> >
> > /**
> > diff --git a/drivers/gpu/drm/gma500/gma_display.h
> b/drivers/gpu/drm/gma500/gma_display.h
> > index b2491c65f053..e72dd08b701b 100644
> > --- a/drivers/gpu/drm/gma500/gma_display.h
> > +++ b/drivers/gpu/drm/gma500/gma_display.h
> > @@ -72,8 +72,8 @@ extern int gma_crtc_cursor_set(struct drm_crtc *crtc,
> > uint32_t width, uint32_t height);
> > extern int gma_crtc_cursor_move(struct drm_crtc *crtc, int x, int y);
> > extern void gma_crtc_load_lut(struct drm_crtc *crtc);
> > -extern void gma_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16
> *green,
> > - u16 *blue, u32 start, u32 size);
> > +extern int gma_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16
> *green,
> > + u16 *blue, u32 size);
> > extern void gma_crtc_dpms(struct drm_crtc *crtc, int mode);
> > extern void gma_crtc_prepare(struct drm_crtc *crtc);
> > extern void gma_crtc_commit(struct drm_crtc *crtc);
> > diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c
> b/drivers/gpu/drm/mgag200/mgag200_mode.c
> > index 14e64e08909e..f6d5892d03f1 100644
> > --- a/drivers/gpu/drm/mgag200/mgag200_mode.c
> > +++ b/drivers/gpu/drm/mgag200/mgag200_mode.c
> > @@ -1344,19 +1344,20 @@ static void mga_crtc_commit(struct drm_crtc
> *crtc)
> > * use this for 8-bit mode so can't perform smooth fades on deeper
> modes,
> > * but it's a requirement that we provide the function
> > */
> > -static void mga_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16
> *green,
> > - u16 *blue, uint32_t start, uint32_t size)
> > +static int mga_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16
> *green,
> > + u16 *blue, uint32_t size)
> > {
> > struct mga_crtc *mga_crtc = to_mga_crtc(crtc);
> > - int end = (start + size > MGAG200_LUT_SIZE) ? MGAG200_LUT_SIZE :
> start + size;
> > int i;
> >
> > - for (i = start; i < end; i++) {
> > + for (i = 0; i < size; i++) {
> > mga_crtc->lut_r[i] = red[i] >> 8;
> > mga_crtc->lut_g[i] = green[i] >> 8;
> > mga_crtc->lut_b[i] = blue[i] >> 8;
> > }
> > mga_crtc_load_lut(crtc);
> > +
> > + return 0;
> > }
> >
> > /* Simple cleanup function */
> > diff --git a/drivers/gpu/drm/nouveau/dispnv04/crtc.c
> b/drivers/gpu/drm/nouveau/dispnv04/crtc.c
> > index 6f318c54da33..0cb7a18cde26 100644
> > --- a/drivers/gpu/drm/nouveau/dispnv04/crtc.c
> > +++ b/drivers/gpu/drm/nouveau/dispnv04/crtc.c
> > @@ -785,14 +785,14 @@ nv_crtc_disable(struct drm_crtc *crtc)
> > nouveau_bo_ref(NULL, &disp->image[nv_crtc->index]);
> > }
> >
> > -static void
> > -nv_crtc_gamma_set(struct drm_crtc *crtc, u16 *r, u16 *g, u16 *b, uint32_t
> start,
> > +static int
> > +nv_crtc_gamma_set(struct drm_crtc *crtc, u16 *r, u16 *g, u16 *b,
> > uint32_t size)
> > {
> > - int end = (start + size > 256) ? 256 : start + size, i;
> > struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc);
> > + int i;
> >
> > - for (i = start; i < end; i++) {
> > + for (i = 0; i < size; i++) {
> > nv_crtc->lut.r[i] = r[i];
> > nv_crtc->lut.g[i] = g[i];
> > nv_crtc->lut.b[i] = b[i];
> > @@ -805,10 +805,12 @@ nv_crtc_gamma_set(struct drm_crtc *crtc, u16
> *r, u16 *g, u16 *b, uint32_t start,
> > */
> > if (!nv_crtc->base.primary->fb) {
> > nv_crtc->lut.depth = 0;
> > - return;
> > + return 0;
> > }
> >
> > nv_crtc_gamma_load(crtc);
> > +
> > + return 0;
> > }
> >
> > static int
> > diff --git a/drivers/gpu/drm/nouveau/nv50_display.c
> b/drivers/gpu/drm/nouveau/nv50_display.c
> > index 3ffc2b0057bf..7a7788212df7 100644
> > --- a/drivers/gpu/drm/nouveau/nv50_display.c
> > +++ b/drivers/gpu/drm/nouveau/nv50_display.c
> > @@ -1346,21 +1346,22 @@ nv50_crtc_cursor_move(struct drm_crtc *crtc,
> int x, int y)
> > return 0;
> > }
> >
> > -static void
> > +static int
> > nv50_crtc_gamma_set(struct drm_crtc *crtc, u16 *r, u16 *g, u16 *b,
> > - uint32_t start, uint32_t size)
> > + uint32_t size)
> > {
> > struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc);
> > - u32 end = min_t(u32, start + size, 256);
> > u32 i;
> >
> > - for (i = start; i < end; i++) {
> > + for (i = 0; i < size; i++) {
> > nv_crtc->lut.r[i] = r[i];
> > nv_crtc->lut.g[i] = g[i];
> > nv_crtc->lut.b[i] = b[i];
> > }
> >
> > nv50_crtc_lut_load(crtc);
> > +
> > + return 0;
> > }
> >
> > static void
> > diff --git a/drivers/gpu/drm/radeon/radeon_display.c
> b/drivers/gpu/drm/radeon/radeon_display.c
> > index 6a41b4982647..80f06db1dd34 100644
> > --- a/drivers/gpu/drm/radeon/radeon_display.c
> > +++ b/drivers/gpu/drm/radeon/radeon_display.c
> > @@ -231,19 +231,21 @@ void radeon_crtc_fb_gamma_get(struct drm_crtc
> *crtc, u16 *red, u16 *green,
> > *blue = radeon_crtc->lut_b[regno] << 6;
> > }
> >
> > -static void radeon_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16
> *green,
> > - u16 *blue, uint32_t start, uint32_t size)
> > +static int radeon_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16
> *green,
> > + u16 *blue, uint32_t size)
> > {
> > struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);
> > - int end = (start + size > 256) ? 256 : start + size, i;
> > + int i;
> >
> > /* userspace palettes are always correct as is */
> > - for (i = start; i < end; i++) {
> > + for (i = 0; i < size; i++) {
> > radeon_crtc->lut_r[i] = red[i] >> 6;
> > radeon_crtc->lut_g[i] = green[i] >> 6;
> > radeon_crtc->lut_b[i] = blue[i] >> 6;
> > }
> > radeon_crtc_load_lut(crtc);
> > +
> > + return 0;
> > }
> >
> > static void radeon_crtc_destroy(struct drm_crtc *crtc)
> > @@ -688,6 +690,7 @@ radeon_crtc_set_config(struct drm_mode_set
> *set)
> > pm_runtime_put_autosuspend(dev->dev);
> > return ret;
> > }
> > +
> > static const struct drm_crtc_funcs radeon_crtc_funcs = {
> > .cursor_set2 = radeon_crtc_cursor_set2,
> > .cursor_move = radeon_crtc_cursor_move,
> > diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c
> b/drivers/gpu/drm/vc4/vc4_crtc.c
> > index 904d0754ad78..4e34f054da5c 100644
> > --- a/drivers/gpu/drm/vc4/vc4_crtc.c
> > +++ b/drivers/gpu/drm/vc4/vc4_crtc.c
> > @@ -175,20 +175,22 @@ vc4_crtc_lut_load(struct drm_crtc *crtc)
> > HVS_WRITE(SCALER_GAMDATA, vc4_crtc->lut_b[i]);
> > }
> >
> > -static void
> > +static int
> > vc4_crtc_gamma_set(struct drm_crtc *crtc, u16 *r, u16 *g, u16 *b,
> > - uint32_t start, uint32_t size)
> > + uint32_t size)
> > {
> > struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc);
> > u32 i;
> >
> > - for (i = start; i < start + size; i++) {
> > + for (i = 0; i < size; i++) {
> > vc4_crtc->lut_r[i] = r[i] >> 8;
> > vc4_crtc->lut_g[i] = g[i] >> 8;
> > vc4_crtc->lut_b[i] = b[i] >> 8;
> > }
> >
> > vc4_crtc_lut_load(crtc);
> > +
> > + return 0;
> > }
> >
> > static u32 vc4_get_fifo_full_level(u32 format)
> > diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
> b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
> > index 55231cce73a0..8a69d4da40b5 100644
> > --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
> > +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
> > @@ -1404,9 +1404,9 @@ static int vmw_du_update_layout(struct
> vmw_private *dev_priv, unsigned num,
> > return 0;
> > }
> >
> > -void vmw_du_crtc_gamma_set(struct drm_crtc *crtc,
> > - u16 *r, u16 *g, u16 *b,
> > - uint32_t start, uint32_t size)
> > +int vmw_du_crtc_gamma_set(struct drm_crtc *crtc,
> > + u16 *r, u16 *g, u16 *b,
> > + uint32_t size)
> > {
> > struct vmw_private *dev_priv = vmw_priv(crtc->dev);
> > int i;
> > @@ -1418,6 +1418,8 @@ void vmw_du_crtc_gamma_set(struct drm_crtc
> *crtc,
> > vmw_write(dev_priv, SVGA_PALETTE_BASE + i * 3 + 1, g[i] >>
> 8);
> > vmw_write(dev_priv, SVGA_PALETTE_BASE + i * 3 + 2, b[i]
> >> 8);
> > }
> > +
> > + return 0;
> > }
> >
> > int vmw_du_connector_dpms(struct drm_connector *connector, int
> mode)
> > diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
> b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
> > index 57203212c501..ff4803c107bc 100644
> > --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
> > +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
> > @@ -195,9 +195,9 @@ struct vmw_display_unit {
> > void vmw_du_cleanup(struct vmw_display_unit *du);
> > void vmw_du_crtc_save(struct drm_crtc *crtc);
> > void vmw_du_crtc_restore(struct drm_crtc *crtc);
> > -void vmw_du_crtc_gamma_set(struct drm_crtc *crtc,
> > +int vmw_du_crtc_gamma_set(struct drm_crtc *crtc,
> > u16 *r, u16 *g, u16 *b,
> > - uint32_t start, uint32_t size);
> > + uint32_t size);
> > int vmw_du_crtc_cursor_set2(struct drm_crtc *crtc, struct drm_file
> *file_priv,
> > uint32_t handle, uint32_t width, uint32_t height,
> > int32_t hot_x, int32_t hot_y);
> > diff --git a/include/drm/drm_atomic_helper.h
> b/include/drm/drm_atomic_helper.h
> > index d473dcc91f54..11896c84c4f8 100644
> > --- a/include/drm/drm_atomic_helper.h
> > +++ b/include/drm/drm_atomic_helper.h
> > @@ -147,9 +147,9 @@ void
> > __drm_atomic_helper_connector_destroy_state(struct
> drm_connector_state *state);
> > void drm_atomic_helper_connector_destroy_state(struct drm_connector
> *connector,
> > struct drm_connector_state *state);
> > -void drm_atomic_helper_legacy_gamma_set(struct drm_crtc *crtc,
> > - u16 *red, u16 *green, u16 *blue,
> > - uint32_t start, uint32_t size);
> > +int drm_atomic_helper_legacy_gamma_set(struct drm_crtc *crtc,
> > + u16 *red, u16 *green, u16 *blue,
> > + uint32_t size);
> >
> > /**
> > * drm_atomic_crtc_for_each_plane - iterate over planes currently
> attached to CRTC
> > diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
> > index d1559cd04e3d..8622bb2f4f25 100644
> > --- a/include/drm/drm_crtc.h
> > +++ b/include/drm/drm_crtc.h
> > @@ -478,8 +478,8 @@ struct drm_crtc_funcs {
> > * going on, which should eventually be unified to just one set of
> > * hooks.
> > */
> > - void (*gamma_set)(struct drm_crtc *crtc, u16 *r, u16 *g, u16 *b,
> > - uint32_t start, uint32_t size);
> > + int (*gamma_set)(struct drm_crtc *crtc, u16 *r, u16 *g, u16 *b,
> > + uint32_t size);
> >
> > /**
> > * @destroy:
> > --
> > 2.5.5
> >
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch
More information about the Intel-gfx
mailing list