devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Thierry Reding <thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: "Lothar Waßmann" <LW-bxm8fMRDkQLDiMYJYoSAnRvVK+yQ3ZXh@public.gmane.org>
Cc: David Airlie <airlied-cv59FeDIM0c@public.gmane.org>,
	Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
	Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH 1/9] drm/panel: simple: add a macro for defining display modes in a simpler and less error prone way
Date: Tue, 17 Oct 2017 14:50:45 +0200	[thread overview]
Message-ID: <20171017125045.GD27983@ulmo> (raw)
In-Reply-To: <20171017141337.088ba796-AvR2QvxeiV7DiMYJYoSAnRvVK+yQ3ZXh@public.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 2913 bytes --]

On Tue, Oct 17, 2017 at 02:13:37PM +0200, Lothar Waßmann wrote:
> Hi,
> 
> On Tue, 17 Oct 2017 14:08:18 +0200 Thierry Reding wrote:
> > On Wed, Oct 11, 2017 at 01:23:33PM +0200, Lothar Waßmann wrote:
> > > Create a macro that eases the definition of display mode parameters by
> > > accecpting the parameters:
> > > freq, hactive, hfront-porch, hsynclen, hback-porch,
> > > vactive, vfront-porch, vsynclen, vback-porch, vrefresh
> > > that can be usually directly taken from an LCD datasheet.
> > > 
> > > Put the calculations that are now open coded repeating the same
> > > parameters multiple times into the macro expansion.
> > > 
> > > Signed-off-by: Lothar Waßmann <LW-bxm8fMRDkQLDiMYJYoSAnRvVK+yQ3ZXh@public.gmane.org>
> > > ---
> > >  drivers/gpu/drm/panel/panel-simple.c | 14 ++++++++++++++
> > >  1 file changed, 14 insertions(+)
> > > 
> > > diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c
> > > index 474fa75..dec639d 100644
> > > --- a/drivers/gpu/drm/panel/panel-simple.c
> > > +++ b/drivers/gpu/drm/panel/panel-simple.c
> > > @@ -411,6 +411,20 @@ static const struct panel_desc ampire_am_480272h3tmqw_t01h = {
> > >  	.bus_format = MEDIA_BUS_FMT_RGB888_1X24,
> > >  };
> > >  
> > > +#define SP_DISPLAY_MODE(freq, ha, hfp, hs, hbp, va, vfp, vs, vbp, vr, flgs) { \
> > > +	.clock = freq,							\
> > > +	.hdisplay = ha,							\
> > > +	.hsync_start = (ha) + (hfp),					\
> > > +	.hsync_end = (ha) + (hfp) + (hs),				\
> > > +	.htotal = (ha) + (hfp) + (hs) + (hbp),				\
> > > +	.vdisplay = (va),						\
> > > +	.vsync_start = (va) + (vfp),					\
> > > +	.vsync_end = (va) + (vfp) + (vs),				\
> > > +	.vtotal = (va) + (vfp) + (vs) + (vbp),				\
> > > +	.vrefresh = vr,							\
> > > +	.flags = flgs,							\
> > > +	}
> > 
> > I don't think this simplifies anything. It's now completely non-obvious
> > which parameter is which, so you actually have to go look at the macro
> > definition when you add a new mode to make sure you get them right.
> > 
> In the original code you have to repeat the same parameters (e.g.
> vertical front porch (vfp)) in multiple places which is error prone.

I don't think this is an issue. The definitions initialize the fields in
the natural order, so the repetitions are where very localized and quite
difficult to actually get wrong. I've never seen anyone get it wrong for
any panel.

Also note that the above notation is only out of convenience to make it
clearer what the active, front-porch, sync and back-porch values are.
You can easily just collapse them into the sum if you're worried about
the repetition.

Alternatively, are you aware of struct display_timing? It's a different
way to describe the timings which doesn't require repeating the values.
simple-panel already supports those as an alternative to the struct
drm_display_mode.

