Hi, 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 <[email protected]> > Cc: Thierry Reding <[email protected]> > Cc: Laurent Pinchart <[email protected]> > Cc: Sam Ravnborg <[email protected]> > Cc: Maarten Lankhorst <[email protected]> > Cc: Maxime Ripard <[email protected]> > Cc: David Airlie <[email protected]> > Cc: Daniel Vetter <[email protected]> > --- > 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.
Maxime
signature.asc
Description: PGP signature
_______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel
