Message ID | 20220728-rpi-analog-tv-properties-v1-7-3d53ae722097@cerno.tech (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Neil Armstrong |
Headers | show |
Series | drm: Analog TV Improvements | expand |
Hi Maxime, On Fri, Jul 29, 2022 at 6:35 PM Maxime Ripard <maxime@cerno.tech> wrote: > Some video= options might have a value that contains a dash. However, the > command line parsing mode considers all dashes as the separator between the > mode and the bpp count. > > Let's rework the parsing code a bit to only consider a dash as the bpp > separator if it before a comma, the options separator. > > A follow-up patch will add a unit-test for this once such an option is > introduced. > > Signed-off-by: Maxime Ripard <maxime@cerno.tech> Thanks for your patch! Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org> > --- a/drivers/gpu/drm/drm_modes.c > +++ b/drivers/gpu/drm/drm_modes.c > @@ -1819,20 +1819,22 @@ bool drm_mode_parse_command_line_for_connector(const char *mode_option, > > name = mode_option; > > + /* Locate the start of named options */ > + options_ptr = strchr(name, ','); > + if (options_ptr) > + options_off = options_ptr - name; > + else > + options_off = strlen(name); > + > /* Try to locate the bpp and refresh specifiers, if any */ > - bpp_ptr = strchr(name, '-'); > + bpp_ptr = strnchr(name, options_off, '-'); Probably you still want to add a check that the next character is actually a digit, cfr. my "[PATCH v2 5/5] drm/modes: parse_cmdline: Add support for named modes containing dashes" (https://lore.kernel.org/dri-devel/2eb205da88c3cb19ddf04d167ece4e16a330948b.1657788997.git.geert@linux-m68k.org)? > if (bpp_ptr) > bpp_off = bpp_ptr - name; > > - refresh_ptr = strchr(name, '@'); > + refresh_ptr = strnchr(name, options_off, '@'); > if (refresh_ptr) > refresh_off = refresh_ptr - name; > > - /* Locate the start of named options */ > - options_ptr = strchr(name, ','); > - if (options_ptr) > - options_off = options_ptr - name; > - > /* Locate the end of the name / resolution, and parse it */ > if (bpp_ptr) { > mode_end = bpp_off; 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
Hi Geert, Thanks for your review On Fri, Aug 12, 2022 at 03:25:39PM +0200, Geert Uytterhoeven wrote: > Hi Maxime, > > On Fri, Jul 29, 2022 at 6:35 PM Maxime Ripard <maxime@cerno.tech> wrote: > > Some video= options might have a value that contains a dash. However, the > > command line parsing mode considers all dashes as the separator between the > > mode and the bpp count. > > > > Let's rework the parsing code a bit to only consider a dash as the bpp > > separator if it before a comma, the options separator. > > > > A follow-up patch will add a unit-test for this once such an option is > > introduced. > > > > Signed-off-by: Maxime Ripard <maxime@cerno.tech> > > Thanks for your patch! > > Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org> > > > --- a/drivers/gpu/drm/drm_modes.c > > +++ b/drivers/gpu/drm/drm_modes.c > > @@ -1819,20 +1819,22 @@ bool drm_mode_parse_command_line_for_connector(const char *mode_option, > > > > name = mode_option; > > > > + /* Locate the start of named options */ > > + options_ptr = strchr(name, ','); > > + if (options_ptr) > > + options_off = options_ptr - name; > > + else > > + options_off = strlen(name); > > + > > /* Try to locate the bpp and refresh specifiers, if any */ > > - bpp_ptr = strchr(name, '-'); > > + bpp_ptr = strnchr(name, options_off, '-'); > > Probably you still want to add a check that the next character > is actually a digit, cfr. my "[PATCH v2 5/5] drm/modes: > parse_cmdline: Add support for named modes containing dashes" > (https://lore.kernel.org/dri-devel/2eb205da88c3cb19ddf04d167ece4e16a330948b.1657788997.git.geert@linux-m68k.org)? I think your patch is orthogonal, and we should merge it anyway. As a matter of fact, I initially wanted to do something similar but bailed out to deal with PAL-M and so on. If there's such modes already, then we should totally support it Maxime
diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c index a4c1bd688338..06a006e0b2e3 100644 --- a/drivers/gpu/drm/drm_modes.c +++ b/drivers/gpu/drm/drm_modes.c @@ -1819,20 +1819,22 @@ bool drm_mode_parse_command_line_for_connector(const char *mode_option, name = mode_option; + /* Locate the start of named options */ + options_ptr = strchr(name, ','); + if (options_ptr) + options_off = options_ptr - name; + else + options_off = strlen(name); + /* Try to locate the bpp and refresh specifiers, if any */ - bpp_ptr = strchr(name, '-'); + bpp_ptr = strnchr(name, options_off, '-'); if (bpp_ptr) bpp_off = bpp_ptr - name; - refresh_ptr = strchr(name, '@'); + refresh_ptr = strnchr(name, options_off, '@'); if (refresh_ptr) refresh_off = refresh_ptr - name; - /* Locate the start of named options */ - options_ptr = strchr(name, ','); - if (options_ptr) - options_off = options_ptr - name; - /* Locate the end of the name / resolution, and parse it */ if (bpp_ptr) { mode_end = bpp_off;
Some video= options might have a value that contains a dash. However, the command line parsing mode considers all dashes as the separator between the mode and the bpp count. Let's rework the parsing code a bit to only consider a dash as the bpp separator if it before a comma, the options separator. A follow-up patch will add a unit-test for this once such an option is introduced. Signed-off-by: Maxime Ripard <maxime@cerno.tech>