On Mon, 26 Feb 2024 16:10:24 -0500 Harry Wentland <harry.wentland@xxxxxxx> wrote: > Add a read-only TYPE property. The TYPE specifies the colorop > type, such as enumerated curve, 1D LUT, CTM, 3D LUT, PWL LUT, > etc. > > v4: > - Use enum property for TYPE (Pekka) > > v3: > - Make TYPE a range property > - Move enum drm_colorop_type to uapi header > - Fix drm_get_colorop_type_name description > > For now we're only introducing an enumerated 1D LUT type to > illustrate the concept. > > Signed-off-by: Harry Wentland <harry.wentland@xxxxxxx> > --- > drivers/gpu/drm/drm_atomic.c | 4 +-- > drivers/gpu/drm/drm_atomic_uapi.c | 8 +++++- > drivers/gpu/drm/drm_colorop.c | 44 ++++++++++++++++++++++++++++++- > include/drm/drm_colorop.h | 17 +++++++++++- > include/uapi/drm/drm_mode.h | 4 +++ > 5 files changed, 72 insertions(+), 5 deletions(-) ... > diff --git a/drivers/gpu/drm/drm_colorop.c b/drivers/gpu/drm/drm_colorop.c > index a295ab96aee1..3a07a8fe2842 100644 > --- a/drivers/gpu/drm/drm_colorop.c > +++ b/drivers/gpu/drm/drm_colorop.c > @@ -32,12 +32,17 @@ > > /* TODO big colorop doc, including properties, etc. */ > > +static const struct drm_prop_enum_list drm_colorop_type_enum_list[] = { > + { DRM_COLOROP_1D_CURVE, "1D Curve" }, > +}; > + > /* Init Helpers */ > > int drm_colorop_init(struct drm_device *dev, struct drm_colorop *colorop, > - struct drm_plane *plane) > + struct drm_plane *plane, enum drm_colorop_type type) > { > struct drm_mode_config *config = &dev->mode_config; > + struct drm_property *prop; > int ret = 0; > > ret = drm_mode_object_add(dev, &colorop->base, DRM_MODE_OBJECT_COLOROP); > @@ -46,12 +51,29 @@ int drm_colorop_init(struct drm_device *dev, struct drm_colorop *colorop, > > colorop->base.properties = &colorop->properties; > colorop->dev = dev; > + colorop->type = type; > colorop->plane = plane; > > list_add_tail(&colorop->head, &config->colorop_list); > colorop->index = config->num_colorop++; > > /* add properties */ > + > + /* type */ > + prop = drm_property_create_enum(dev, > + DRM_MODE_PROP_IMMUTABLE, > + "TYPE", drm_colorop_type_enum_list, > + ARRAY_SIZE(drm_colorop_type_enum_list)); This list here is the list of all values the enum could take, right? Should it not be just the one value it's going to have? It'll never change, and it can never be changed. > + > + if (!prop) > + return -ENOMEM; > + > + colorop->type_property = prop; > + > + drm_object_attach_property(&colorop->base, > + colorop->type_property, > + colorop->type); > + > return ret; > } > EXPORT_SYMBOL(drm_colorop_init); Thanks, pq
Attachment:
pgpgRQcDj3Hvz.pgp
Description: OpenPGP digital signature