On Wed, Oct 29, 2025 at 03:36:44PM +0100, Louis Chauvet wrote: > Having the rotation/reflection name from its value can be useful for > debugging purpose. Extract the rotation property table and implement > drm_get_rotation_name.
Reviewed-by: José Expósito <[email protected]> > Signed-off-by: Louis Chauvet <[email protected]> > --- > drivers/gpu/drm/drm_blend.c | 35 ++++++++++++++++++++++++++--------- > include/drm/drm_blend.h | 2 ++ > 2 files changed, 28 insertions(+), 9 deletions(-) > > diff --git a/drivers/gpu/drm/drm_blend.c b/drivers/gpu/drm/drm_blend.c > index 6852d73c931c..bc7c05e20242 100644 > --- a/drivers/gpu/drm/drm_blend.c > +++ b/drivers/gpu/drm/drm_blend.c > @@ -241,6 +241,31 @@ int drm_plane_create_alpha_property(struct drm_plane > *plane) > } > EXPORT_SYMBOL(drm_plane_create_alpha_property); > > +static const struct drm_prop_enum_list rotation_props[] = { > + { __builtin_ffs(DRM_MODE_ROTATE_0) - 1, "rotate-0" }, > + { __builtin_ffs(DRM_MODE_ROTATE_90) - 1, "rotate-90" }, > + { __builtin_ffs(DRM_MODE_ROTATE_180) - 1, "rotate-180" }, > + { __builtin_ffs(DRM_MODE_ROTATE_270) - 1, "rotate-270" }, > + { __builtin_ffs(DRM_MODE_REFLECT_X) - 1, "reflect-x" }, > + { __builtin_ffs(DRM_MODE_REFLECT_Y) - 1, "reflect-y" }, > +}; > + > +/** > + * drm_get_rotation_name - Return the name of a rotation > + * @rotation: The rotation mask (DRM_MODE_ROTATE_* | DRM_MODE_REFLECT_*) > + * > + * Returns: the name of the rotation type (unknown) if rotation is not > + * a known rotation/reflection > + */ > +const char *drm_get_rotation_name(unsigned int rotation) > +{ > + if (rotation < ARRAY_SIZE(rotation_props)) > + return rotation_props[rotation].name; > + > + return "(unknown)"; > +} > +EXPORT_SYMBOL(drm_get_rotation_name); > + > /** > * drm_plane_create_rotation_property - create a new rotation property > * @plane: drm plane > @@ -279,14 +304,6 @@ int drm_plane_create_rotation_property(struct drm_plane > *plane, > unsigned int rotation, > unsigned int supported_rotations) > { > - static const struct drm_prop_enum_list props[] = { > - { __builtin_ffs(DRM_MODE_ROTATE_0) - 1, "rotate-0" }, > - { __builtin_ffs(DRM_MODE_ROTATE_90) - 1, "rotate-90" }, > - { __builtin_ffs(DRM_MODE_ROTATE_180) - 1, "rotate-180" }, > - { __builtin_ffs(DRM_MODE_ROTATE_270) - 1, "rotate-270" }, > - { __builtin_ffs(DRM_MODE_REFLECT_X) - 1, "reflect-x" }, > - { __builtin_ffs(DRM_MODE_REFLECT_Y) - 1, "reflect-y" }, > - }; > struct drm_property *prop; > > WARN_ON((supported_rotations & DRM_MODE_ROTATE_MASK) == 0); > @@ -294,7 +311,7 @@ int drm_plane_create_rotation_property(struct drm_plane > *plane, > WARN_ON(rotation & ~supported_rotations); > > prop = drm_property_create_bitmask(plane->dev, 0, "rotation", > - props, ARRAY_SIZE(props), > + rotation_props, > ARRAY_SIZE(rotation_props), > supported_rotations); > if (!prop) > return -ENOMEM; > diff --git a/include/drm/drm_blend.h b/include/drm/drm_blend.h > index 88bdfec3bd88..381d1f8d815b 100644 > --- a/include/drm/drm_blend.h > +++ b/include/drm/drm_blend.h > @@ -42,6 +42,8 @@ static inline bool drm_rotation_90_or_270(unsigned int > rotation) > > #define DRM_BLEND_ALPHA_OPAQUE 0xffff > > +const char *drm_get_rotation_name(unsigned int rotation); > + > int drm_plane_create_alpha_property(struct drm_plane *plane); > int drm_plane_create_rotation_property(struct drm_plane *plane, > unsigned int rotation, > > -- > 2.51.0 >
