Den 29.08.2022 15.11, skrev Maxime Ripard: > As part of the command line parsing rework coming in the next patches, > > we'll need to lookup drm_connector_tv_mode values by their name, already > > defined in drm_tv_mode_enum_list. > > > > In order to avoid any code duplication, let's do a function that will > > perform a lookup of a TV mode name and return its value. > > > > Signed-off-by: Maxime Ripard <maxime@xxxxxxxxxx> > > > > diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c > > index b1fcacd150e8..0fe01a1c20ad 100644 > > --- a/drivers/gpu/drm/drm_connector.c > > +++ b/drivers/gpu/drm/drm_connector.c > > @@ -1003,6 +1003,30 @@ static const struct drm_prop_enum_list drm_tv_mode_enum_list[] = { > > }; > > DRM_ENUM_NAME_FN(drm_get_tv_mode_name, drm_tv_mode_enum_list) > > > > +/** > > + * drm_get_tv_mode_from_name - Translates a TV mode name into its enum value > > + * @name: TV Mode name we want to convert > > + * @len: Length of @name > > + * > > + * Translates @name into an enum drm_connector_tv_mode. > > + * > > + * Returns: the enum value on success, a negative errno otherwise. > > + */ > > +int drm_get_tv_mode_from_name(const char *name, size_t len) > > +{ > > + unsigned int i; > > + > > + for (i = 0; i < ARRAY_SIZE(drm_tv_mode_enum_list); i++) { > > + const struct drm_prop_enum_list *item = &drm_tv_mode_enum_list[i]; > > + > > + if (strlen(item->name) == len && !strncmp(item->name, name, len)) > > + return item->type; > > + } > > + > > + return -EINVAL; > > +} > > +EXPORT_SYMBOL(drm_get_tv_mode_from_name) Missing semicolon. Noralf. > > + > > static const struct drm_prop_enum_list drm_tv_select_enum_list[] = { > > { DRM_MODE_SUBCONNECTOR_Automatic, "Automatic" }, /* DVI-I and TV-out */ > > { DRM_MODE_SUBCONNECTOR_Composite, "Composite" }, /* TV-out */ > > diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h > > index bb39d2bb806e..49d261977d4e 100644 > > --- a/include/drm/drm_connector.h > > +++ b/include/drm/drm_connector.h > > @@ -1943,6 +1943,8 @@ const char *drm_get_dp_subconnector_name(int val); > > const char *drm_get_content_protection_name(int val); > > const char *drm_get_hdcp_content_type_name(int val); > > > > +int drm_get_tv_mode_from_name(const char *name, size_t len); > > + > > int drm_mode_create_dvi_i_properties(struct drm_device *dev); > > void drm_connector_attach_dp_subconnector_property(struct drm_connector *connector); > > > > >