[PATCH v1 07/26] drm/panel: remove get_timings
Maxime Ripard
mripard at kernel.org
Tue Dec 3 07:46:59 UTC 2019
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 <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.
Maxime
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20191203/a3f0742c/attachment-0001.sig>
More information about the dri-devel
mailing list