lkml.org 
[lkml]   [2022]   [Aug]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [PATCH v1 04/35] drm/modes: Introduce 480i and 576i modes
    Date
    On Fri, 29 Jul 2022, Maxime Ripard <maxime@cerno.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@cerno.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

    \
     
     \ /
      Last update: 2022-08-02 16:00    [W:4.868 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site