[PATCH] drm/bridge: Move mhl.h into driver directory

Daniel Vetter daniel at ffwll.ch
Wed Apr 15 18:06:20 UTC 2020


On Wed, Apr 15, 2020 at 08:48:06PM +0300, Laurent Pinchart wrote:
> Hi Daniel,
> 
> Thank you for the patch.
> 
> On Wed, Apr 15, 2020 at 07:38:33PM +0200, Daniel Vetter wrote:
> > include/drm/bridge is a bit a mistake, drivers are supposed to find
> > their bridges using one of the standard of_* functions the drm_bridge
> > core provides.
> 
> I'm confused, I don't really see how that's related to mhl.h. The header
> defines constants and structures related to the MHL (Mobile
> High-Definition Link) protocol, which is an industry standard. If you
> want to move it out of include/drm/bridge/ to eventually remove that
> directory, I think it should be renamted to include/drm/drm_mhl.h.

It looked misplaced at least ... I guess moving this out of drm/bridge
makes more sense.

> > dw-hdmi and analogix-dp are the only, historically
> > grown exception that we haven't managed to get rid of yet.
> 
> The reason why we have shared headers for those is because they're IP
> cores integrated with different glue layers in different SoCs. There's
> one driver for the IP core itself, and SoC-specific glue drivers that
> need to provide the IP core drivers with data and callbacks, defined in
> shared headers. Granted, there's also data in those headers that are
> only internal to the IP core drivers, and that should be moved out, but
> for the interface header, include/drm/bridge/ doesn't seem to be a bad
> location to me.

The thing that irks me on them is that they kinda implement bridges, but
they don't load like bridges. That's the part I think should get changed,
or we need to finally figure out what exactly isn't good with the current
drm_bridge handling and get that fixed (the relevant patches seem forever
stuck in limbo, hence why I'm kicking).

If that's not possible because these things just dont fit as drm_bridge,
then maybe they shouldn't be a bridge, but something else. But looking at
both dw-hdmi and analogix-dp these things look a lot like midlayers that
get fed huge structures. Instead of more bare-bones toolboxes to build a
set of similar drm_bridge drivers, which drivers then bind into using dt.

So all a bit fishy imo.

I guess step 1 at least would be to throw the connector and encoder code
out of all these drivers, that would be at least a first step.

Next one maybe push the per-variant bind code into drm/bridge and out of
drivers, and use more standard of_ functions to find the bridges and tie
them into the drm_device.

Then 3rd round, some refactoring to demidlayer these libraries and make
them real toolboxes.
-Daniel

> 
> > Make sure that at least no new ones grow by moving hardware header
> > files into the correct driver directory.
> > 
> > Signed-off-by: Daniel Vetter <daniel.vetter at intel.com>
> > Cc: Alexey Brodkin <abrodkin at synopsys.com>
> > Cc: Sam Ravnborg <sam at ravnborg.org>
> > Cc: Andrzej Hajda <a.hajda at samsung.com>
> > Cc: Neil Armstrong <narmstrong at baylibre.com>
> > Cc: Laurent Pinchart <Laurent.pinchart at ideasonboard.com>
> > Cc: Jonas Karlman <jonas at kwiboo.se>
> > Cc: Jernej Skrabec <jernej.skrabec at siol.net>
> > Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
> > Cc: Kate Stewart <kstewart at linuxfoundation.org>
> > Cc: Thomas Gleixner <tglx at linutronix.de>
> > Cc: Allison Randal <allison at lohutok.net>
> > Cc: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
> > Cc: "Gustavo A. R. Silva" <gustavo at embeddedor.com>
> > ---
> >  {include => drivers/gpu}/drm/bridge/mhl.h | 0
> >  drivers/gpu/drm/bridge/sii9234.c          | 3 ++-
> >  drivers/gpu/drm/bridge/sil-sii8620.c      | 2 +-
> >  3 files changed, 3 insertions(+), 2 deletions(-)
> >  rename {include => drivers/gpu}/drm/bridge/mhl.h (100%)
> > 
> > diff --git a/include/drm/bridge/mhl.h b/drivers/gpu/drm/bridge/mhl.h
> > similarity index 100%
> > rename from include/drm/bridge/mhl.h
> > rename to drivers/gpu/drm/bridge/mhl.h
> > diff --git a/drivers/gpu/drm/bridge/sii9234.c b/drivers/gpu/drm/bridge/sii9234.c
> > index b1258f0ed205..4c862c3af038 100644
> > --- a/drivers/gpu/drm/bridge/sii9234.c
> > +++ b/drivers/gpu/drm/bridge/sii9234.c
> > @@ -12,7 +12,6 @@
> >   *    Shankar Bandal <shankar.b at samsung.com>
> >   *    Dharam Kumar <dharam.kr at samsung.com>
> >   */
> > -#include <drm/bridge/mhl.h>
> >  #include <drm/drm_bridge.h>
> >  #include <drm/drm_crtc.h>
> >  #include <drm/drm_edid.h>
> > @@ -29,6 +28,8 @@
> >  #include <linux/regulator/consumer.h>
> >  #include <linux/slab.h>
> >  
> > +#include "mhl.h"
> > +
> >  #define CBUS_DEVCAP_OFFSET		0x80
> >  
> >  #define SII9234_MHL_VERSION		0x11
> > diff --git a/drivers/gpu/drm/bridge/sil-sii8620.c b/drivers/gpu/drm/bridge/sil-sii8620.c
> > index 92acd336aa89..017dbb67404e 100644
> > --- a/drivers/gpu/drm/bridge/sil-sii8620.c
> > +++ b/drivers/gpu/drm/bridge/sil-sii8620.c
> > @@ -8,7 +8,6 @@
> >  
> >  #include <asm/unaligned.h>
> >  
> > -#include <drm/bridge/mhl.h>
> >  #include <drm/drm_bridge.h>
> >  #include <drm/drm_crtc.h>
> >  #include <drm/drm_edid.h>
> > @@ -31,6 +30,7 @@
> >  
> >  #include <media/rc-core.h>
> >  
> > +#include "mhl.h"
> >  #include "sil-sii8620.h"
> >  
> >  #define SII8620_BURST_BUF_LEN 288
> 
> -- 
> Regards,
> 
> Laurent Pinchart

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the dri-devel mailing list