mbox series

[v3,0/2] drm/panel: Extend panels to report their types

Message ID 20190904132804.29680-1-laurent.pinchart@ideasonboard.com (mailing list archive)
Headers show
Series drm/panel: Extend panels to report their types | expand

Message

Laurent Pinchart Sept. 4, 2019, 1:28 p.m. UTC
Hello,

This series, whose previous version was named "[PATCH v2 0/4] drm/panel:
Extend panels to report their types" and is available at
https://www.spinics.net/lists/dri-devel/msg224579.html, allows panels to
report their type, in order to create drm_connector instances with
appropriate types in the upper layers.

In patch 1/2 the drm_panel structure receives a new connector_type field
to report its type, set through drm_panel_init(), and all connector
drivers are updated accordingly. The panel-simple driver however only
reports the LVDS connector type for known-to-be-LVDS panels, while all
other leave the field initialised to 0, corresponding to
DRM_MODE_CONNECTOR_Unknown. Panels supported by that driver will need to
be reviewed one by one and their type updated. This was done to avoid
reporting an incorrect type, allowing upper layers to catch
DRM_MODE_CONNECTOR_Unknown and WARN() to trigger an update of the
corresponding panel.

Patch 2/2 then modifies drm_panel_bridge_add() and its devm_ counterpart
to replace the connector type argument with the type reported by the
panel. This can't unfortunately be forced upon all drivers as several of
them hardcode a DRM_MODE_CONNECTOR_Unknown type, and would then change
the connector type reported to userspace, leading to possible breakages.
A new function, drm_panel_bridge_add_typed(), is added with the existing
behaviour of drm_panel_bridge_add() to create a panel bridge with a
forced connector type, and drivers are switched to using that function.
They should then be switched back one by one to drm_panel_bridge_add()
after careful review (and clever handling of the connector type change
issue). The drm_panel_bridge_add_typed() function is marked as
deprecated and should not be used in new code.

During review of v2, the question of whether to introduce a new
DRM_MODE_CONNECTOR_PANEL was raised. This is still being discussed, but
such a change would still need to expose the existing panel types for
backward compatibility, and this series wouldn't hinder this in any way.
I thus believe that we should merge it sooner than later without waiting
for the DRM_MODE_CONNECTOR_PANEL discussion to settle.

The patches are available at

	git://linuxtv.org/pinchartl/media.git omapdrm/panels

Laurent Pinchart (2):
  drm/panel: Add and fill drm_panel type field
  drm/bridge: panel: Infer connector type from panel by default

 .../gpu/drm/atmel-hlcdc/atmel_hlcdc_output.c  |  3 +-
 drivers/gpu/drm/bridge/cdns-dsi.c             |  3 +-
 drivers/gpu/drm/bridge/lvds-encoder.c         |  3 +-
 drivers/gpu/drm/bridge/panel.c                | 69 ++++++++++++++++---
 drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c |  3 +-
 drivers/gpu/drm/drm_panel.c                   |  5 +-
 drivers/gpu/drm/ingenic/ingenic-drm.c         |  4 +-
 drivers/gpu/drm/mcde/mcde_dsi.c               |  4 +-
 drivers/gpu/drm/panel/panel-arm-versatile.c   |  3 +-
 .../drm/panel/panel-feiyang-fy07024di26a30d.c |  3 +-
 drivers/gpu/drm/panel/panel-ilitek-ili9322.c  |  3 +-
 drivers/gpu/drm/panel/panel-ilitek-ili9881c.c |  3 +-
 drivers/gpu/drm/panel/panel-innolux-p079zca.c |  3 +-
 .../gpu/drm/panel/panel-jdi-lt070me05000.c    |  3 +-
 .../drm/panel/panel-kingdisplay-kd097d04.c    |  2 +-
 drivers/gpu/drm/panel/panel-lg-lb035q02.c     |  3 +-
 drivers/gpu/drm/panel/panel-lg-lg4573.c       |  3 +-
 drivers/gpu/drm/panel/panel-lvds.c            |  3 +-
 drivers/gpu/drm/panel/panel-nec-nl8048hl11.c  |  3 +-
 drivers/gpu/drm/panel/panel-novatek-nt39016.c |  3 +-
 .../drm/panel/panel-olimex-lcd-olinuxino.c    |  3 +-
 .../gpu/drm/panel/panel-orisetech-otm8009a.c  |  3 +-
 .../drm/panel/panel-osd-osd101t2587-53ts.c    |  2 +-
 .../drm/panel/panel-panasonic-vvx10f034n00.c  |  2 +-
 .../drm/panel/panel-raspberrypi-touchscreen.c |  3 +-
 drivers/gpu/drm/panel/panel-raydium-rm67191.c |  3 +-
 drivers/gpu/drm/panel/panel-raydium-rm68200.c |  3 +-
 .../drm/panel/panel-rocktech-jh057n00900.c    |  3 +-
 drivers/gpu/drm/panel/panel-ronbo-rb070d30.c  |  3 +-
 drivers/gpu/drm/panel/panel-samsung-ld9040.c  |  3 +-
 drivers/gpu/drm/panel/panel-samsung-s6d16d0.c |  3 +-
 drivers/gpu/drm/panel/panel-samsung-s6e3ha2.c |  3 +-
 .../gpu/drm/panel/panel-samsung-s6e63j0x03.c  |  3 +-
 drivers/gpu/drm/panel/panel-samsung-s6e63m0.c |  3 +-
 drivers/gpu/drm/panel/panel-samsung-s6e8aa0.c |  3 +-
 drivers/gpu/drm/panel/panel-seiko-43wvf1g.c   |  3 +-
 .../gpu/drm/panel/panel-sharp-lq101r1sx01.c   |  3 +-
 .../gpu/drm/panel/panel-sharp-ls037v7dw01.c   |  3 +-
 .../gpu/drm/panel/panel-sharp-ls043t1le01.c   |  2 +-
 drivers/gpu/drm/panel/panel-simple.c          | 26 ++++++-
 drivers/gpu/drm/panel/panel-sitronix-st7701.c |  3 +-
 .../gpu/drm/panel/panel-sitronix-st7789v.c    |  3 +-
 drivers/gpu/drm/panel/panel-sony-acx565akm.c  |  3 +-
 drivers/gpu/drm/panel/panel-tpo-td028ttec1.c  |  3 +-
 drivers/gpu/drm/panel/panel-tpo-td043mtea1.c  |  3 +-
 drivers/gpu/drm/panel/panel-tpo-tpg110.c      |  3 +-
 drivers/gpu/drm/panel/panel-truly-nt35597.c   |  3 +-
 drivers/gpu/drm/pl111/pl111_drv.c             |  4 +-
 drivers/gpu/drm/rcar-du/rcar_du_encoder.c     |  4 +-
 drivers/gpu/drm/rockchip/rockchip_rgb.c       |  3 +-
 drivers/gpu/drm/stm/ltdc.c                    |  4 +-
 drivers/gpu/drm/tilcdc/tilcdc_external.c      |  4 +-
 drivers/gpu/drm/tve200/tve200_drv.c           |  4 +-
 drivers/gpu/drm/vc4/vc4_dpi.c                 |  3 +-
 drivers/gpu/drm/vc4/vc4_dsi.c                 |  4 +-
 include/drm/drm_bridge.h                      | 11 +--
 include/drm/drm_panel.h                       | 12 +++-
 57 files changed, 205 insertions(+), 78 deletions(-)

