[PATCH v1 07/26] drm/panel: remove get_timings
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Tue Dec 3 08:18:03 UTC 2019
Hi Maxime,
On Tue, Dec 03, 2019 at 08:46:59AM +0100, Maxime Ripard wrote:
> On Mon, Dec 02, 2019 at 08:32:11PM +0100, Sam Ravnborg wrote:
> > There was no users - so remove it.
> > The callback was implemented in two drivers - deleted.
> >
> > Signed-off-by: Sam Ravnborg <sam at ravnborg.org>
> > Cc: Thierry Reding <thierry.reding at gmail.com>
> > Cc: Laurent Pinchart <Laurent.pinchart at ideasonboard.com>
> > Cc: Sam Ravnborg <sam at ravnborg.org>
> > Cc: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
> > Cc: Maxime Ripard <mripard at kernel.org>
> > Cc: David Airlie <airlied at linux.ie>
> > Cc: Daniel Vetter <daniel at ffwll.ch>
> > ---
> > drivers/gpu/drm/panel/panel-seiko-43wvf1g.c | 18 ------------------
> > drivers/gpu/drm/panel/panel-simple.c | 18 ------------------
> > include/drm/drm_panel.h | 9 ---------
> > 3 files changed, 45 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/panel/panel-seiko-43wvf1g.c b/drivers/gpu/drm/panel/panel-seiko-43wvf1g.c
> > index b878930b17e4..3bcba64235c4 100644
> > --- a/drivers/gpu/drm/panel/panel-seiko-43wvf1g.c
> > +++ b/drivers/gpu/drm/panel/panel-seiko-43wvf1g.c
> > @@ -217,30 +217,12 @@ static int seiko_panel_get_modes(struct drm_panel *panel,
> > return seiko_panel_get_fixed_modes(p, connector);
> > }
> >
> > -static int seiko_panel_get_timings(struct drm_panel *panel,
> > - unsigned int num_timings,
> > - struct display_timing *timings)
> > -{
> > - struct seiko_panel *p = to_seiko_panel(panel);
> > - unsigned int i;
> > -
> > - if (p->desc->num_timings < num_timings)
> > - num_timings = p->desc->num_timings;
> > -
> > - if (timings)
> > - for (i = 0; i < num_timings; i++)
> > - timings[i] = p->desc->timings[i];
> > -
> > - return p->desc->num_timings;
> > -}
> > -
> > static const struct drm_panel_funcs seiko_panel_funcs = {
> > .disable = seiko_panel_disable,
> > .unprepare = seiko_panel_unprepare,
> > .prepare = seiko_panel_prepare,
> > .enable = seiko_panel_enable,
> > .get_modes = seiko_panel_get_modes,
> > - .get_timings = seiko_panel_get_timings,
> > };
>
> If anything, I think we should grow the usage of timings and / or make
> it usable by everyone.
>
> Using only the mode as we do currently has a bunch of shortcomings as
> almost no encoder will be able to provide the typical pixel clock, and
> that situation leads to multiple things:
>
> - If someone working on one encoder wants to upstream a panel they
> have tested, chances are this will not be the typical pixel clock
> / timings being used but rather the one that will match what that
> SoC is capable of. Trouble comes when a second user comes in with
> a different encoder and different capabilities, and then we have a
> maintainance fight over which timing is the true timing (with a
> significant chance that none of them are).
>
> - If we can't match the pixel clock, we currently have no easy way
> to make the usual measures of reducing / growing the porches and
> blankings areas to match the pixel clock we can provide, since we
> don't have an easy way to get the tolerance on those timings for a
> given panel. There's some ad hoc solutions on some drivers (I
> think vc4 has that?) to ignore the panel and just play around with
> the timings, but I think this should be generalised.
>
> Timings solves the first case since we have the operating range now
> and not a single set of timings, and it solves the second since we can
> use that range to take those measures instead of taking a shot in the
> dark.
>
> I appreciate that it's pretty far from where we are today, but
> removing the get_timings means that all the timings already defined in
> the panel drivers are becoming useless too, and that eventually it
> will get removed.
I agree with you.
--
Regards,
Laurent Pinchart
More information about the dri-devel
mailing list