1. 25 2月, 2021 2 次提交
    • M
      drm/atomic: Pass the full state to planes atomic_check · 7c11b99a
      Maxime Ripard 提交于
      The current atomic helpers have either their object state being passed as
      an argument or the full atomic state.
      
      The former is the pattern that was done at first, before switching to the
      latter for new hooks or when it was needed.
      
      Let's convert all the remaining helpers to provide a consistent
      interface, starting with the planes atomic_check.
      
      The conversion was done using the coccinelle script below plus some
      manual changes for vmwgfx, built tested on all the drivers.
      
      @@
      identifier plane, plane_state;
      symbol state;
      @@
      
       struct drm_plane_helper_funcs {
       	...
      	int (*atomic_check)(struct drm_plane *plane,
      -			    struct drm_plane_state *plane_state);
      +			    struct drm_atomic_state *state);
      	...
      }
      
      @ plane_atomic_func @
      identifier helpers;
      identifier func;
      @@
      
      static const struct drm_plane_helper_funcs helpers = {
      	...,
       	.atomic_check = func,
      	...,
      };
      
      @@
      struct drm_plane_helper_funcs *FUNCS;
      identifier f;
      identifier dev;
      identifier plane, plane_state, state;
      @@
      
       f(struct drm_device *dev, struct drm_atomic_state *state)
       {
       	<+...
      -	FUNCS->atomic_check(plane, plane_state)
      +	FUNCS->atomic_check(plane, state)
       	...+>
       }
      
      @ ignores_new_state @
      identifier plane_atomic_func.func;
      identifier plane, new_plane_state;
      @@
      
       func(struct drm_plane *plane, struct drm_plane_state *new_plane_state)
       {
      	... when != new_plane_state
       }
      
      @ adds_new_state depends on plane_atomic_func && !ignores_new_state @
      identifier plane_atomic_func.func;
      identifier plane, new_plane_state;
      @@
      
       func(struct drm_plane *plane, struct drm_plane_state *new_plane_state)
       {
      +	struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state, plane);
       	...
       }
      
      @ depends on plane_atomic_func @
      identifier plane_atomic_func.func;
      identifier plane, new_plane_state;
      @@
      
       func(struct drm_plane *plane,
      -     struct drm_plane_state *new_plane_state
      +     struct drm_atomic_state *state
           )
       { ... }
      
      @ include depends on adds_new_state @
      @@
      
       #include <drm/drm_atomic.h>
      
      @ no_include depends on !include && adds_new_state @
      @@
      
      + #include <drm/drm_atomic.h>
        #include <drm/...>
      Reviewed-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Signed-off-by: NMaxime Ripard <maxime@cerno.tech>
      Acked-by: NThomas Zimmermann <tzimmermann@suse.de>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210219120032.260676-4-maxime@cerno.tech
      7c11b99a
    • M
      drm: Rename plane atomic_check state names · ba5c1649
      Maxime Ripard 提交于
      Most drivers call the argument to the plane atomic_check hook simply
      state, which is going to conflict with the global atomic state in a
      later rework. Let's rename it to new_plane_state (or new_state depending
      on the convention used in the driver).
      
      This was done using the coccinelle script below, and built tested:
      
      @ plane_atomic_func @
      identifier helpers;
      identifier func;
      @@
      
       static const struct drm_plane_helper_funcs helpers = {
       	.atomic_check = func,
       };
      
      @ has_old_state @
      identifier plane_atomic_func.func;
      identifier plane;
      expression e;
      symbol old_state;
      symbol state;
      @@
      
       func(struct drm_plane *plane, struct drm_plane_state *state)
       {
       	...
       	struct drm_plane_state *old_state = e;
       	...
       }
      
      @ depends on has_old_state @
      identifier plane_atomic_func.func;
      identifier plane;
      symbol old_state;
      @@
      
       func(struct drm_plane *plane,
      -	struct drm_plane_state *state
      +	struct drm_plane_state *new_state
           )
       {
       	<+...
      -	state
      +	new_state
      	...+>
       }
      
      @ has_state @
      identifier plane_atomic_func.func;
      identifier plane;
      symbol state;
      @@
      
       func(struct drm_plane *plane, struct drm_plane_state *state)
       {
       	...
       }
      
      @ depends on has_state @
      identifier plane_atomic_func.func;
      identifier plane;
      symbol old_state;
      @@
      
       func(struct drm_plane *plane,
      -	struct drm_plane_state *state
      +	struct drm_plane_state *new_plane_state
           )
       {
       	<+...
      -	state
      +	new_plane_state
      	...+>
       }
      Reviewed-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Signed-off-by: NMaxime Ripard <maxime@cerno.tech>
      Acked-by: NThomas Zimmermann <tzimmermann@suse.de>
      Link: https://patchwork.freedesktop.org/patch/msgid/20210219120032.260676-2-maxime@cerno.tech
      ba5c1649
  2. 15 12月, 2020 2 次提交
  3. 10 11月, 2020 1 次提交
  4. 23 8月, 2019 1 次提交
  5. 19 6月, 2019 1 次提交
  6. 28 3月, 2018 1 次提交
  7. 01 3月, 2018 2 次提交
  8. 19 12月, 2017 1 次提交
  9. 08 8月, 2017 1 次提交
    • D
      drm: Nuke drm_atomic_helper_plane_set_property · e90271bc
      Daniel Vetter 提交于
      It's dead code, the core handles all this directly now. This also
      allows us to unexport drm_atomic_plane_set_property.
      Signed-off-by: NDaniel Vetter <daniel.vetter@intel.com>
      Cc: Liviu Dudau <liviu.dudau@arm.com>
      Cc: Brian Starkey <brian.starkey@arm.com>
      Cc: Mali DP Maintainers <malidp@foss.arm.com>
      Cc: Boris Brezillon <boris.brezillon@free-electrons.com>
      Cc: Daniel Vetter <daniel.vetter@intel.com>
      Cc: Jani Nikula <jani.nikula@linux.intel.com>
      Cc: Sean Paul <seanpaul@chromium.org>
      Cc: David Airlie <airlied@linux.ie>
      Cc: Inki Dae <inki.dae@samsung.com>
      Cc: Joonyoung Shim <jy0922.shim@samsung.com>
      Cc: Seung-Woo Kim <sw0312.kim@samsung.com>
      Cc: Kyungmin Park <kyungmin.park@samsung.com>
      Cc: Kukjin Kim <kgene@kernel.org>
      Cc: Krzysztof Kozlowski <krzk@kernel.org>
      Cc: Ben Skeggs <bskeggs@redhat.com>
      Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
      Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
      Cc: Benjamin Gaignard <benjamin.gaignard@linaro.org>
      Cc: Vincent Abriou <vincent.abriou@st.com>
      Cc: Yannick Fertre <yannick.fertre@st.com>
      Cc: Philippe Cornu <philippe.cornu@st.com>
      Cc: Jyri Sarha <jsarha@ti.com>
      Cc: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
      Cc: Rongrong Zou <zourongrong@gmail.com>
      Cc: Shawn Guo <shawn.guo@linaro.org>
      Cc: Alexey Brodkin <abrodkin@synopsys.com>
      Cc: Eric Engestrom <eric@engestrom.ch>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Rob Clark <robdclark@gmail.com>
      Cc: Archit Taneja <architt@codeaurora.org>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: linux-samsung-soc@vger.kernel.org
      Cc: intel-gfx@lists.freedesktop.org
      Cc: nouveau@lists.freedesktop.org
      Cc: linux-renesas-soc@vger.kernel.org
      Cc: Thomas Hellstrom <thellstrom@vmware.com>
      Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20170725080122.20548-6-daniel.vetter@ffwll.chReviewed-by: NArchit Taneja <architt@codeaurora.org>
      Acked-by: NPhilippe Cornu <philippe.cornu@st.com>
      Tested-by: NPhilippe Cornu <philippe.cornu@st.com>
      Acked-by: NLiviu Dudau <Liviu.Dudau@arm.com>
      Acked-by: NVincent Abriou <vincent.abriou@st.com>
      Reviewed-by: NMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Reviewed-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      e90271bc
  10. 02 8月, 2017 1 次提交
    • B
      drm: Plumb modifiers through plane init · e6fc3b68
      Ben Widawsky 提交于
      This is the plumbing for supporting fb modifiers on planes. Modifiers
      have already been introduced to some extent, but this series will extend
      this to allow querying modifiers per plane. Based on this, the client to
      enable optimal modifications for framebuffers.
      
      This patch simply allows the DRM drivers to initialize their list of
      supported modifiers upon initializing the plane.
      
      v2: A minor addition from Daniel
      
      v3:
      * Updated commit message
      * s/INVALID/DRM_FORMAT_MOD_INVALID (Liviu)
      * Remove some excess newlines (Liviu)
      * Update comment for > 64 modifiers (Liviu)
      
      v4: Minor comment adjustments (Liviu)
      
      v5: Some new platforms added due to rebase
      
      v6: Add some missed plane inits (or maybe they're new - who knows at
      this point) (Daniel)
      Signed-off-by: NBen Widawsky <ben@bwidawsk.net>
      Reviewed-by: Daniel Stone <daniels@collabora.com> (v2)
      Reviewed-by: NLiviu Dudau <Liviu.Dudau@arm.com>
      Signed-off-by: NDaniel Stone <daniels@collabora.com>
      e6fc3b68
  11. 02 6月, 2017 9 次提交
  12. 22 5月, 2017 1 次提交
  13. 03 4月, 2017 5 次提交
    • J
      drm/omap: Major omap_modeset_init() cleanup · e8e13b15
      Jyri Sarha 提交于
      Cleanup overly complex omap_modeset_init(). The function is trying to
      support many unusual configuration, that have never been tested and
      are not supported by other parts of the dirver.
      
      After cleanup the init function creates exactly one connector,
      encoder, crtc, and primary plane per each connected dss-device. Each
      connector->encoder->crtc chain is expected to be separate and each
      crtc is connect to a single dss-channel. If the configuration does not
      match the expectations or exceeds the available resources, the
      configuration is rejected.
      Signed-off-by: NJyri Sarha <jsarha@ti.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      e8e13b15
    • J
      drm/omap: Remove the obsolete #define omap_plane _omap_plane hack · 694c99cf
      Jyri Sarha 提交于
      Remove the obsolete "#define omap_plane _omap_plane" hack and other
      related hacks to get around the enum omap_plane colliding with struct
      omap_plane.
      Signed-off-by: NJyri Sarha <jsarha@ti.com>
      Reviewed-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      694c99cf
    • T
      drm/omap: fix replication logic · be2d68c6
      Tomi Valkeinen 提交于
      DSS uses "replication logic" to convert color components from smaller
      bit widths to bigger bit widths. Without replication logic, the color
      component would be shifted and the least significant bits would be left
      at 0, whereas with replication logic, the least significat bits will be
      filled with the most significant bit.
      
      For some reason omapdrm leaves replication logic always to off, which,
      in the most common case, means that showing 16-bit RGB colors on 24-bit
      display gives a bit darker colors than expected.
      
      The reset value of the replication logic bit is enabled, and it should
      always be set, as there's no practical reason to disable it. This patch
      removes the option to disable it from omapdrm, and always sets it to
      enabled in dispc.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      Reviewed-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      be2d68c6
    • T
      drm/omap: use dispc_ops · 9f759225
      Tomi Valkeinen 提交于
      Change omapdrm to get dispc_ops and use that to call the dispc functions
      instead or direct function calls.
      
      The change is very straightforward.
      
      The only problem was in omap_crtc_init() which calls pipe2vbl(crtc), and
      at that point of time the crtc->dev link, which is used to get the
      dispc_ops, has not been set up yet. This patch makes omap_crtc_init()
      skip the call to pipe2vbl() and instead calls
      dispc_ops->mgr_get_vsync_irq() directly.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      9f759225
    • T
      drm/omap: move dispc related dss-feat funcs to dispc · c283400a
      Tomi Valkeinen 提交于
      omapdrm still uses a few non-dispc functions: dss_feat_get_num_mgrs(),
      dss_feat_get_num_ovls() and  dss_feat_get_supported_color_modes(). We
      want to provide omapdrm a single dispc_ops function pointer struct so
      that omapdrm will use either the current omapdss or the new omapdss6
      driver depending on the platform.
      
      Those three functions are really dispc functions, but are located in the
      dss_features.c for legacy reasons.
      
      This patch adds similar functionss to the dispc, and changes omapdrm to
      use those new functions. Underneath the functions still call the
      functions from dss_feature.c.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      c283400a
  14. 19 12月, 2016 1 次提交
  15. 08 12月, 2016 1 次提交
    • T
      drm/omap: fix primary-plane's possible_crtcs · e43f2c33
      Tomi Valkeinen 提交于
      We set the possible_crtc for all planes to "(1 << priv->num_crtcs) - 1",
      which is fine as the HW planes can be used fro all crtcs. However, when
      we're doing that, we are still incrementing 'num_crtcs', and we'll end
      up with bad possible_crtcs, preventing the use of the primary planes.
      
      This patch passes a possible_crtcs mask to plane init function so that
      we get correct possible_crtc.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      e43f2c33
  16. 02 11月, 2016 3 次提交
  17. 22 10月, 2016 3 次提交
  18. 19 8月, 2016 1 次提交
  19. 09 8月, 2016 1 次提交
  20. 17 5月, 2016 1 次提交
  21. 03 3月, 2016 1 次提交