Message ID | 20220728-rpi-analog-tv-properties-v6-11-e7792734108f@cerno.tech (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm: Analog TV Improvements | expand |
Den 26.10.2022 17.33, skrev maxime@cerno.tech: > We'll need to get the pixel clock to generate proper display modes for > all the current named modes. Let's add it to struct drm_cmdline_mode and > fill it when parsing the named mode. > > Signed-off-by: Maxime Ripard <maxime@cerno.tech> > --- I would just squash this with the previous patch, either way: Reviewed-by: Noralf Trønnes <noralf@tronnes.org> > drivers/gpu/drm/drm_modes.c | 9 ++++++--- > include/drm/drm_connector.h | 7 +++++++ > 2 files changed, 13 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c > index acee23e1a8b7..c826f9583a1d 100644 > --- a/drivers/gpu/drm/drm_modes.c > +++ b/drivers/gpu/drm/drm_modes.c > @@ -2226,22 +2226,24 @@ static int drm_mode_parse_cmdline_options(const char *str, > > struct drm_named_mode { > const char *name; > + unsigned int pixel_clock_khz; > unsigned int xres; > unsigned int yres; > unsigned int flags; > }; > > -#define NAMED_MODE(_name, _x, _y, _flags) \ > +#define NAMED_MODE(_name, _pclk, _x, _y, _flags) \ > { \ > .name = _name, \ > + .pixel_clock_khz = _pclk, \ > .xres = _x, \ > .yres = _y, \ > .flags = _flags, \ > } > > static const struct drm_named_mode drm_named_modes[] = { > - NAMED_MODE("NTSC", 720, 480, DRM_MODE_FLAG_INTERLACE), > - NAMED_MODE("PAL", 720, 576, DRM_MODE_FLAG_INTERLACE), > + NAMED_MODE("NTSC", 13500, 720, 480, DRM_MODE_FLAG_INTERLACE), > + NAMED_MODE("PAL", 13500, 720, 576, DRM_MODE_FLAG_INTERLACE), > }; > > static int drm_mode_parse_cmdline_named_mode(const char *name, > @@ -2282,6 +2284,7 @@ static int drm_mode_parse_cmdline_named_mode(const char *name, > continue; > > strcpy(cmdline_mode->name, mode->name); > + cmdline_mode->pixel_clock = mode->pixel_clock_khz; > cmdline_mode->xres = mode->xres; > cmdline_mode->yres = mode->yres; > cmdline_mode->interlace = !!(mode->flags & DRM_MODE_FLAG_INTERLACE); > diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h > index 96b2e4e12334..5c5e67de2296 100644 > --- a/include/drm/drm_connector.h > +++ b/include/drm/drm_connector.h > @@ -1273,6 +1273,13 @@ struct drm_cmdline_mode { > */ > bool bpp_specified; > > + /** > + * @pixel_clock: > + * > + * Pixel Clock in kHz. Optional. > + */ > + unsigned int pixel_clock; > + > /** > * @xres: > * >
diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c index acee23e1a8b7..c826f9583a1d 100644 --- a/drivers/gpu/drm/drm_modes.c +++ b/drivers/gpu/drm/drm_modes.c @@ -2226,22 +2226,24 @@ static int drm_mode_parse_cmdline_options(const char *str, struct drm_named_mode { const char *name; + unsigned int pixel_clock_khz; unsigned int xres; unsigned int yres; unsigned int flags; }; -#define NAMED_MODE(_name, _x, _y, _flags) \ +#define NAMED_MODE(_name, _pclk, _x, _y, _flags) \ { \ .name = _name, \ + .pixel_clock_khz = _pclk, \ .xres = _x, \ .yres = _y, \ .flags = _flags, \ } static const struct drm_named_mode drm_named_modes[] = { - NAMED_MODE("NTSC", 720, 480, DRM_MODE_FLAG_INTERLACE), - NAMED_MODE("PAL", 720, 576, DRM_MODE_FLAG_INTERLACE), + NAMED_MODE("NTSC", 13500, 720, 480, DRM_MODE_FLAG_INTERLACE), + NAMED_MODE("PAL", 13500, 720, 576, DRM_MODE_FLAG_INTERLACE), }; static int drm_mode_parse_cmdline_named_mode(const char *name, @@ -2282,6 +2284,7 @@ static int drm_mode_parse_cmdline_named_mode(const char *name, continue; strcpy(cmdline_mode->name, mode->name); + cmdline_mode->pixel_clock = mode->pixel_clock_khz; cmdline_mode->xres = mode->xres; cmdline_mode->yres = mode->yres; cmdline_mode->interlace = !!(mode->flags & DRM_MODE_FLAG_INTERLACE); diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h index 96b2e4e12334..5c5e67de2296 100644 --- a/include/drm/drm_connector.h +++ b/include/drm/drm_connector.h @@ -1273,6 +1273,13 @@ struct drm_cmdline_mode { */ bool bpp_specified; + /** + * @pixel_clock: + * + * Pixel Clock in kHz. Optional. + */ + unsigned int pixel_clock; + /** * @xres: *
We'll need to get the pixel clock to generate proper display modes for all the current named modes. Let's add it to struct drm_cmdline_mode and fill it when parsing the named mode. Signed-off-by: Maxime Ripard <maxime@cerno.tech> --- drivers/gpu/drm/drm_modes.c | 9 ++++++--- include/drm/drm_connector.h | 7 +++++++ 2 files changed, 13 insertions(+), 3 deletions(-)