[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <8735eeg31e.fsf@intel.com>
Date: Tue, 02 Aug 2022 16:58:53 +0300
From: Jani Nikula <jani.nikula@...ux.intel.com>
To: Maxime Ripard <maxime@...no.tech>,
Jernej Skrabec <jernej.skrabec@...il.com>,
Martin Blumenstingl <martin.blumenstingl@...glemail.com>,
Chen-Yu Tsai <wens@...e.org>,
Philipp Zabel <p.zabel@...gutronix.de>,
Jerome Brunet <jbrunet@...libre.com>,
Samuel Holland <samuel@...lland.org>,
Thomas Zimmermann <tzimmermann@...e.de>,
Daniel Vetter <daniel@...ll.ch>, Emma Anholt <emma@...olt.net>,
David Airlie <airlied@...ux.ie>,
Maarten Lankhorst <maarten.lankhorst@...ux.intel.com>,
Noralf Trønnes
<noralf@...nnes.org>, Kevin Hilman <khilman@...libre.com>,
Neil Armstrong <narmstrong@...libre.com>,
Maxime Ripard <mripard@...nel.org>
Cc: Dom Cobley <dom@...pberrypi.com>,
Dave Stevenson <dave.stevenson@...pberrypi.com>,
linux-kernel@...r.kernel.org, dri-devel@...ts.freedesktop.org,
Mateusz Kwiatkowski <kfyatek+publicgit@...il.com>,
Geert Uytterhoeven <geert@...ux-m68k.org>,
Maxime Ripard <maxime@...no.tech>,
linux-amlogic@...ts.infradead.org, linux-sunxi@...ts.linux.dev,
Phil Elwell <phil@...pberrypi.com>,
linux-arm-kernel@...ts.infradead.org
Subject: Re: [PATCH v1 04/35] drm/modes: Introduce 480i and 576i modes
On Fri, 29 Jul 2022, Maxime Ripard <maxime@...no.tech> wrote:
> Multiple drivers (meson, vc4) define the analog TV 525-lines and 625-lines
> modes in the drivers.
>
> Since those modes are fairly standards, and that we'll need to use them in
> more places in the future, let's move the meson definition into the
> framework.
I think you should always expose interfaces, not data. Data is not an
interface, and I think this sets a bad example that will be cargo
culted.
BR,
Jani.
>
> The meson one was chosen because vc4's isn't accurate and doesn't amount to
> 525 and 625 lines.
>
> Signed-off-by: Maxime Ripard <maxime@...no.tech>
>
> diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c
> index 304004fb80aa..a4c1bd688338 100644
> --- a/drivers/gpu/drm/drm_modes.c
> +++ b/drivers/gpu/drm/drm_modes.c
> @@ -48,6 +48,24 @@
>
> #include "drm_crtc_internal.h"
>
> +const struct drm_display_mode drm_mode_480i = {
> + DRM_MODE("720x480i", DRM_MODE_TYPE_DRIVER, 13500,
> + 720, 739, 801, 858, 0,
> + 480, 488, 494, 525, 0,
> + DRM_MODE_FLAG_INTERLACE),
> + .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3,
> +};
> +EXPORT_SYMBOL_GPL(drm_mode_480i);
> +
> +const struct drm_display_mode drm_mode_576i = {
> + DRM_MODE("720x576i", DRM_MODE_TYPE_DRIVER, 13500,
> + 720, 732, 795, 864, 0,
> + 576, 580, 586, 625, 0,
> + DRM_MODE_FLAG_INTERLACE),
> + .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3,
> +};
> +EXPORT_SYMBOL_GPL(drm_mode_576i);
> +
> /**
> * drm_mode_debug_printmodeline - print a mode to dmesg
> * @mode: mode to print
> diff --git a/drivers/gpu/drm/meson/meson_encoder_cvbs.c b/drivers/gpu/drm/meson/meson_encoder_cvbs.c
> index 8110a6e39320..98ec3e563155 100644
> --- a/drivers/gpu/drm/meson/meson_encoder_cvbs.c
> +++ b/drivers/gpu/drm/meson/meson_encoder_cvbs.c
> @@ -45,21 +45,11 @@ struct meson_encoder_cvbs {
> struct meson_cvbs_mode meson_cvbs_modes[MESON_CVBS_MODES_COUNT] = {
> { /* PAL */
> .enci = &meson_cvbs_enci_pal,
> - .mode = {
> - DRM_MODE("720x576i", DRM_MODE_TYPE_DRIVER, 13500,
> - 720, 732, 795, 864, 0, 576, 580, 586, 625, 0,
> - DRM_MODE_FLAG_INTERLACE),
> - .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3,
> - },
> + .mode = &drm_mode_576i,
> },
> { /* NTSC */
> .enci = &meson_cvbs_enci_ntsc,
> - .mode = {
> - DRM_MODE("720x480i", DRM_MODE_TYPE_DRIVER, 13500,
> - 720, 739, 801, 858, 0, 480, 488, 494, 525, 0,
> - DRM_MODE_FLAG_INTERLACE),
> - .picture_aspect_ratio = HDMI_PICTURE_ASPECT_4_3,
> - },
> + .mode = &drm_mode_480i,
> },
> };
>
> @@ -71,7 +61,7 @@ meson_cvbs_get_mode(const struct drm_display_mode *req_mode)
> for (i = 0; i < MESON_CVBS_MODES_COUNT; ++i) {
> struct meson_cvbs_mode *meson_mode = &meson_cvbs_modes[i];
>
> - if (drm_mode_match(req_mode, &meson_mode->mode,
> + if (drm_mode_match(req_mode, meson_mode->mode,
> DRM_MODE_MATCH_TIMINGS |
> DRM_MODE_MATCH_CLOCK |
> DRM_MODE_MATCH_FLAGS |
> @@ -104,7 +94,7 @@ static int meson_encoder_cvbs_get_modes(struct drm_bridge *bridge,
> for (i = 0; i < MESON_CVBS_MODES_COUNT; ++i) {
> struct meson_cvbs_mode *meson_mode = &meson_cvbs_modes[i];
>
> - mode = drm_mode_duplicate(priv->drm, &meson_mode->mode);
> + mode = drm_mode_duplicate(priv->drm, meson_mode->mode);
> if (!mode) {
> dev_err(priv->dev, "Failed to create a new display mode\n");
> return 0;
> diff --git a/drivers/gpu/drm/meson/meson_encoder_cvbs.h b/drivers/gpu/drm/meson/meson_encoder_cvbs.h
> index 61d9d183ce7f..26cefb202924 100644
> --- a/drivers/gpu/drm/meson/meson_encoder_cvbs.h
> +++ b/drivers/gpu/drm/meson/meson_encoder_cvbs.h
> @@ -16,7 +16,7 @@
>
> struct meson_cvbs_mode {
> struct meson_cvbs_enci_mode *enci;
> - struct drm_display_mode mode;
> + const struct drm_display_mode *mode;
> };
>
> #define MESON_CVBS_MODES_COUNT 2
> diff --git a/include/drm/drm_modes.h b/include/drm/drm_modes.h
> index a80ae9639e96..b4a440e2688c 100644
> --- a/include/drm/drm_modes.h
> +++ b/include/drm/drm_modes.h
> @@ -394,6 +394,9 @@ struct drm_display_mode {
>
> };
>
> +extern const struct drm_display_mode drm_mode_480i;
> +extern const struct drm_display_mode drm_mode_576i;
> +
> /**
> * DRM_MODE_FMT - printf string for &struct drm_display_mode
> */
--
Jani Nikula, Intel Open Source Graphics Center
Powered by blists - more mailing lists