Thierry

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  parent reply	other threads:[~2017-10-17 12:50 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-11 11:23 [PATCH 0/9] drm/panel: simple: improve definition of display modes and add more panels Lothar Waßmann
2017-10-11 11:23 ` [PATCH 1/9] drm/panel: simple: add a macro for defining display modes in a simpler and less error prone way Lothar Waßmann
2017-10-17 12:08   ` Thierry Reding
2017-10-17 12:13     ` Lothar Waßmann
     [not found]       ` <20171017141337.088ba796-AvR2QvxeiV7DiMYJYoSAnRvVK+yQ3ZXh@public.gmane.org>
2017-10-17 12:50         ` Thierry Reding [this message]
2017-10-11 11:23 ` [PATCH 2/9] drm/panel: simple: simplify display_mode definitions by using macro Lothar Waßmann
     [not found]   ` <1507721021-28174-3-git-send-email-LW-bxm8fMRDkQLDiMYJYoSAnRvVK+yQ3ZXh@public.gmane.org>
2017-10-17 12:09     ` Thierry Reding
2017-10-17 13:05       ` Lothar Waßmann
2017-10-17 13:08         ` Thierry Reding
2017-10-17 13:17           ` Lothar Waßmann
2017-10-11 11:23 ` [PATCH 3/9] drm/panel: simple: make it possible to override LCD bus format Lothar Waßmann
     [not found]   ` <1507721021-28174-4-git-send-email-LW-bxm8fMRDkQLDiMYJYoSAnRvVK+yQ3ZXh@public.gmane.org>
2017-10-13 22:13     ` Rob Herring
2017-10-17 12:12     ` Thierry Reding
2017-10-17 12:44       ` Lothar Waßmann
     [not found]         ` <20171017144423.4ddd6047-AvR2QvxeiV7DiMYJYoSAnRvVK+yQ3ZXh@public.gmane.org>
2017-10-17 12:56           ` Thierry Reding
2017-10-17 17:11             ` Rob Herring
     [not found] ` <1507721021-28174-1-git-send-email-LW-bxm8fMRDkQLDiMYJYoSAnRvVK+yQ3ZXh@public.gmane.org>
2017-10-11 11:23   ` [PATCH 4/9] drm/panel: simple: add support for overriding the pixel clock polarity Lothar Waßmann
2017-10-16 22:13     ` Rob Herring
     [not found]       ` <CAL_Jsq+EcROz1OYK28y814+Q__F=1obXe7EuXRBta+BRFjBJFA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-10-17  6:51         ` Lothar Waßmann
2017-10-17 12:14     ` Thierry Reding
2017-10-17 12:25       ` Lothar Waßmann
2017-10-17 12:45         ` Thierry Reding
2017-10-25  9:56           ` Lothar Waßmann
2017-10-11 11:23   ` [PATCH 5/9] drm/panel: simple: add support for EDT ET0350 3.5" QVGA panel Lothar Waßmann
     [not found]     ` <1507721021-28174-6-git-send-email-LW-bxm8fMRDkQLDiMYJYoSAnRvVK+yQ3ZXh@public.gmane.org>
2017-10-17 19:50       ` Rob Herring
2017-10-11 11:23 ` [PATCH 6/9] drm/panel: simple: add support for EDT ET0430 4.3" HVGA panel Lothar Waßmann
2017-10-11 11:23 ` [PATCH 7/9] drm/panel: simple: add support for NLT NL12880 12.1" WXGA LVDS panel Lothar Waßmann
2017-10-11 11:23 ` [PATCH 8/9] drm/panel: simple: add support for EDT ETM0700G0EDH6 7" WVGA panel Lothar Waßmann
2017-10-11 11:23 ` [PATCH 9/9] drm/panel: simple: add support for EDT ET1010G0DSA/ETML1010G0DKA 10.1" WXGA LVDS panels Lothar Waßmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171017125045.GD27983@ulmo \
    --to=thierry.reding-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
    --cc=LW-bxm8fMRDkQLDiMYJYoSAnRvVK+yQ3ZXh@public.gmane.org \
    --cc=airlied-cv59FeDIM0c@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
    --cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).