Skip to content
Snippets Groups Projects
  1. Mar 31, 2022
  2. Jan 13, 2022
  3. Jan 05, 2022
  4. Jan 04, 2022
  5. Jul 28, 2021
  6. Jul 27, 2021
  7. Sep 11, 2020
  8. Sep 08, 2020
  9. Sep 07, 2020
  10. Jun 25, 2020
  11. Jun 23, 2020
  12. Feb 26, 2020
    • Laurent Pinchart's avatar
      drm/bridge: Extend bridge API to disable connector creation · a25b988f
      Laurent Pinchart authored
      
      Most bridge drivers create a DRM connector to model the connector at the
      output of the bridge. This model is historical and has worked pretty
      well so far, but causes several issues:
      
      - It prevents supporting more complex display pipelines where DRM
      connector operations are split over multiple components. For instance a
      pipeline with a bridge connected to the DDC signals to read EDID data,
      and another one connected to the HPD signal to detect connection and
      disconnection, will not be possible to support through this model.
      
      - It requires every bridge driver to implement similar connector
      handling code, resulting in code duplication.
      
      - It assumes that a bridge will either be wired to a connector or to
      another bridge, but doesn't support bridges that can be used in both
      positions very well (although there is some ad-hoc support for this in
      the analogix_dp bridge driver).
      
      In order to solve these issues, ownership of the connector should be
      moved to the display controller driver (where it can be implemented
      using helpers provided by the core).
      
      Extend the bridge API to allow disabling connector creation in bridge
      drivers as a first step towards the new model. The new flags argument to
      the bridge .attach() operation allows instructing the bridge driver to
      skip creating a connector. Unconditionally set the new flags argument to
      0 for now to keep the existing behaviour, and modify all existing bridge
      drivers to return an error when connector creation is not requested as
      they don't support this feature yet.
      
      The change is based on the following semantic patch, with manual review
      and edits.
      
      @ rule1 @
      identifier funcs;
      identifier fn;
      @@
       struct drm_bridge_funcs funcs = {
       	...,
       	.attach = fn
       };
      
      @ depends on rule1 @
      identifier rule1.fn;
      identifier bridge;
      statement S, S1;
      @@
       int fn(
       	struct drm_bridge *bridge
      +	, enum drm_bridge_attach_flags flags
       )
       {
       	... when != S
      +	if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR) {
      +		DRM_ERROR("Fix bridge driver to make connector optional!");
      +		return -EINVAL;
      +	}
      +
       	S1
       	...
       }
      
      @ depends on rule1 @
      identifier rule1.fn;
      identifier bridge, flags;
      expression E1, E2, E3;
      @@
       int fn(
       	struct drm_bridge *bridge,
       	enum drm_bridge_attach_flags flags
       ) {
       <...
       drm_bridge_attach(E1, E2, E3
      +	, flags
       )
       ...>
       }
      
      @@
      expression E1, E2, E3;
      @@
       drm_bridge_attach(E1, E2, E3
      +	, 0
       )
      
      Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Reviewed-by: default avatarBoris Brezillon <boris.brezillon@collabora.com>
      Acked-by: default avatarSam Ravnborg <sam@ravnborg.org>
      Reviewed-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      Tested-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
      Reviewed-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
      Acked-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20200226112514.12455-10-laurent.pinchart@ideasonboard.com
      a25b988f
  13. Feb 10, 2020
  14. Dec 16, 2019
  15. Sep 25, 2019
  16. Sep 08, 2019
    • Laurent Pinchart's avatar
      drm/bridge: panel: Infer connector type from panel by default · 89958b7c
      Laurent Pinchart authored
      
      The drm panel bridge creates a connector using a connector type
      explicitly passed by the display controller or bridge driver that
      instantiates the panel bridge. Now that drm_panel reports its connector
      type, we can use it to avoid passing an explicit (and often incorrect)
      connector type to drm_panel_bridge_add() and
      devm_drm_panel_bridge_add().
      
      Several drivers report incorrect or unknown connector types to
      userspace. Reporting a different type may result in a breakage. For that
      reason, rename (devm_)drm_panel_bridge_add() to
      (devm_)drm_panel_bridge_add_typed(), and add new
      (devm_)drm_panel_bridge_add() functions that use the panel connector
      type. Update all callers of (devm_)drm_panel_bridge_add() to the _typed
      function, they will be converted one by one after testing.
      
      The panel drivers have been updated with the following Coccinelle
      semantic patch, with manual inspection and fixes to indentation.
      
      @@
      expression bridge;
      expression dev;
      expression panel;
      identifier type;
      @@
      (
      -bridge = drm_panel_bridge_add(panel, type);
      +bridge = drm_panel_bridge_add_typed(panel, type);
      |
      -bridge = devm_drm_panel_bridge_add(dev, panel, type);
      +bridge = devm_drm_panel_bridge_add_typed(dev, panel, type);
      )
      
      Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Reviewed-by: default avatarBoris Brezillon <boris.brezillon@collabora.com>
      Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20190904132804.29680-3-laurent.pinchart@ideasonboard.com
      89958b7c
  17. Jun 24, 2019
  18. Jun 12, 2019
  19. May 26, 2019
  20. Jan 24, 2019
  21. Jan 14, 2019
  22. Oct 30, 2018
  23. Apr 26, 2018
  24. Apr 19, 2018
  25. Mar 05, 2018
  26. Feb 08, 2018
  27. Jan 30, 2018
  28. Jan 16, 2018
Loading