Boris Brezillon
2f040d2708
drm/panfrost: Fix a double-free error
...
drm_gem_shmem_create_with_handle() returns a GEM object and attach a
handle to it. When the user closes the DRM FD, the core releases all
GEM handles along with their backing GEM objs, which can lead to a
double-free issue if panfrost_ioctl_create_bo() failed and went
through the err_free path where drm_gem_object_put_unlocked() is
called without deleting the associate handle.
Replace this drm_gem_object_put_unlocked() call by a
drm_gem_handle_delete() one to fix that.
Fixes: f3ba91228e
("drm/panfrost: Add initial panfrost driver")
Cc: <stable@vger.kernel.org >
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com >
Signed-off-by: Rob Herring <robh@kernel.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20190627172414.27231-1-boris.brezillon@collabora.com
2019-06-28 16:45:51 -06:00
Steven Price
583bbf4613
drm/panfrost: Use drm_gem_map_offset()
...
panfrost_ioctl_mmap_bo() contains a reimplementation of
drm_gem_map_offset() but with a bug - it allows mapping imported
objects (without going through the exporter). Fix this by switching to
use the newly renamed drm_gem_map_offset() function instead which has
the bonus of simplifying the code.
Signed-off-by: Steven Price <steven.price@arm.com >
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
Signed-off-by: Rob Herring <robh@kernel.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20190627155318.38053-3-steven.price@arm.com
2019-06-28 15:01:52 -06:00
Steven Price
220df83a53
drm/gem: Rename drm_gem_dumb_map_offset() to drm_gem_map_offset()
...
drm_gem_dumb_map_offset() is a useful helper for non-dumb clients, so
rename it to remove the _dumb and add a comment that it can be used by
shmem clients.
Signed-off-by: Steven Price <steven.price@arm.com >
Acked-by: Daniel Vetter <daniel@ffwll.ch >
Signed-off-by: Rob Herring <robh@kernel.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20190627155318.38053-2-steven.price@arm.com
2019-06-28 15:01:21 -06:00
Lucas De Marchi
501ec325f1
drm/i915: rework reading pipe disable fuses
...
This prepares to have possibly more than 3 pipes. I didn't want to
continue the previous approach since the check for "are the disabled
pipes the last ones" poses a combinatory explosion. We need that check
because in several places of the code we have that assumption. If that
ever becomes false in a new HW, other parts of the code would have to
change.
Now we start by considering we have info->num_pipes enabled and disable
each pipe that is marked as disabled. Then it's a simple matter of
checking if we have at least one pipe and that all the enabled ones are
the first pipes, i.e. there are no holes in the bitmask.
Cc: Jose Souza <jose.souza@intel.com >
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com >
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com >
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20190625175437.14840-3-lucas.demarchi@intel.com
2019-06-28 10:07:26 -07:00
Daniel Vetter
52500de68f
drm/vmwgfx: Don't look at state->allow_modeset
...
That's purely for the uapi layer to implement the ALLOW_MODESET flag.
Drivers should instead look at the state, e.g. through
drm_atomic_crtc_needs_modeset(), which vmwgfx already does. Also remove
the confusing comment, since checking allow_modeset is at best a micro
optimization.
v2: Rebase
Reviewed-by: Deepak Rawat <drawat@vmware.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Cc: VMware Graphics <linux-graphics-maintainer@vmware.com >
Cc: Thomas Hellstrom <thellstrom@vmware.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20190520223500.6032-1-daniel.vetter@ffwll.ch
2019-06-28 19:03:18 +02:00
Kuninori Morimoto
8a90efd15e
ASoC: vc4: vc4_htmi: consider CPU-Platform possibility
...
commit 6c6de1c9e2
("ASoC: vc4: vc4_hdmi: don't select unnecessary
Platform")
Current ALSA SoC avoid to add duplicate component to rtd,
and this driver was selecting CPU component as Platform component.
Thus, above patch removed Platform settings from this driver,
because it assumed these are same component.
But, some CPU driver is using generic DMAEngine, in such case, both
CPU component and Platform component will have same of_node/name.
In other words, there are some components which are different but
have same of_node/name.
In such case, Card driver definitely need to select Platform even
though it is same as CPU.
It is depends on CPU driver, but is difficult to know it from Card driver.
This patch reverts above patch.
Fixes: commit 6c6de1c9e2
("ASoC: vc4: vc4_hdmi: don't select unnecessary Platform")
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com >
Signed-off-by: Mark Brown <broonie@kernel.org >
2019-06-28 15:09:09 +01:00
Lyude Paul
ee006eb00a
drm/amdgpu: Don't skip display settings in hwmgr_resume()
...
I'm not entirely sure why this is, but for some reason:
921935dc64
("drm/amd/powerplay: enforce display related settings only on needed")
Breaks runtime PM resume on the Radeon PRO WX 3100 (Lexa) in one the
pre-production laptops I have. The issue manifests as the following
messages in dmesg:
[drm] UVD and UVD ENC initialized successfully.
amdgpu 0000:3b:00.0: [drm:amdgpu_ring_test_helper [amdgpu]] *ERROR* ring vce1 test failed (-110)
[drm:amdgpu_device_ip_resume_phase2 [amdgpu]] *ERROR* resume of IP block <vce_v3_0> failed -110
[drm:amdgpu_device_resume [amdgpu]] *ERROR* amdgpu_device_ip_resume failed (-110).
And happens after about 6-10 runtime PM suspend/resume cycles (sometimes
sooner, if you're lucky!). Unfortunately I can't seem to pin down
precisely which part in psm_adjust_power_state_dynamic that is causing
the issue, but not skipping the display setting setup seems to fix it.
Hopefully if there is a better fix for this, this patch will spark
discussion around it.
Fixes: 921935dc64
("drm/amd/powerplay: enforce display related settings only on needed")
Cc: Evan Quan <evan.quan@amd.com >
Cc: Alex Deucher <alexander.deucher@amd.com >
Cc: Huang Rui <ray.huang@amd.com >
Cc: Rex Zhu <Rex.Zhu@amd.com >
Cc: Likun Gao <Likun.Gao@amd.com >
Cc: <stable@vger.kernel.org > # v5.1+
Signed-off-by: Lyude Paul <lyude@redhat.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2019-06-28 09:08:42 -05:00
tiancyin
39b27ffef7
drm/amd/powerplay: update smu11_driver_if_navi10.h
...
update the smu11_driver_if_navi10.h since navi10 smu fw
update to 42.28
Acked-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: tiancyin <tianci.yin@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2019-06-28 09:08:03 -05:00
Russell King
837567c1e9
drm/armada: no need to check parent of remote
...
There's no need to check the parent of the remote device to check
whether it is available or not, the remote is the device itself.
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk >
2019-06-28 14:50:07 +01:00
Russell King
989b9a7dd4
drm/armada: use for_each_endpoint_of_node() to walk crtc endpoints
...
Rather than having a nested set of for_each_child_of_node() walkers,
use the graph walker to iterate through the endpoints for CRTCs.
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk >
2019-06-28 14:50:07 +01:00
Lubomir Rintel
f54a5990c3
drm/armada: replace the simple-framebuffer
...
If there's a simple-framebuffer carried over from boot firmware, it's going
to stop working once we setup the LCDC for use via DRM. Kick it off from
the hardware.
Signed-off-by: Lubomir Rintel <lkundrak@v3.sk >
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk >
2019-06-28 14:50:07 +01:00
Russell King
06734cb0ab
drm/armada: redo CRTC debugfs files
...
Move the CRTC debugfs files into the CRTC specific directory.
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk >
2019-06-28 14:50:07 +01:00
Gerd Hoffmann
dd2b595978
drm/bochs: fix framebuffer setup.
...
The driver doesn't consider framebuffer pitch and offset, leading to a
wrong display in case offset != 0 or pitch != width * bpp. Fix it.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Acked-by: Thomas Zimmermann <tzimmermann@suse.de >
Link: http://patchwork.freedesktop.org/patch/msgid/20190627081206.23135-1-kraxel@redhat.com
2019-06-28 14:30:40 +02:00
Lucas Stach
be132e1375
drm/etnaviv: add missing failure path to destroy suballoc
...
When something goes wrong in the GPU init after the cmdbuf suballocator
has been constructed, we fail to destroy it properly. This causes havok
later when the GPU is unbound due to a module unload or similar.
Fixes: e66774dd6f
(drm/etnaviv: add cmdbuf suballocator)
Signed-off-by: Lucas Stach <l.stach@pengutronix.de >
Tested-by: Russell King <rmk+kernel@armlinux.org.uk >
2019-06-28 10:59:44 +02:00
Thomas Zimmermann
5ed7191dd9
drm/ast: Replace struct ast_framebuffer with GEM framebuffer helpers
...
The ast driver's struct ast_framebuffer is a buffer object with GEM
interface. There are already GEM framebuffer helpers that implement
the same functionality. Convert ast to these.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de >
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: https://patchwork.freedesktop.org/patch/msgid/20190627173410.8300-1-tzimmermann@suse.de
2019-06-28 09:02:29 +02:00
Dave Airlie
53e155f2bb
Merge tag 'drm-msm-next-2019-06-25' of https://gitlab.freedesktop.org/drm/msm into drm-next
...
+ usual progress on cleanups
+ dsi vs EPROBE_DEFER fixes
+ msm8998 (snapdragon 835 support)
+ a540 gpu support (mesa support already landed)
+ dsi, dsi-phy support
+ mdp5 and dpu interconnect (bus/memory scaling) support
+ initial prep work for per-context pagetables (at least the parts that
don't have external dependencies like iommu/arm-smmu)
There is one more patch for fixing DSI cmd mode panels (part of a set of
patches to get things working on nexus5), but it would be conflicty with
1cff7440a8
in drm-next without rebasing or back-merge,
and since it doesn't conflict with anything in msm-next, I think it best
if Sean merges that through drm-mix-fixes instead.
(In other news, I've been making some progress w/ getting efifb working
properly on sdm850 laptop without horrible hacks, and drm/msm + clk stuff
not totally falling over when bootloader enables display and things are
already running when driver probes.. but not quite ready yet, hopefully
we can post some of that for 5.4.. should help for both the sdm835 and
sdm850 laptops.)
Signed-off-by: Dave Airlie <airlied@redhat.com >
From: Rob Clark <robdclark@gmail.com >
Link: https://patchwork.freedesktop.org/patch/msgid/CAF6AEGsj3N4XzDLSDoa+4RHZ9wXObYmhcep0M3LjnRg48BeLvg@mail.gmail.com
2019-06-28 10:16:40 +10:00
Daniel Vetter
66ab700506
drm/vc4: Use drm_gem_fb_prepare_fb
...
vc4 has switched to using drm_fb->obj[], so we can just use the helper
unchanged.
v2: Make it compile ... oops.
Cc: Eric Anholt <eric@anholt.net >
Cc: Emil Velikov <emil.velikov@collabora.com >
Reviewed-by: Eric Anholt <eric@anholt.net >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Cc: Eric Anholt <eric@anholt.net >
Link: https://patchwork.freedesktop.org/patch/msgid/20190625204208.5614-4-daniel.vetter@ffwll.ch
2019-06-28 00:27:59 +02:00
Daniel Vetter
e78ad76541
drm/msm: Use drm_gem_fb_prepare_fb
...
msm has switched over to drm_fb->obj[] a while ago already, so we can
just use the helper.
v2: Make it compile ... oops.
Cc: Eric Anholt <eric@anholt.net >
Cc: Emil Velikov <emil.velikov@collabora.com >
Reviewed-by: Eric Anholt <eric@anholt.net >
Reviewed-by: Rob Clark <robdclark@gmail.com >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Cc: Rob Clark <robdclark@gmail.com >
Cc: Sean Paul <sean@poorly.run >
Cc: Jeykumar Sankaran <jsanka@codeaurora.org >
Cc: Jordan Crouse <jcrouse@codeaurora.org >
Cc: Bruce Wang <bzwang@chromium.org >
Cc: Fritz Koenig <frkoenig@google.com >
Cc: Daniel Vetter <daniel.vetter@ffwll.ch >
Cc: linux-arm-msm@vger.kernel.org
Cc: freedreno@lists.freedesktop.org
Link: https://patchwork.freedesktop.org/patch/msgid/20190625204208.5614-3-daniel.vetter@ffwll.ch
2019-06-28 00:27:59 +02:00
Daniel Vetter
bd630a86be
drm/fb-helper: use gem_bo.resv, not dma_buf.resv in prepare_fb
...
With
commit 5f6ed9879a
Author: Daniel Vetter <daniel.vetter@ffwll.ch >
Date: Fri Jun 14 22:35:57 2019 +0200
drm/prime: automatically set gem_obj->resv on import
we consistently set drm_gem_bo.resv for imported buffers. Which means
we don't need to check the dma-buf in the prepare_fb helper, but can
generalize them so they're also useful for display+render drivers
which use gem_bo.resv to track their own rendering for their own
scanout buffers.
Cc: Emil Velikov <emil.velikov@collabora.com >
Cc: Eric Anholt <eric@anholt.net >
Cc: Rob Clark <robdclark@gmail.com >
Reviewed-by: Eric Anholt <eric@anholt.net >
Reviewed-by: Rob Clark <robdclark@gmail.com >
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20190625204208.5614-2-daniel.vetter@ffwll.ch
2019-06-28 00:27:59 +02:00
Thomas Zimmermann
5d17718997
drm/mgag200: Replace struct mga_framebuffer with GEM framebuffer helpers
...
The mgag200 driver's struct mga_framebuffer is a buffer object with GEM
interface. There are already GEM framebuffer helpers that implement the
same functionality. Convert mgag200 to these.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de >
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: https://patchwork.freedesktop.org/patch/msgid/20190627080909.30471-1-tzimmermann@suse.de
2019-06-27 19:19:04 +02:00
Colin Ian King
440e80ce02
drm/amd/display: fix a couple of spelling mistakes
...
There are a couple of spelling mistakes in dm_error messages and
a comment. Fix these.
Signed-off-by: Colin Ian King <colin.king@canonical.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2019-06-27 11:22:57 -05:00
Evan Quan
4130ff8027
drm/amd/powerplay: no memory activity support on Vega10
...
Make mem_busy_percent sysfs interface invisible on Vega10.
Signed-off-by: Evan Quan <evan.quan@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2019-06-27 11:22:50 -05:00
shaoyunl
a864e29d94
drm/amdkfd: remove unnecessary warning message on gpu reset
...
In XGMI configuration, more than one asic can be reset at same time,
kfd is able to handle this and no need to trigger the warning
Signed-off-by: shaoyunl <shaoyun.liu@amd.com >
Reviewed-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2019-06-27 11:22:41 -05:00
Oak Zeng
f51af4357c
drm/amdgpu: Set queue_preemption_timeout_ms default value
...
Set default value of this kernel parameter to 9000
Signed-off-by: Oak Zeng <Oak.Zeng@amd.com >
Acked-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2019-06-27 11:22:34 -05:00
Evan Quan
309bce0ca8
drm/amd/powerplay: add missing smu_get_clk_info_from_vbios() call
...
This seems a merge error.
Signed-off-by: Evan Quan <evan.quan@amd.com >
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2019-06-27 11:22:28 -05:00
Evan Quan
505ac3039a
drm/amd/powerplay: support runtime ppfeatures setting on Navi10
...
Implement Navi10 backend for runtime ppfeatures status retrieving
and setting support.
Signed-off-by: Evan Quan <evan.quan@amd.com >
Reviewed-by: Alex Deucher <alexander.deucher@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2019-06-27 11:22:21 -05:00
Evan Quan
b213646519
drm/amd/powerplay: check prerequisite for VCN power gating
...
VCN DPM is a necessary prerequisite for VCN power gating.
Signed-off-by: Evan Quan <evan.quan@amd.com >
Reviewed-by: Kevin Wang <kevin1.wang@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2019-06-27 11:22:08 -05:00
Felix Kuehling
f631959653
drm/ttm: return -EBUSY if waiting for busy BO fails
...
Returning -EAGAIN prevents ttm_bo_mem_space from trying alternate
placements and can lead to live-locks in amdgpu_cs, retrying
indefinitely and never succeeding.
Fixes: d367bd2a5e
("drm/ttm: fix busy memory to fail other user v10")
Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com >
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2019-06-27 11:19:36 -05:00
Alex Deucher
687ac4a702
drm/amdgpu: drop copy/paste leftover to fix big endian
...
The buf swap field doesn't exist on RB1.
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com >
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2019-06-27 09:35:07 -05:00
Alex Deucher
d8dfc3bd46
drm/amdgpu: fix warning on 32 bit
...
Properly cast pointer to int.
Reviewed-by: Christian König <christian.koenig@amd.com >
Signed-off-by: Alex Deucher <alexander.deucher@amd.com >
2019-06-27 08:56:16 -05:00
Sam Ravnborg
156bdac990
drm/exynos: trigger build of all modules
...
Add COMPILE_TEST dependency to force exynos driver to
built for more than arm and to built modules
that otherwise required other symbols to be de-selected.
This will increase build coverage of the exynos driver
thus allowing most trivial build errors to be detected/fixed early.
This introduces one warning when built using sh:
exynos7_drm_decon.c: In function ‘decon_remove’:
exynos7_drm_decon.c:769:24: warning: unused variable ‘ctx’
struct decon_context *ctx = dev_get_drvdata(&pdev->dev);
This is due to the definition of iounmap() in sh,
and nothing that exynos driver can fix.
Include fix of exynos build for alpha.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org >
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: David Airlie <airlied@linux.ie >
Cc: Daniel Vetter <daniel@ffwll.ch >
Cc: Kukjin Kim <kgene@kernel.org >
Cc: Krzysztof Kozlowski <krzk@kernel.org >
Cc: Jingoo Han <jingoohan1@gmail.com >
Signed-off-by: Inki Dae <inki.dae@samsung.com >
2019-06-27 22:30:56 +09:00
Chris Wilson
7218524d3e
drm/i915: Make i945gm_vblank_work_func static
...
drivers/gpu/drm/i915/i915_irq.c:3382:6: warning: symbol 'i945gm_vblank_work_func' was not declared. Should it be static?
CC [M] drivers/gpu/drm/i915/i915_irq.o
drivers/gpu/drm/i915/i915_irq.c:3382:6: error: no previous prototype for ‘i945gm_vblank_work_func’ [-Werror=missing-prototypes]
void i945gm_vblank_work_func(struct work_struct *work)
Jani wrote the idential patch, so for posterity:
The static keyword was apparently accidentally removed in commit
08fa8fd0fa
("drm/i915: Switch to per-crtc vblank vfuncs"), leading to
sparse warning:
drivers/gpu/drm/i915/i915_irq.c:3382:6: warning: symbol
'i945gm_vblank_work_func' was not declared. Should it be static?
Make the function static again.
Meanwhile, the 0-day kbuilder also spotted the mistake.
Fixes: 08fa8fd0fa
("drm/i915: Switch to per-crtc vblank vfuncs")
Reported-by: kbuild test robot <lkp@intel.com >
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk >
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com >
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20190626224212.10141-1-chris@chris-wilson.co.uk
Link: https://patchwork.freedesktop.org/patch/msgid/20190627091914.30795-1-jani.nikula@intel.com
2019-06-27 14:08:50 +01:00
Andrey Smirnov
fdb29b7380
drm/bridge: tc358767: Add support for address-only I2C transfers
...
Transfer size of zero means a request to do an address-only
transfer. Since the HW support this, we probably shouldn't be just
ignoring such requests. While at it allow DP_AUX_I2C_MOT flag to pass
through, since it is supported by the HW as well.
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com >
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com >
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrzej Hajda <a.hajda@samsung.com >
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com >
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrey Gusakov <andrey.gusakov@cogentembedded.com >
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Cc: Cory Tusar <cory.tusar@zii.aero >
Cc: Chris Healy <cphealy@gmail.com >
Cc: Lucas Stach <l.stach@pengutronix.de >
Cc: dri-devel@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20190619052716.16831-16-andrew.smirnov@gmail.com
2019-06-27 13:38:24 +02:00
Andrey Smirnov
32d3621996
drm/bridge: tc358767: Replace magic number in tc_main_link_enable()
...
We don't need 8 byte array, DP_LINK_STATUS_SIZE (6) should be
enough. This also gets rid of a magic number as a bonus.
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com >
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com >
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrzej Hajda <a.hajda@samsung.com >
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com >
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrey Gusakov <andrey.gusakov@cogentembedded.com >
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Cc: Cory Tusar <cory.tusar@zii.aero >
Cc: Chris Healy <cphealy@gmail.com >
Cc: Lucas Stach <l.stach@pengutronix.de >
Cc: dri-devel@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20190619052716.16831-15-andrew.smirnov@gmail.com
2019-06-27 13:38:21 +02:00
Andrey Smirnov
d174db0788
drm/bridge: tc358767: Drop unnecessary 8 byte buffer
...
tc_get_display_props() never reads more than a byte via AUX, so
there's no need to reserve 8 for that purpose. No function change
intended.
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com >
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com >
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrzej Hajda <a.hajda@samsung.com >
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com >
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrey Gusakov <andrey.gusakov@cogentembedded.com >
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Cc: Cory Tusar <cory.tusar@zii.aero >
Cc: Chris Healy <cphealy@gmail.com >
Cc: Lucas Stach <l.stach@pengutronix.de >
Cc: dri-devel@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20190619052716.16831-14-andrew.smirnov@gmail.com
2019-06-27 13:38:19 +02:00
Andrey Smirnov
7264892648
drm/bridge: tc358767: Simplify tc_aux_wait_busy()
...
We never pass anything but 100 as timeout_ms to tc_aux_wait_busy(), so
we may as well hardcode that value and simplify function's signature.
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com >
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com >
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrzej Hajda <a.hajda@samsung.com >
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com >
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrey Gusakov <andrey.gusakov@cogentembedded.com >
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Cc: Cory Tusar <cory.tusar@zii.aero >
Cc: Chris Healy <cphealy@gmail.com >
Cc: Lucas Stach <l.stach@pengutronix.de >
Cc: dri-devel@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20190619052716.16831-13-andrew.smirnov@gmail.com
2019-06-27 13:38:17 +02:00
Andrey Smirnov
134fb306b1
drm/bridge: tc358767: Introduce tc_pllupdate()
...
tc_wait_pll_lock() is always called as a follow-up for updating
PLLUPDATE and PLLEN bit of a given PLL control register. To simplify
things, merge the two operation into a single helper function
tc_pllupdate() and convert the rest of the code to use it. No
functional change intended.
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com >
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrzej Hajda <a.hajda@samsung.com >
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com >
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrey Gusakov <andrey.gusakov@cogentembedded.com >
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Cc: Cory Tusar <cory.tusar@zii.aero >
Cc: Chris Healy <cphealy@gmail.com >
Cc: Lucas Stach <l.stach@pengutronix.de >
Cc: dri-devel@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20190619052716.16831-12-andrew.smirnov@gmail.com
2019-06-27 13:38:13 +02:00
Andrey Smirnov
c49f60dfbf
drm/bridge: tc358767: Introduce tc_set_syspllparam()
...
Move common code converting clock rate to an appropriate constant and
configuring SYS_PLLPARAM register into a separate routine and convert
the rest of the code to use it. No functional change intended.
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com >
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrzej Hajda <a.hajda@samsung.com >
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com >
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrey Gusakov <andrey.gusakov@cogentembedded.com >
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Cc: Chris Healy <cphealy@gmail.com >
Cc: Cory Tusar <cory.tusar@zii.aero >
Cc: Lucas Stach <l.stach@pengutronix.de >
Cc: dri-devel@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20190619052716.16831-11-andrew.smirnov@gmail.com
2019-06-27 13:38:08 +02:00
Andrey Smirnov
12dfe7c4d9
drm/bridge: tc358767: Use reported AUX transfer size
...
Don't assume that requested data transfer size is the same as amount
of data that was transferred. Change the code to get that information
from DP0_AUXSTATUS instead.
Since the check for AUX_BUSY in tc_aux_get_status() is pointless (it
will always called after tc_aux_wait_busy()) and there's only one user
of it, inline its code into tc_aux_transfer() instead of trying to
accommodate the change above.
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com >
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com >
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrzej Hajda <a.hajda@samsung.com >
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com >
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrey Gusakov <andrey.gusakov@cogentembedded.com >
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Cc: Cory Tusar <cory.tusar@zii.aero >
Cc: Chris Healy <cphealy@gmail.com >
Cc: Lucas Stach <l.stach@pengutronix.de >
Cc: dri-devel@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20190619052716.16831-10-andrew.smirnov@gmail.com
2019-06-27 13:38:00 +02:00
Andrey Smirnov
e0655feaec
drm/bridge: tc358767: Increase AUX transfer length limit
...
According to the datasheet tc358767 can transfer up to 16 bytes via
its AUX channel, so the artificial limit of 8 appears to be too
low. However only up to 15-bytes seem to be actually supported and
trying to use 16-byte transfers results in transfers failing
sporadically (with bogus status in case of I2C transfers), so limit it
to 15.
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com >
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com >
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrzej Hajda <a.hajda@samsung.com >
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com >
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrey Gusakov <andrey.gusakov@cogentembedded.com >
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Cc: Cory Tusar <cory.tusar@zii.aero >
Cc: Chris Healy <cphealy@gmail.com >
Cc: Lucas Stach <l.stach@pengutronix.de >
Cc: dri-devel@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20190619052716.16831-9-andrew.smirnov@gmail.com
2019-06-27 13:37:55 +02:00
Andrey Smirnov
792a081a1b
drm/bridge: tc358767: Simplify AUX data write
...
Simplify AUX data write by dropping index arithmetic and shifting and
replacing it with a call to a helper function that does two things:
1. Copies user-provided data into a write buffer
2. Transfers contents of the write buffer to up to 4 32-bit
registers on the chip
Note that separate data endianness fix:
tmp = (tmp << 8) | buf[i];
that was reserved for DP_AUX_I2C_WRITE looks really strange, since it
will place data differently depending on the passed user-data
size. E.g. for a write of 1 byte, data transferred to the chip would
look like:
[byte0] [dummy1] [dummy2] [dummy3]
whereas for a write of 4 bytes we'd get:
[byte3] [byte2] [byte1] [byte0]
Since there's no indication in the datasheet that I2C write buffer
should be treated differently than AUX write buffer and no comment in
the original code explaining why it was done this way, that special
I2C write buffer transformation was dropped in this patch.
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com >
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com >
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrzej Hajda <a.hajda@samsung.com >
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com >
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrey Gusakov <andrey.gusakov@cogentembedded.com >
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Cc: Cory Tusar <cory.tusar@zii.aero >
Cc: Chris Healy <cphealy@gmail.com >
Cc: Lucas Stach <l.stach@pengutronix.de >
Cc: dri-devel@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20190619052716.16831-8-andrew.smirnov@gmail.com
2019-06-27 13:37:48 +02:00
Andrey Smirnov
53b166dca5
drm/bridge: tc358767: Simplify AUX data read
...
Simplify AUX data read by removing index arithmetic and shifting with
a helper function that does two things:
1. Fetch data from up to 4 32-bit registers from the chip
2. Copy read data into user provided array.
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com >
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com >
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrzej Hajda <a.hajda@samsung.com >
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com >
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrey Gusakov <andrey.gusakov@cogentembedded.com >
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Cc: Cory Tusar <cory.tusar@zii.aero >
Cc: Chris Healy <cphealy@gmail.com >
Cc: Lucas Stach <l.stach@pengutronix.de >
Cc: dri-devel@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20190619052716.16831-7-andrew.smirnov@gmail.com
2019-06-27 13:37:40 +02:00
Andrey Smirnov
6d0c383159
drm/bridge: tc358767: Drop custom tc_write()/tc_read() accessors
...
A very unfortunate aspect of tc_write()/tc_read() macro helpers is
that they capture quite a bit of context around them and thus require
the caller to have magic variables 'ret' and 'tc' as well as label
'err'. That makes a number of code paths rather counter-intuitive and
somewhat clunky, for example tc_stream_clock_calc() ends up being like
this:
int ret;
tc_write(DP0_VIDMNGEN1, 32768);
return 0;
err:
return ret;
which is rather surprising when you read the code for the first
time. Since those helpers arguably aren't really saving that much code
and there's no way of fixing them without making them too verbose to
be worth it change the driver code to not use them at all.
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com >
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com >
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrzej Hajda <a.hajda@samsung.com >
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com >
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrey Gusakov <andrey.gusakov@cogentembedded.com >
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Cc: Cory Tusar <cory.tusar@zii.aero >
Cc: Chris Healy <cphealy@gmail.com >
Cc: Lucas Stach <l.stach@pengutronix.de >
Cc: dri-devel@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20190619052716.16831-6-andrew.smirnov@gmail.com
2019-06-27 13:37:31 +02:00
Andrey Smirnov
3f072c304c
drm/bridge: tc358767: Simplify tc_set_video_mode()
...
Simplify tc_set_video_mode() by replacing explicit shifting using
macros from <linux/bitfield.h>. No functional change intended.
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com >
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com >
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrzej Hajda <a.hajda@samsung.com >
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com >
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrey Gusakov <andrey.gusakov@cogentembedded.com >
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Cc: Cory Tusar <cory.tusar@zii.aero >
Cc: Chris Healy <cphealy@gmail.com >
Cc: Lucas Stach <l.stach@pengutronix.de >
Cc: dri-devel@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20190619052716.16831-5-andrew.smirnov@gmail.com
2019-06-27 13:37:21 +02:00
Andrey Smirnov
aa92213f38
drm/bridge: tc358767: Simplify polling in tc_link_training()
...
Replace explicit polling in tc_link_training() with equivalent call to
tc_poll_timeout() for simplicity. No functional change intended (not
including slightly altered debug output).
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com >
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com >
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrzej Hajda <a.hajda@samsung.com >
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com >
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrey Gusakov <andrey.gusakov@cogentembedded.com >
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Cc: Cory Tusar <cory.tusar@zii.aero >
Cc: Chris Healy <cphealy@gmail.com >
Cc: Lucas Stach <l.stach@pengutronix.de >
Cc: dri-devel@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20190619052716.16831-4-andrew.smirnov@gmail.com
2019-06-27 13:37:15 +02:00
Andrey Smirnov
ebcce4e642
drm/bridge: tc358767: Simplify polling in tc_main_link_setup()
...
Replace explicit polling loop with equivalent call to
tc_poll_timeout() for brevity. No functional change intended.
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com >
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com >
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrzej Hajda <a.hajda@samsung.com >
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com >
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrey Gusakov <andrey.gusakov@cogentembedded.com >
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Cc: Cory Tusar <cory.tusar@zii.aero >
Cc: Chris Healy <cphealy@gmail.com >
Cc: Lucas Stach <l.stach@pengutronix.de >
Cc: dri-devel@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20190619052716.16831-3-andrew.smirnov@gmail.com
2019-06-27 13:37:09 +02:00
Andrey Smirnov
93a105694f
drm/bridge: tc358767: Simplify tc_poll_timeout()
...
Implementation of tc_poll_timeout() is almost a 100% copy-and-paste of
the code for regmap_read_poll_timeout(). Replace copied code with a
call to the original. While at it change tc_poll_timeout to accept
"struct tc_data *" instead of "struct regmap *" for brevity. No
functional change intended.
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com >
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrzej Hajda <a.hajda@samsung.com >
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com >
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Andrey Gusakov <andrey.gusakov@cogentembedded.com >
Cc: Philipp Zabel <p.zabel@pengutronix.de >
Cc: Cory Tusar <cory.tusar@zii.aero >
Cc: Chris Healy <cphealy@gmail.com >
Cc: Lucas Stach <l.stach@pengutronix.de >
Cc: dri-devel@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20190619052716.16831-2-andrew.smirnov@gmail.com
2019-06-27 13:37:01 +02:00
Sam Ravnborg
2bda34d7d9
drm/exynos: drop drmP.h usage
...
Drop use of the deprecated drmP.h file.
Replace with forwards / externals as appropriate.
While touching the list of include files divide
them up in blocks and sort them.
v3:
- fix build errors in exynos_drm_g2d.c (Inki Dae)
The exynos_drm_g2d.c file is not built in the
standard configurations and was therefore missed.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org >
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: David Airlie <airlied@linux.ie >
Cc: Daniel Vetter <daniel@ffwll.ch >
Cc: Kukjin Kim <kgene@kernel.org >
Cc: Krzysztof Kozlowski <krzk@kernel.org >
Cc: Jingoo Han <jingoohan1@gmail.com >
Fixed merge conflict.
Signed-off-by: Inki Dae <inki.dae@samsung.com >
2019-06-27 19:56:09 +09:00
Colin Ian King
e61576c4b9
drm/mgag200: add in missing { } around if block
...
There is an if block that is missing the { } curly brackets. Add
these in.
Addresses-Coverity: ("Structurally dead code")
Fixes: 94dc57b103
("drm/mgag200: Rewrite cursor handling")
Signed-off-by: Colin Ian King <colin.king@canonical.com >
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de >
Link: https://patchwork.freedesktop.org/patch/msgid/20190614143911.21806-1-colin.king@canonical.com
2019-06-27 10:18:28 +02:00
Jani Nikula
b40cf94c76
drm/i915: make intel_uc_fw.h self-contained
...
Add the minimal includes/declarations to make the header self-contained,
and ensure it stays that way.
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk >
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20190626144020.2155-13-jani.nikula@intel.com
2019-06-27 10:50:54 +03:00