Peter Rosin
e2b9dd304a
drm/atomic-helper: update lut props directly in ..._legacy_gamma_set
...
Do not waste cycles looking up the property id when we have the
actual property already.
Signed-off-by: Peter Rosin <peda@axentia.se >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20170713162538.22788-3-peda@axentia.se
2017-07-14 15:53:06 +02:00
Peter Rosin
5f057ffd6d
drm: rename, adjust and export drm_atomic_replace_property_blob
...
The function has little to do with atomic, it's just where it has so
far been needed. So, rename it to drm_property_replace_blob, move it
to drm_property.c and export it.
Change the semantics to return whether the blob was replaced instead
of using an extra argument for that.
Signed-off-by: Peter Rosin <peda@axentia.se >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20170713162538.22788-2-peda@axentia.se
2017-07-14 15:53:06 +02:00
Ville Syrjälä
e38e128950
drm/dp/mst: Use memchr_inv() instead of memcmp() against a zeroed array
...
We have memch_inv(), so no need to memcmp() against a zeroed temp array.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170712155254.26455-1-ville.syrjala@linux.intel.com
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
2017-07-13 19:28:43 +03:00
Ville Syrjälä
a4370c7774
drm/atomic: Make private objs proper objects
...
Make the atomic private object stuff less special by introducing proper
base classes for the object and its state. Drivers can embed these in
their own appropriate objects, after which these things will work
exactly like the plane/crtc/connector states during atomic operations.
v2: Reorder to not depend on drm_dynarray (Daniel)
Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com >
Cc: Daniel Vetter <daniel.vetter@ffwll.ch >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch > #v1
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170712155102.26276-3-ville.syrjala@linux.intel.com
2017-07-13 19:28:43 +03:00
Ville Syrjälä
178e32c224
drm/atomic: Remove pointless private object NULL state check
...
We will never add private objects with a NULL state into the atomic
state, hence checking for that is pointless.
Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170712155102.26276-2-ville.syrjala@linux.intel.com
2017-07-13 19:28:43 +03:00
Ville Syrjälä
56a91c4932
drm/dp/mst: Handle errors from drm_atomic_get_private_obj_state() correctly
...
On failure drm_atomic_get_private_obj_state() returns and error
pointer instead of NULL. Adjust the checks in the callers to match.
Cc: stable@vger.kernel.org
Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com >
Cc: Harry Wentland <harry.wentland@amd.com >
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Fixes: edb1ed1ab7 ("drm/dp: Add DP MST helpers to atomically find and release vcpi slots")
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170712155102.26276-1-ville.syrjala@linux.intel.com
Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com >
2017-07-13 19:28:43 +03:00
Maarten Lankhorst
e27986853a
drm/mediatek: Convert to new iterator macros
...
for_each_obj_in_state is about to be removed, so use the new atomic
iterator macros.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Cc: CK Hu <ck.hu@mediatek.com >
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Cc: Matthias Brugger <matthias.bgg@gmail.com >
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-mediatek@lists.infradead.org
Link: http://patchwork.freedesktop.org/patch/msgid/20170712081344.25495-14-maarten.lankhorst@linux.intel.com
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Acked-by: Philipp Zabel <p.zabel@pengutronix.de >
2017-07-13 09:56:00 +02:00
Maarten Lankhorst
30ea752146
drm/imx: Use atomic iterator macros
...
for_each_obj_in_state is about to be removed, so use the new atomic
iterator macros.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Link: http://patchwork.freedesktop.org/patch/msgid/20170712081344.25495-13-maarten.lankhorst@linux.intel.com
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de >
Tested-by: Philipp Zabel <p.zabel@pengutronix.de >
2017-07-13 09:54:48 +02:00
Maarten Lankhorst
a8e3fb5508
drm/mali: Use new atomic iterator macros
...
for_each_obj_in_state is about to be removed, so use the new iterator
macros.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Cc: Liviu Dudau <liviu.dudau@arm.com >
Cc: Brian Starkey <brian.starkey@arm.com >
Cc: Mali DP Maintainers <malidp@foss.arm.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170712081344.25495-12-maarten.lankhorst@linux.intel.com
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Acked-by: Liviu Dudau <liviu.dudau@arm.com >
2017-07-13 09:54:12 +02:00
Maarten Lankhorst
e741f2b182
drm/rockchip: Use for_each_oldnew_plane_in_state in vop_crtc_atomic_flush
...
for_each_obj_in_state is about to be removed, so use the new atomic
iterator macros.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Cc: Mark Yao <mark.yao@rock-chips.com >
Cc: Heiko Stuebner <heiko@sntech.de >
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-rockchip@lists.infradead.org
Link: http://patchwork.freedesktop.org/patch/msgid/20170712081344.25495-10-maarten.lankhorst@linux.intel.com
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Acked-by: Mark Yao <mark.yao@rock-chips.com >
2017-07-13 09:53:43 +02:00
Maarten Lankhorst
d57da16f57
drm/atmel-hlcdec: Use for_each_new_connector_in_state
...
for_each_obj_in_state is about to be removed, so use the new iterator
macros.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Cc: Boris Brezillon <boris.brezillon@free-electrons.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170712081344.25495-9-maarten.lankhorst@linux.intel.com
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com >
2017-07-13 09:52:09 +02:00
Maarten Lankhorst
fe5f6b1fa0
drm/i915: Use correct iterator macro
...
for_each_connector_in_state will be removed, so use the right state
here.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Cc: Daniel Vetter <daniel.vetter@intel.com >
Cc: Jani Nikula <jani.nikula@linux.intel.com >
Cc: intel-gfx@lists.freedesktop.org
Link: http://patchwork.freedesktop.org/patch/msgid/20170712081344.25495-7-maarten.lankhorst@linux.intel.com
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
2017-07-13 09:51:01 +02:00
Maarten Lankhorst
bdc362f631
drm/vmwgfx: Make check_modeset() use the new atomic iterator macros.
...
I don't think the checking of resources in this function is very
atomic-like, but it should definitely not use a macro that's about
to be removed.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Cc: VMware Graphics <linux-graphics-maintainer@vmware.com >
Cc: Sinclair Yeh <syeh@vmware.com >
Cc: Thomas Hellstrom <thellstrom@vmware.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170712081344.25495-6-maarten.lankhorst@linux.intel.com
Reviewed-by: Sinclair Yeh <syeh@vmware.com >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
[mlankhorst: Make function static (danvet)]
2017-07-13 09:50:39 +02:00
Maarten Lankhorst
2d705c0b36
drm/atomic: Use new iterator macros in drm_atomic_helper_wait_for_flip_done
...
for_each_obj_in_state is about to be removed, so use the correct new
iterator macro.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.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 >
Link: http://patchwork.freedesktop.org/patch/msgid/20170712081344.25495-5-maarten.lankhorst@linux.intel.com
[mlankhorst: Based on danvet's feedback, only apply first hunk and rename crtc_state variable to unused]
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
2017-07-13 09:46:37 +02:00
Maarten Lankhorst
dfb8bb3bd4
drm/atomic: Use the new helpers in drm_atomic_helper_disable_all()
...
for_each_obj_in_state will be removed, so don't use it here.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.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 >
Link: http://patchwork.freedesktop.org/patch/msgid/20170712081344.25495-4-maarten.lankhorst@linux.intel.com
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
2017-07-13 09:44:59 +02:00
Maarten Lankhorst
0c3eb12324
drm/atomic: Use the correct iterator macro in atomic_remove_fb
...
for_each_obj_in_state will be removed, so use the new state here.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.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 >
Link: http://patchwork.freedesktop.org/patch/msgid/20170712081344.25495-3-maarten.lankhorst@linux.intel.com
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
2017-07-13 09:44:58 +02:00
Maarten Lankhorst
765831dc27
drm/simple-kms-helper: Fix the check for the mismatch between plane and CRTC enabled.
...
You can enable the CRTC and without adding the plane to the state and
it will succeed. This should be prevented in the crtc check instead of
the plane check, because the plane check may never run for atomic
enable, but the crtc check always will.
This is based on a similar check in vmwgfx.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.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 >
Link: http://patchwork.freedesktop.org/patch/msgid/20170712081344.25495-2-maarten.lankhorst@linux.intel.com
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
2017-07-13 09:44:51 +02:00
Alexandru Moise
371c2279aa
drm: inhibit drm drivers register to uninitialized drm core
...
If the DRM core fails to init for whatever reason, ensure that
no driver ever calls drm_dev_register().
This is best done at drm_dev_init() as it covers drivers that call
drm_dev_alloc() as well as drivers that prefer to embed struct
drm_device into their own device struct and call drm_dev_init()
themselves.
In my case I had so many dynamic device majors used that the major
number for DRM (226) was stolen, causing DRM core init to fail after
failing to register a chrdev, and ultimately calling debugfs_remove()
on drm_debugfs_root in drm_core_exit().
After drm core failed to init, VGEM was still calling drm_dev_register(),
ultimately leading to drm_debugfs_init(), with drm_debugfs_root passed
as the root for the new debugfs dir at debugfs_create_dir().
This led to a kernel panic once we were either derefencing root->d_inode
while it was NULL or calling root->d_inode->i_op->lookup() while it was
NULL in debugfs at inode_lock() or lookup_*().
Signed-off-by: Alexandru Moise <00moses.alexander00@gmail.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20170708214352.GA27205@gmail.com
2017-07-11 12:03:11 +02:00
Inki Dae
f74c527591
drm/bridge: ti-tfp410: clean up drm_bridge_add call
...
This patch removes unnecessary checking of return value.
Signed-off-by: Inki Dae <inki.dae@samsung.com >
Signed-off-by: Archit Taneja <architt@codeaurora.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1499071350-25168-12-git-send-email-inki.dae@samsung.com
2017-07-06 14:16:46 +05:30
Inki Dae
dc01732eee
drm/bridge: tc358767: clean up drm_bridge_add call
...
This patch removes unnecessary checking of return value.
Signed-off-by: Inki Dae <inki.dae@samsung.com >
Signed-off-by: Archit Taneja <architt@codeaurora.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1499071350-25168-11-git-send-email-inki.dae@samsung.com
2017-07-06 14:16:37 +05:30
Inki Dae
b678682e84
drm/bridge: synopsys: dw-hdmi: clean up drm_bridge_add call
...
This patch removes unnecessary checking of return value.
Signed-off-by: Inki Dae <inki.dae@samsung.com >
Signed-off-by: Archit Taneja <architt@codeaurora.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1499071350-25168-10-git-send-email-inki.dae@samsung.com
2017-07-06 14:16:32 +05:30
Inki Dae
d341a640db
drm/bridge: sii902x: clean up drm_bridge_add call
...
This patch removes unnecessary checking of return value.
Signed-off-by: Inki Dae <inki.dae@samsung.com >
Signed-off-by: Archit Taneja <architt@codeaurora.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1499071350-25168-9-git-send-email-inki.dae@samsung.com
2017-07-06 14:16:29 +05:30
Inki Dae
d0ceb3ec4a
drm/bridge: ps8622: clean up drm_bridge_add call
...
This patch removes unnecessary checking of return value.
Signed-off-by: Inki Dae <inki.dae@samsung.com >
Signed-off-by: Archit Taneja <architt@codeaurora.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1499071350-25168-8-git-send-email-inki.dae@samsung.com
2017-07-06 14:16:27 +05:30
Inki Dae
3a45d25dcf
drm/bridge: panel: clean up drm_bridge_add call
...
This patch removes unnecessary checking of return value.
Signed-off-by: Inki Dae <inki.dae@samsung.com >
Signed-off-by: Archit Taneja <architt@codeaurora.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1499071350-25168-7-git-send-email-inki.dae@samsung.com
2017-07-06 14:16:24 +05:30
Inki Dae
830dcb4451
drm/bridge: nxp-ptn3460: clean up drm_bridge_add call
...
This patch removes unnecessary checking of return value.
Signed-off-by: Inki Dae <inki.dae@samsung.com >
Signed-off-by: Archit Taneja <architt@codeaurora.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1499071350-25168-6-git-send-email-inki.dae@samsung.com
2017-07-06 14:16:19 +05:30
Inki Dae
47e3427854
drm/bridge: vga-dac: clean up drm_bridge_add call
...
This patch removes unnecessary checking of return value.
Signed-off-by: Inki Dae <inki.dae@samsung.com >
Signed-off-by: Archit Taneja <architt@codeaurora.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1499071350-25168-5-git-send-email-inki.dae@samsung.com
2017-07-06 14:16:15 +05:30
Inki Dae
dd2adf743b
drm/bridge: analogix-anx78xx: clean up drm_bridge_add call
...
This patch removes unnecessary checking of return value.
Signed-off-by: Inki Dae <inki.dae@samsung.com >
Signed-off-by: Archit Taneja <architt@codeaurora.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1499071350-25168-4-git-send-email-inki.dae@samsung.com
2017-07-06 14:16:06 +05:30
Inki Dae
9a120848d5
drm/bridge: adv7511: clean up drm_bridge_add call
...
This patch removes unnecessary checking of return value.
Signed-off-by: Inki Dae <inki.dae@samsung.com >
Signed-off-by: Archit Taneja <architt@codeaurora.org >
Link: http://patchwork.freedesktop.org/patch/msgid/1499071350-25168-3-git-send-email-inki.dae@samsung.com
2017-07-06 14:15:55 +05:30
Peter Rosin
08c992c55d
drm/fb-helper: remove drm_fb_helper_save_lut_atomic
...
drm_fb_helper_save_lut_atomic is redundant since the .gamma_store is
now always kept up to date by drm_fb_helper_setcmap.
Signed-off-by: Peter Rosin <peda@axentia.se >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/1499164632-5582-4-git-send-email-peda@axentia.se
2017-07-06 10:36:22 +02:00
Peter Rosin
a3562a0e47
drm/fb-helper: keep the .gamma_store updated in drm_fb_helper_setcmap
...
I think the gamma_store can end up invalid on error. But the way I read
it, that can happen in drm_mode_gamma_set_ioctl as well, so why should
this pesky legacy fbdev stuff be any better?
Signed-off-by: Peter Rosin <peda@axentia.se >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/1499164632-5582-3-git-send-email-peda@axentia.se
2017-07-06 10:36:17 +02:00
Peter Rosin
b8e2b0199c
drm/fb-helper: factor out pseudo-palette
...
The pseudo-palette has nothing to do with the crtc, so move it
out of the crtc loop and update the palette once, then break out
early.
Signed-off-by: Peter Rosin <peda@axenita.se >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/1499164632-5582-2-git-send-email-peda@axentia.se
2017-07-06 10:36:11 +02:00
Daniel Vetter
6b7dc6e9f8
drm/fb-helper: Split dpms handling into legacy and atomic paths
...
Like with panning and modesetting, and like with those, stick with
simple drm_modeset_locking_all for the legacy path, and the full
atomic dance for atomic drivers.
This means a bit more boilerplate since setting up the atomic state
machinery is rather verbose, but then this is shared code for 30+
drivers or so, so meh.
After this patch there's only the LUT/cmap path which is still using
drm_modeset_lock_all for an atomic driver. But Peter is already
locking into reworking that, so I'll leave that code as-is for now.
v2: Squash in patches from Maarten to unify all the various atomic
paths into just one atomic update function for fbdev overall. On top
do one s/restore_fbdev_mode/restore_fbdev_mode_atomic/ so that we have
all-atomic callchains after the first check.
Cc: Peter Rosin <peda@axentia.se >
Cc: John Stultz <john.stultz@linaro.org >
Cc: Thierry Reding <treding@nvidia.com >
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@intel.com >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170704151833.17304-10-daniel.vetter@ffwll.ch
2017-07-06 10:02:12 +02:00
Daniel Vetter
e13a058310
drm/fb-helper: Stop using mode_config.mutex for internals
...
Those are now all protected using fb_helper->lock.
v2: We still need to hold mode_config.mutex right around calling
connector->fill_modes.
v3: I forgot to hold mode_config.mutex while looking at
connector->status and the mode list. Also, we need to patch up the
i915 ->initial_config callback to grab the locks it needs to inspect
the modeset state recovered from the fw.
v4: Don't reorder the probe too much (Ville).
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com >
Cc: John Stultz <john.stultz@linaro.org >
Cc: Thierry Reding <treding@nvidia.com >
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@intel.com >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170705045629.31265-1-daniel.vetter@ffwll.ch
2017-07-06 10:02:01 +02:00
Daniel Vetter
1d0c641091
drm/fb-helper: Push locking into restore_fbdev_mode_atomic|legacy
...
Same game as with the panning function, use drm_modeset_lock_all for
legacy paths, and a proper acquire ctx w/w mutex dance for atomic.
Cc: John Stultz <john.stultz@linaro.org >
Cc: Thierry Reding <treding@nvidia.com >
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@intel.com >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170704151833.17304-8-daniel.vetter@ffwll.ch
2017-07-06 10:01:47 +02:00
Daniel Vetter
5c2e3448d1
drm/fb-helper: Push locking into pan_display_atomic|legacy
...
For the legacy path we'll keep drm_modeset_lock_all, for the atomic
one we drop the use of the magic implicit context and wire it up
properly.
Cc: John Stultz <john.stultz@linaro.org >
Cc: Thierry Reding <treding@nvidia.com >
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@intel.com >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170704151833.17304-7-daniel.vetter@ffwll.ch
2017-07-06 10:01:35 +02:00
Daniel Vetter
235d3e4fa1
drm/fb-helper: Drop locking from the vsync wait ioctl code
...
Like with the drm-native vblank wait ioctl we can entirely rely on the
spinlocks in drm_vblank.c, no need at all to take expensive mutexes.
The only reason we had to take mode_config.mutex was to protect the
fbdev helper's data-structures, but that's now done by
fb_helper->lock.
Cc: John Stultz <john.stultz@linaro.org >
Cc: Thierry Reding <treding@nvidia.com >
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@intel.com >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170704151833.17304-6-daniel.vetter@ffwll.ch
2017-07-06 10:01:19 +02:00
Daniel Vetter
bdac4a052a
drm/fb-helper: Push locking in fb_is_bound
...
That function only needs to take the individual crtc locks, not all
the kms locks. Push down the locking and then minimize it.
Cc: John Stultz <john.stultz@linaro.org >
Cc: Thierry Reding <treding@nvidia.com >
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@intel.com >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170704151833.17304-5-daniel.vetter@ffwll.ch
2017-07-06 10:00:55 +02:00
Thierry Reding
e9827d8ea2
drm/fb-helper: Add top-level lock
...
Introduce a new top-level lock for the FB helper code. This will allow
better locking granularity and avoid the need to abuse modeset locking
for this purpose instead.
This patch just adds the new lock everywhere we currently grab
mode_config->mutex (explicitly, or through drm_modeset_lock_all).
Follow-up patches will push the kms locking down into only the places
that need it.
v2:
- use lockdep_assert_held
- use drm_fb_helper_for_each_connector where possible
- use the new top-level lock consistently, i.e. in all the places
we're currently acquiring mode_config.mutex.
- small polish to the kerneldoc
Tested-by: John Stultz <john.stultz@linaro.org >
Signed-off-by: Thierry Reding <treding@nvidia.com > (v1)
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@intel.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20170704151833.17304-4-daniel.vetter@ffwll.ch
2017-07-06 10:00:42 +02:00
Daniel Vetter
666b7cdc69
drm/i915: Drop FBDEV #ifdev in mst code
...
Since
commit a03fdcb186
Author: Archit Taneja <architt@codeaurora.org >
Date: Wed Aug 5 12:28:57 2015 +0530
drm: Add top level Kconfig option for DRM fbdev emulation
this is properly handled using dummy functions. This essentially
undoes
commit 7296c849bf
Author: Chris Wilson <chris@chris-wilson.co.uk >
Date: Tue Jul 22 20:10:28 2014 +1000
drm/i915: fix build without fbde
v2: We also need to drop the #ifdef from headers. Seems like a small
price to pay for slightly cleaner code.
Cc: Chris Wilson <chris@chris-wilson.co.uk >
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@intel.com >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170704151833.17304-3-daniel.vetter@ffwll.ch
2017-07-06 10:00:33 +02:00
Thierry Reding
af2405af07
drm/fb-helper: Push down modeset lock into FB helpers
...
Move the modeset locking from drivers into FB helpers.
v2: Also handle intel_connector_add_to_fbdev.
v3: Prevent race in intel_dp_mst with ->detect (Maarten)
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Cc: Alex Deucher <alexander.deucher@amd.com >
Cc: Christian König <christian.koenig@amd.com >
Tested-by: John Stultz <john.stultz@linaro.org >
Signed-off-by: Thierry Reding <treding@nvidia.com > (v1)
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@intel.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20170704151833.17304-2-daniel.vetter@ffwll.ch
2017-07-06 10:00:22 +02:00
Chris Wilson
e6090cc9be
drm: Remove pending_read_domains and pending_write_domain
...
The last user of these (i915.ko) no longer does. We can slim down the
core GEM object by removing the unused 8 bytes.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20170705154900.28697-1-chris@chris-wilson.co.uk
2017-07-05 22:18:07 +02:00
Daniel Vetter
8c3a8181a4
drm/atomic-helper: Realign function parameters
...
Too jarring.
Fixes: f869a6ecf2 ("drm/atomic: Add target_vblank support in atomic helpers (v2)")
Cc: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com >
Cc: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Reviewed-by: Harry Wentland <harry.wentland@amd.com >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170627145936.18983-14-daniel.vetter@ffwll.ch
2017-07-04 17:16:00 +02:00
Maarten Lankhorst
7114d2e22f
drm/fb-helper: Remove drm_mode_config_fb.
...
Remove drm_mode_config_fb, I don't see the point of it.
To make it clear that it's ok to use plane->fb directly,
move up drm_drv_uses_atomic_modeset so the code is skipped for atomic
drivers that require plane_state->fb.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com >
Link: http://patchwork.freedesktop.org/patch/msgid/20170703115106.18783-1-maarten.lankhorst@linux.intel.com
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
2017-07-04 09:49:15 +02:00
Mark Cave-Ayland
931e8c661a
drm/bochs: switch fb_ops over to use drm_fb_helper_cfb helpers
...
The current drm_fb_helper_sys helpers referenced in fb_ops assume that the
video memory is in system RAM. This is not the case for sparc which uses direct
physical memory accesses for IO memory and causes the bochs_drm module to panic
immediately upon startup as it tries to initialise the framebuffer.
Switching fb_ops over to use the drm_fb_helper_cfb helpers ensures that the
correct accesses are used on sparc, fixing the panic and allowing the
bochs_drm module to function under qemu-system-sparc64.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk >
Link: http://patchwork.freedesktop.org/patch/msgid/1499032363-8290-1-git-send-email-mark.cave-ayland@ilande.co.uk
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2017-07-03 10:31:14 +02:00
Arvind Yadav
9e2033a6bb
drm: qxl: constify ttm_place structures.
...
ttm_place are not supposed to change at runtime. All functions
working with ttm_place provided by <drm/ttm/ttm_placement.h> work
with const ttm_place. So mark the non-const structs as const.
File size before:
text data bss dec hex filename
3485 184 264 3933 f5d drivers/gpu/drm/qxl/qxl_ttm.o
File size After adding 'const':
text data bss dec hex filename
3501 152 264 3917 f4d drivers/gpu/drm/qxl/qxl_ttm.o
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com >
Link: http://patchwork.freedesktop.org/patch/msgid/a4f21d3bd2497129f084b8055ecf27f0d3ff1bba.1499013516.git.arvind.yadav.cs@gmail.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2017-07-03 10:31:14 +02:00
Arvind Yadav
05ccf211ef
drm: ttm: virtio-gpu: dma-buf: Constify ttm_place structures.
...
ttm_place are not supposed to change at runtime. All functions
working with ttm_place provided by <drm/ttm/ttm_placement.h> work
with const ttm_place. So mark the non-const structs as const.
File size before:
text data bss dec hex filename
2315 184 0 2499 9c3 drivers/gpu/drm/virtio/virtgpu_ttm.o
File size After adding 'const':
text data bss dec hex filename
2347 152 0 2499 9c3 drivers/gpu/drm/virtio/virtgpu_ttm.o
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com >
Link: http://patchwork.freedesktop.org/patch/msgid/25a189402a516a0142d9a4412da0a597c660a96a.1498981093.git.arvind.yadav.cs@gmail.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
2017-07-03 10:31:14 +02:00
Arvind Yadav
7b4e1eaa9d
drm/udl: dma-buf: Constify dma_buf_ops structures.
...
dma_buf_ops are not supposed to change at runtime. All functions
working with dma_buf_ops provided by <linux/dma-buf.h> work with
const dma_buf_ops. So mark the non-const structs as const.
File size before:
text data bss dec hex filename
2002 112 0 2114 842 drivers/gpu/drm/udl/udl_dmabuf.o
File size After adding 'const':
text data bss dec hex filename
2114 0 0 2114 842 drivers/gpu/drm/udl/udl_dmabuf.o
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/cb4dfac90e85e2270779331f8cb10b635042bad7.1498912415.git.arvind.yadav.cs@gmail.com
2017-07-03 10:07:47 +02:00
Arvind Yadav
8a63ca58f8
drm: armada: Constify drm_prop_enum_list structures.
...
drm_prop_enum_lists are not supposed to change at runtime. All functions
working with drm_prop_enum_list provided by <drm/drm_property.h> work
with
const drm_prop_enum_list. So mark the non-const structs as const.
File size before:
text data bss dec hex filename
3594 176 0 3770 eba drivers/gpu/drm/armada/armada_overlay.o
File size After adding 'const':
text data bss dec hex filename
3722 48 0 3770 eba drivers/gpu/drm/armada/armada_overlay.o
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/dbeb176765bda8eaa9efdaa2dcd14c7bbae39cfa.1498905467.git.arvind.yadav.cs@gmail.com
2017-07-03 10:07:43 +02:00
Arvind Yadav
aaaf2f1299
drm: armada: constify drm_prop_enum_list structures.
...
drm_prop_enum_lists are not supposed to change at runtime. All functions
working with drm_prop_enum_list provided by <drm/drm_property.h> work
with
const drm_prop_enum_list. So mark the non-const structs as const.
File size before:
text data bss dec hex filename
9629 744 0 10373 2885 drivers/gpu/drm/armada/armada_crtc.o
File size After adding 'const':
text data bss dec hex filename
9757 616 0 10373 2885 drivers/gpu/drm/armada/armada_crtc.o
Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/d2344c4dc40238cfe48fa6d917767df0f053150a.1498902844.git.arvind.yadav.cs@gmail.com
2017-07-03 10:07:38 +02:00
Gustavo Padovan
fef9df8b59
drm/atomic: initial support for asynchronous plane update
...
In some cases, like cursor updates, it is interesting to update the
plane in an asynchronous fashion to avoid big delays. The current queued
update could be still waiting for a fence to signal and thus block any
subsequent update until its scan out. In cases like this if we update the
cursor synchronously through the atomic API it will cause significant
delays that would even be noticed by the final user.
This patch creates a fast path to jump ahead the current queued state and
do single planes updates without going through all atomic steps in
drm_atomic_helper_commit(). We take this path for legacy cursor updates.
For now only single plane updates are supported, but we plan to support
multiple planes updates and async PageFlips through this interface as well
in the near future.
v6: - move check code to drm_atomic_helper.c (Daniel Vetter)
v5:
- improve comments (Eric Anholt)
v4:
- fix state->crtc NULL check (Archit Taneja)
v3:
- fix iteration on the wrong crtc state
- put back code to forbid updates if there is a queued update for
the same plane (Ville Syrjälä)
- move size checks back to drivers (Ville Syrjälä)
- move ASYNC_UPDATE flag addition to its own patch (Ville Syrjälä)
v2:
- allow updates even if there is a queued update for the same
plane.
- fixes on the documentation (Emil Velikov)
- unconditionally call ->atomic_async_update (Emil Velikov)
- check for ->atomic_async_update earlier (Daniel Vetter)
- make ->atomic_async_check() the last step (Daniel Vetter)
- add ASYNC_UPDATE flag (Eric Anholt)
- update state in core after ->atomic_async_update (Eric Anholt)
- update docs (Eric Anholt)
Cc: Daniel Vetter <daniel.vetter@intel.com >
Cc: Rob Clark <robdclark@gmail.com >
Cc: Eric Anholt <eric@anholt.net >
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.com >
Reviewed-by: Archit Taneja <architt@codeaurora.org > (v5)
Acked-by: Eric Anholt <eric@anholt.net > (v5)
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: http://patchwork.freedesktop.org/patch/msgid/20170630180322.29007-2-gustavo@padovan.org
2017-07-03 10:04:44 +02:00