Thread (151 messages) 151 messages, 9 authors, 2022-08-30

Re: [PATCH v1 34/35] drm/modes: Introduce the tv_mode property as a command-line option

From: Geert Uytterhoeven <geert@linux-m68k.org>
Date: 2022-08-12 13:31:43
Also in: dri-devel, linux-amlogic, linux-sunxi, lkml

Hi Maxime,

On Fri, Jul 29, 2022 at 6:37 PM Maxime Ripard [off-list ref] wrote:
Our new tv mode option allows to specify the TV mode from a property.
However, it can still be useful, for example to avoid any boot time
artifact, to set that property directly from the kernel command line.

Let's add some code to allow it, and some unit tests to exercise that code.

Signed-off-by: Maxime Ripard <redacted>
Thanks for your patch!
quoted hunk ↗ jump to hunk
--- a/drivers/gpu/drm/drm_modes.c
+++ b/drivers/gpu/drm/drm_modes.c
@@ -1677,6 +1677,80 @@ static int drm_mode_parse_panel_orientation(const char *delim,
        return 0;
 }

+#define TV_OPTION_EQUAL(value, len, option) \
+       ((strlen(option) == len) && !strncmp(value, option, len))
+
+static int drm_mode_parse_tv_mode(const char *delim,
+                                 struct drm_cmdline_mode *mode)
+{
+       const char *value;
+       unsigned int len;
+
+       if (*delim != '=')
+               return -EINVAL;
+
+       value = delim + 1;
+       delim = strchr(value, ',');
+       if (!delim)
+               delim = value + strlen(value);
+
+       len = delim - value;
+       if (TV_OPTION_EQUAL(value, len, "NTSC-443"))
+               mode->tv_mode = DRM_MODE_TV_NORM_NTSC_443;
+       else if (TV_OPTION_EQUAL(value, len, "NTSC-J"))
+               mode->tv_mode = DRM_MODE_TV_NORM_NTSC_J;
+       else if (TV_OPTION_EQUAL(value, len, "NTSC-M"))
+               mode->tv_mode = DRM_MODE_TV_NORM_NTSC_M;
[...]

You already have the array tv_norm_values[] from "[PATCH v1 05/35]
drm/connector: Add TV standard property". Can't you export that, and
loop over that array instead?
+       else if (TV_OPTION_EQUAL(value, len, "HD480I"))
+               mode->tv_mode = DRM_MODE_TV_NORM_HD480I;
+       else if (TV_OPTION_EQUAL(value, len, "HD480P"))
+               mode->tv_mode = DRM_MODE_TV_NORM_HD480P;
+       else if (TV_OPTION_EQUAL(value, len, "HD576I"))
+               mode->tv_mode = DRM_MODE_TV_NORM_HD576I;
+       else if (TV_OPTION_EQUAL(value, len, "HD576P"))
+               mode->tv_mode = DRM_MODE_TV_NORM_HD576P;
+       else if (TV_OPTION_EQUAL(value, len, "HD720P"))
+               mode->tv_mode = DRM_MODE_TV_NORM_HD720P;
+       else if (TV_OPTION_EQUAL(value, len, "HD1080I"))
+               mode->tv_mode = DRM_MODE_TV_NORM_HD1080I;
The names in tv_norm_values[] use lower-case, while you use upper-case
here.

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help