RE: [PATCH v2 5/9] drm/panel: Add timings field to drm_panel

From: Fabrizio Castro
Date: Thu Aug 15 2019 - 10:48:54 EST


Hi Sam,

Thank you for your feedback!

> From: Sam Ravnborg <sam@xxxxxxxxxxxx>
> Sent: 15 August 2019 15:14
> Subject: Re: [PATCH v2 5/9] drm/panel: Add timings field to drm_panel
>
> Hi Fabrizio
>
> On Thu, Aug 15, 2019 at 12:04:29PM +0100, Fabrizio Castro wrote:
> > We need to know if the panel supports dual-link, similarly
> > to bridges, therefore add a reference to drm_timings in
> > drm_panel.
>
> Why do we need to know this?

The encoders connected to a dual-LVDS panels may need to do special
arrangements for the dual-link setup, like initializing a companion
encoder, and working out which pixels (even or odd) to send to which
port (first LVDS input port or second LVDS input port). At least, this is
within the scope of the implementation of this series, which is currently
being discussed.

> Why is it needed in drm_panel and not in some driver specific struct?

The other fields are still applicable to panels, so I think it makes sense
for this to be included in struct drm_panels.

>
> I cannot see the full series, as I was copied only on some mails.
> Awaiting dri-devel moderator before I can see the rest.

I am sorry about this, some people don't want to be bothered by the whole
thing, I'll make sure I add you to the recipients list for the next iterations
of this series.

Thanks,
Fab

>
> Sam
>
> >
> > Signed-off-by: Fabrizio Castro <fabrizio.castro@xxxxxxxxxxxxxx>
> >
> > ---
> > v1->v2:
> > * new patch
> >
> > include/drm/drm_panel.h | 3 +++
> > 1 file changed, 3 insertions(+)
> >
> > diff --git a/include/drm/drm_panel.h b/include/drm/drm_panel.h
> > index 8c738c0..cd6ff07 100644
> > --- a/include/drm/drm_panel.h
> > +++ b/include/drm/drm_panel.h
> > @@ -26,6 +26,7 @@
> >
> > #include <linux/errno.h>
> > #include <linux/list.h>
> > +#include <drm/drm_timings.h>
> >
> > struct device_node;
> > struct drm_connector;
> > @@ -81,6 +82,7 @@ struct drm_panel_funcs {
> > * struct drm_panel - DRM panel object
> > * @drm: DRM device owning the panel
> > * @connector: DRM connector that the panel is attached to
> > + * @timings: timing information
> > * @dev: parent device of the panel
> > * @link: link from panel device (supplier) to DRM device (consumer)
> > * @funcs: operations that can be performed on the panel
> > @@ -89,6 +91,7 @@ struct drm_panel_funcs {
> > struct drm_panel {
> > struct drm_device *drm;
> > struct drm_connector *connector;
> > + const struct drm_timings *timings;
> > struct device *dev;
> >
> > const struct drm_panel_funcs *funcs;
> > --
> > 2.7.4