[PATCH v2 15/41] drm/modes: Switch to named mode descriptors

From: Maxime Ripard
Date: Mon Aug 29 2022 - 09:14:53 EST


The current named mode parsing relies only the mode name, and doesn't allow
to specify any other parameter.

Let's convert that string list to an array of a custom structure that will
hold the name and some additional parameters in the future.

Signed-off-by: Maxime Ripard <maxime@xxxxxxxxxx>

diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c
index 0636cb707544..1fdfa004b139 100644
--- a/drivers/gpu/drm/drm_modes.c
+++ b/drivers/gpu/drm/drm_modes.c
@@ -2206,9 +2206,13 @@ static int drm_mode_parse_cmdline_options(const char *str,
return 0;
}

-static const char * const drm_named_modes_whitelist[] = {
- "NTSC",
- "PAL",
+struct drm_named_mode {
+ const char *name;
+};
+
+static const struct drm_named_mode drm_named_modes[] = {
+ { "NTSC", },
+ { "PAL", },
};

static int drm_mode_parse_cmdline_named_mode(const char *name,
@@ -2241,14 +2245,15 @@ static int drm_mode_parse_cmdline_named_mode(const char *name,
* We're sure we're a named mode at that point, iterate over the
* list of modes we're aware of.
*/
- for (i = 0; i < ARRAY_SIZE(drm_named_modes_whitelist); i++) {
+ for (i = 0; i < ARRAY_SIZE(drm_named_modes); i++) {
+ const struct drm_named_mode *mode = &drm_named_modes[i];
int ret;

- ret = str_has_prefix(name, drm_named_modes_whitelist[i]);
+ ret = str_has_prefix(name, mode->name);
if (ret != name_end)
continue;

- strcpy(cmdline_mode->name, drm_named_modes_whitelist[i]);
+ strcpy(cmdline_mode->name, mode->name);
cmdline_mode->specified = true;

return 1;

--
b4 0.10.0-dev-65ba7