Comments

Sam Ravnborg Sept. 8, 2019, 5:11 p.m. UTC | #1
Hi Laurent.

On Wed, Sep 04, 2019 at 04:28:02PM +0300, Laurent Pinchart wrote:
> Hello,
> 
> This series, whose previous version was named "[PATCH v2 0/4] drm/panel:
> Extend panels to report their types" and is available at
> https://www.spinics.net/lists/dri-devel/msg224579.html, allows panels to
> report their type, in order to create drm_connector instances with
> appropriate types in the upper layers.
> 
> In patch 1/2 the drm_panel structure receives a new connector_type field
> to report its type, set through drm_panel_init(), and all connector
> drivers are updated accordingly. The panel-simple driver however only
> reports the LVDS connector type for known-to-be-LVDS panels, while all
> other leave the field initialised to 0, corresponding to
> DRM_MODE_CONNECTOR_Unknown. Panels supported by that driver will need to
> be reviewed one by one and their type updated. This was done to avoid
> reporting an incorrect type, allowing upper layers to catch
> DRM_MODE_CONNECTOR_Unknown and WARN() to trigger an update of the
> corresponding panel.
> 
> Patch 2/2 then modifies drm_panel_bridge_add() and its devm_ counterpart
> to replace the connector type argument with the type reported by the
> panel. This can't unfortunately be forced upon all drivers as several of
> them hardcode a DRM_MODE_CONNECTOR_Unknown type, and would then change
> the connector type reported to userspace, leading to possible breakages.
> A new function, drm_panel_bridge_add_typed(), is added with the existing
> behaviour of drm_panel_bridge_add() to create a panel bridge with a
> forced connector type, and drivers are switched to using that function.
> They should then be switched back one by one to drm_panel_bridge_add()
> after careful review (and clever handling of the connector type change
> issue). The drm_panel_bridge_add_typed() function is marked as
> deprecated and should not be used in new code.
> 
> During review of v2, the question of whether to introduce a new
> DRM_MODE_CONNECTOR_PANEL was raised. This is still being discussed, but
> such a change would still need to expose the existing panel types for
> backward compatibility, and this series wouldn't hinder this in any way.
> I thus believe that we should merge it sooner than later without waiting
> for the DRM_MODE_CONNECTOR_PANEL discussion to settle.
Agreed.

> 
> The patches are available at
> 
> 	git://linuxtv.org/pinchartl/media.git omapdrm/panels
> 
> Laurent Pinchart (2):
>   drm/panel: Add and fill drm_panel type field
>   drm/bridge: panel: Infer connector type from panel by default

Applied all three patches (despite this shortlog only shows two
patches).

Pushed to drm-misc-next.

	Sam
Sam Ravnborg Sept. 8, 2019, 5:17 p.m. UTC | #2
Hi Laurent.

> > Laurent Pinchart (2):
> >   drm/panel: Add and fill drm_panel type field
> >   drm/bridge: panel: Infer connector type from panel by default
> 
> Applied all three patches (despite this shortlog only shows two
> patches).

I guess you noticed that I have been away a little.
This will continue for at least another week.
day-time job + some travelling ahead.

	Sam
Laurent Pinchart Sept. 8, 2019, 10:46 p.m. UTC | #3
Hi Sam,

On Sun, Sep 08, 2019 at 07:17:48PM +0200, Sam Ravnborg wrote:
> Hi Laurent.
> 
> > > Laurent Pinchart (2):
> > >   drm/panel: Add and fill drm_panel type field
> > >   drm/bridge: panel: Infer connector type from panel by default
> > 
> > Applied all three patches (despite this shortlog only shows two
> > patches).
> 
> I guess you noticed that I have been away a little.
> This will continue for at least another week.
> day-time job + some travelling ahead.

No worries at all. Thanks for your work and for picking those patches,
and have a safe (and if possible enjoyable) travel.