1. 20 4月, 2022 1 次提交
  2. 14 3月, 2022 1 次提交
    • V
      drm/bridge: Use drm_mode_copy() · d008bc33
      Ville Syrjälä 提交于
      struct drm_display_mode embeds a list head, so overwriting
      the full struct with another one will corrupt the list
      (if the destination mode is on a list). Use drm_mode_copy()
      instead which explicitly preserves the list head of
      the destination mode.
      
      Even if we know the destination mode is not on any list
      using drm_mode_copy() seems decent as it sets a good
      example. Bad examples of not using it might eventually
      get copied into code where preserving the list head
      actually matters.
      
      Obviously one case not covered here is when the mode
      itself is embedded in a larger structure and the whole
      structure is copied. But if we are careful when copying
      into modes embedded in structures I think we can be a
      little more reassured that bogus list heads haven't been
      propagated in.
      
      @is_mode_copy@
      @@
      drm_mode_copy(...)
      {
      ...
      }
      
      @depends on !is_mode_copy@
      struct drm_display_mode *mode;
      expression E, S;
      @@
      (
      - *mode = E
      + drm_mode_copy(mode, &E)
      |
      - memcpy(mode, E, S)
      + drm_mode_copy(mode, E)
      )
      
      @depends on !is_mode_copy@
      struct drm_display_mode mode;
      expression E;
      @@
      (
      - mode = E
      + drm_mode_copy(&mode, &E)
      |
      - memcpy(&mode, E, S)
      + drm_mode_copy(&mode, E)
      )
      
      @@
      struct drm_display_mode *mode;
      @@
      - &*mode
      + mode
      
      Cc: Andrzej Hajda <andrzej.hajda@intel.com>
      Cc: Neil Armstrong <narmstrong@baylibre.com>
      Cc: Robert Foss <robert.foss@linaro.org>
      Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
      Cc: Jonas Karlman <jonas@kwiboo.se>
      Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20220218100403.7028-7-ville.syrjala@linux.intel.comReviewed-by: NAndrzej Hajda <andrzej.hajda@intel.com>
      Reviewed-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      d008bc33
  3. 10 2月, 2022 1 次提交
  4. 25 1月, 2022 1 次提交
  5. 12 11月, 2021 1 次提交
  6. 15 10月, 2021 1 次提交
  7. 28 7月, 2021 2 次提交
  8. 07 5月, 2021 2 次提交
  9. 20 4月, 2021 1 次提交
  10. 05 1月, 2021 1 次提交
  11. 13 11月, 2020 1 次提交
  12. 11 7月, 2020 2 次提交
    • L
      drm/bridge: dw-hdmi: Always add the bridge in the global bridge list · 0bf4f5b5
      Liu Ying 提交于
      It doesn't hurt to add the bridge in the global bridge list also for
      platform specific dw-hdmi drivers which are based on the component
      framework.  This can be achieved by moving the drm_bridge_add() function
      call from dw_hdmi_probe() to __dw_hdmi_probe().  A counterpart movement
      for drm_bridge_remove() is also needed then.  Moreover, since drm_bridge_add()
      initializes &bridge->hpd_mutex, this may help those platform specific
      dw-hdmi drivers(based on the component framework) avoid accessing the
      uninitialized mutex in drm_bridge_hpd_notify() which is called in
      dw_hdmi_irq().  Putting drm_bridge_add() in __dw_hdmi_probe() just before
      it returns successfully should bring no logic change for platforms based
      on the DRM bridge API, which is a good choice from safety point of view.
      Also, __dw_hdmi_probe() is renamed to dw_hdmi_probe() since dw_hdmi_probe()
      does nothing else but calling __dw_hdmi_probe().  Similar renaming applies
      to the __dw_hdmi_remove()/dw_hdmi_remove() pair.
      
      Fixes: ec971aaa ("drm: bridge: dw-hdmi: Make connector creation optional")
      Cc: Andrzej Hajda <a.hajda@samsung.com>
      Cc: Neil Armstrong <narmstrong@baylibre.com>
      Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
      Cc: Jonas Karlman <jonas@kwiboo.se>
      Cc: Jernej Skrabec <jernej.skrabec@siol.net>
      Cc: David Airlie <airlied@linux.ie>
      Cc: Daniel Vetter <daniel@ffwll.ch>
      Cc: Boris Brezillon <boris.brezillon@collabora.com>
      Cc: Jerome Brunet <jbrunet@baylibre.com>
      Cc: Cheng-Yi Chiang <cychiang@chromium.org>
      Cc: Dariusz Marcinkiewicz <darekm@google.com>
      Cc: Archit Taneja <architt@codeaurora.org>
      Cc: Jose Abreu <joabreu@synopsys.com>
      Cc: Sam Ravnborg <sam@ravnborg.org>
      Cc: dri-devel@lists.freedesktop.org
      Cc: NXP Linux Team <linux-imx@nxp.com>
      Signed-off-by: NLiu Ying <victor.liu@nxp.com>
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/1594260156-8316-2-git-send-email-victor.liu@nxp.com
      0bf4f5b5
    • L
      drm/bridge: dw-hdmi: Don't cleanup i2c adapter and ddc ptr in __dw_hdmi_probe() bailout path · 2ae53e79
      Liu Ying 提交于
      It's unnecessary to cleanup the i2c adapter and the ddc pointer in
      the bailout path of  __dw_hdmi_probe(), since the adapter is not
      added and the ddc pointer is not set.
      
      Fixes: a23d6265 ("drm: bridge: dw-hdmi: Extract PHY interrupt setup to a function")
      Cc: Andrzej Hajda <a.hajda@samsung.com>
      Cc: Neil Armstrong <narmstrong@baylibre.com>
      Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
      Cc: Jonas Karlman <jonas@kwiboo.se>
      Cc: Jernej Skrabec <jernej.skrabec@siol.net>
      Cc: David Airlie <airlied@linux.ie>
      Cc: Daniel Vetter <daniel@ffwll.ch>
      Cc: Boris Brezillon <boris.brezillon@collabora.com>
      Cc: Jerome Brunet <jbrunet@baylibre.com>
      Cc: Cheng-Yi Chiang <cychiang@chromium.org>
      Cc: Dariusz Marcinkiewicz <darekm@google.com>
      Cc: Archit Taneja <architt@codeaurora.org>
      Cc: Jose Abreu <joabreu@synopsys.com>
      Cc: dri-devel@lists.freedesktop.org
      Cc: NXP Linux Team <linux-imx@nxp.com>
      Signed-off-by: NLiu Ying <victor.liu@nxp.com>
      Reviewed-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/1594260156-8316-1-git-send-email-victor.liu@nxp.com
      2ae53e79
  13. 24 6月, 2020 12 次提交
  14. 25 3月, 2020 3 次提交
  15. 10 3月, 2020 5 次提交
  16. 06 3月, 2020 1 次提交
  17. 26 2月, 2020 1 次提交
    • L
      drm/bridge: Extend bridge API to disable connector creation · a25b988f
      Laurent Pinchart 提交于
      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: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Reviewed-by: NBoris Brezillon <boris.brezillon@collabora.com>
      Acked-by: NSam Ravnborg <sam@ravnborg.org>
      Reviewed-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      Tested-by: NSebastian Reichel <sebastian.reichel@collabora.com>
      Reviewed-by: NSebastian Reichel <sebastian.reichel@collabora.com>
      Acked-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20200226112514.12455-10-laurent.pinchart@ideasonboard.com
      a25b988f
  18. 29 10月, 2019 1 次提交
  19. 15 10月, 2019 1 次提交
  20. 10 10月, 2019 1 次提交