Dan Carpenter
ec0bb482de
drm/gem: Fix a leak in drm_gem_objects_lookup()
...
If the "handles" allocation or the copy_from_user() fails then we leak
"objs". It's supposed to be freed in panfrost_job_cleanup().
Fixes: c117aa4d87 ("drm: Add a drm_gem_objects_lookup helper")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com >
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20200320132334.GC95012@mwanda
2020-05-17 17:14:38 +01:00
Emil Velikov
5fa63f0773
drm/rockchip: vop: call vop_cfg_done() under reg_lock
...
The function vop_cfg_done() is a simple VOP_REG_SET(). As such it should
be done under a reg_lock. A quick look through the driver shows that all
other instances (apart from driver init) have the lock. Do the same here
Cc: Sandy Huang <hjc@rock-chips.com >
Cc: Heiko Stübner <heiko@sntech.de >
Signed-off-by: Emil Velikov <emil.velikov@collabora.com >
Reviewed-by: Sandy Huang <hjc@rock-chips.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20200505151613.2932456-1-emil.l.velikov@gmail.com
2020-05-17 16:49:34 +01:00
Sam Ravnborg
a18dc7401a
drm/tilcdc: use devm_of_find_backlight
...
Look up backlight device using devm_of_find_backlight().
This simplifies the code and prevents us from hardcoding
the node name in the driver.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org >
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Jyri Sarha <jsarha@ti.com >
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20200514191001.457441-3-sam@ravnborg.org
2020-05-17 14:55:29 +02:00
Sam Ravnborg
1efa9eff7b
drm/omap: display: use devm_of_find_backlight
...
Look up backlight device using devm_of_find_backlight().
This simplifies the code and prevents us from hardcoding
the node name in the driver.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org >
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Zheng Bin <zhengbin13@huawei.com >
Cc: Kate Stewart <kstewart@linuxfoundation.org >
Cc: Enrico Weigelt <info@metux.net >
Cc: Allison Randal <allison@lohutok.net >
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Kefeng Wang <wangkefeng.wang@huawei.com >
Cc: Sam Ravnborg <sam@ravnborg.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20200514191001.457441-2-sam@ravnborg.org
2020-05-17 14:54:39 +02:00
Maxime Ripard
b718102dbd
drm/sun4i: mixer: Call of_dma_configure if there's an IOMMU
...
The main DRM device is actually a virtual device so it doesn't have the
iommus property, which is instead on the DMA masters, in this case the
mixers.
Add a call to of_dma_configure with the mixers DT node but on the DRM
virtual device to configure it in the same way than the mixers.
Reviewed-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com >
Signed-off-by: Maxime Ripard <maxime@cerno.tech >
Link: https://patchwork.freedesktop.org/patch/msgid/9a4daf438dd3f2fe07afb23688bfb793a0613d7d.1589378833.git-series.maxime@cerno.tech
2020-05-15 15:01:04 +02:00
Maxime Ripard
e8ade61519
dt-bindings: display: sun8i-mixer: Allow for an iommu property
...
The H6 mixer is attached to an IOMMU, so let's allow that property to be
set in the bindings.
Reviewed-by: Rob Herring <robh@kernel.org >
Signed-off-by: Maxime Ripard <maxime@cerno.tech >
Link: https://patchwork.freedesktop.org/patch/msgid/7941e0c02794e6336da75fcac950ecd43be7fd97.1589378833.git-series.maxime@cerno.tech
2020-05-15 15:01:04 +02:00
Imre Deak
58c1721787
drm/dp_mst: Fix timeout handling of MST down messages
...
This fixes the following use-after-free problem in case an MST down
message times out, while waiting for the response for it:
[ 449.022841] [drm:drm_dp_mst_wait_tx_reply.isra.26] timedout msg send 0000000080ba7fa2 2 0
[ 449.022898] ------------[ cut here ]------------
[ 449.022903] list_add corruption. prev->next should be next (ffff88847dae32c0), but was 6b6b6b6b6b6b6b6b. (prev=ffff88847db1c140).
[ 449.022931] WARNING: CPU: 2 PID: 22 at lib/list_debug.c:28 __list_add_valid+0x4d/0x70
[ 449.022935] Modules linked in: asix usbnet mii snd_hda_codec_hdmi mei_hdcp i915 x86_pkg_temp_thermal coretemp crct10dif_pclmul crc32_pclmul ghash_clmulni_intel snd_hda_intel snd_intel_dspcfg snd_hda_codec snd_hwdep e1000e snd_hda_core ptp snd_pcm pps_core mei_me mei intel_lpss_pci prime_numbers
[ 449.022966] CPU: 2 PID: 22 Comm: kworker/2:0 Not tainted 5.7.0-rc3-CI-Patchwork_17536+ #1
[ 449.022970] Hardware name: Intel Corporation Tiger Lake Client Platform/TigerLake U DDR4 SODIMM RVP, BIOS TGLSFWI1.R00.2457.A16.1912270059 12/27/2019
[ 449.022976] Workqueue: events_long drm_dp_mst_link_probe_work
[ 449.022982] RIP: 0010:__list_add_valid+0x4d/0x70
[ 449.022987] Code: c3 48 89 d1 48 c7 c7 f0 e7 32 82 48 89 c2 e8 3a 49 b7 ff 0f 0b 31 c0 c3 48 89 c1 4c 89 c6 48 c7 c7 40 e8 32 82 e8 23 49 b7 ff <0f> 0b 31 c0 c3 48 89 f2 4c 89 c1 48 89 fe 48 c7 c7 90 e8 32 82 e8
[ 449.022991] RSP: 0018:ffffc900001abcb0 EFLAGS: 00010286
[ 449.022995] RAX: 0000000000000000 RBX: ffff88847dae2d58 RCX: 0000000000000001
[ 449.022999] RDX: 0000000080000001 RSI: ffff88849d914978 RDI: 00000000ffffffff
[ 449.023002] RBP: ffff88847dae32c0 R08: ffff88849d914978 R09: 0000000000000000
[ 449.023006] R10: ffffc900001abcb8 R11: 0000000000000000 R12: ffff888490d98400
[ 449.023009] R13: ffff88847dae3230 R14: ffff88847db1c140 R15: ffff888490d98540
[ 449.023013] FS: 0000000000000000(0000) GS:ffff88849ff00000(0000) knlGS:0000000000000000
[ 449.023017] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 449.023021] CR2: 00007fb96fafdc63 CR3: 0000000005610004 CR4: 0000000000760ee0
[ 449.023025] PKRU: 55555554
[ 449.023028] Call Trace:
[ 449.023034] drm_dp_queue_down_tx+0x59/0x110
[ 449.023041] ? rcu_read_lock_sched_held+0x4d/0x80
[ 449.023050] ? kmem_cache_alloc_trace+0x2a6/0x2d0
[ 449.023060] drm_dp_send_link_address+0x74/0x870
[ 449.023065] ? __slab_free+0x3e1/0x5c0
[ 449.023071] ? lockdep_hardirqs_on+0xe0/0x1c0
[ 449.023078] ? lockdep_hardirqs_on+0xe0/0x1c0
[ 449.023097] drm_dp_check_and_send_link_address+0x9a/0xc0
[ 449.023106] drm_dp_mst_link_probe_work+0x9e/0x160
[ 449.023117] process_one_work+0x268/0x600
[ 449.023124] ? __schedule+0x307/0x8d0
[ 449.023139] worker_thread+0x37/0x380
[ 449.023149] ? process_one_work+0x600/0x600
[ 449.023153] kthread+0x140/0x160
[ 449.023159] ? kthread_park+0x80/0x80
[ 449.023169] ret_from_fork+0x24/0x50
Fixes: d308a881a5 ("drm/dp_mst: Kill the second sideband tx slot, save the world")
Cc: Lyude Paul <lyude@redhat.com >
Cc: Sean Paul <sean@poorly.run >
Cc: Wayne Lin <Wayne.Lin@amd.com >
Cc: <stable@vger.kernel.org > # v3.17+
Signed-off-by: Imre Deak <imre.deak@intel.com >
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20200513103155.12336-1-imre.deak@intel.com
2020-05-15 15:54:28 +03:00
Wolfram Sang
b5850d6ec3
drm/vblank: remove outdated and noisy output
...
The R-Car DU driver calls drm_vblank_init via some helper functions in
probe(). From what I checked, most drivers do this as well. I have a
config now where DU always stays in deferred_probe state because of a
missing dependency. This means that every time I rebind another driver
like MMC, the vblank init message is displayed again when the DU driver
is retried. Because the message doesn't really carry a useful
information, I suggest to simply drop it.
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: https://patchwork.freedesktop.org/patch/msgid/20200513201016.23047-1-wsa+renesas@sang-engineering.com
2020-05-14 14:35:13 +02:00
Chris Wilson
1c530d431c
dma-buf: Use atomic_fetch_add() for the context id
...
Now that atomic64_fetch_add() exists we can use it to return the base
context id, rather than the atomic64_add_return(N) - N concoction.
Suggested-by: Mika Kuoppala <mika.kuoppala@linux.intel.com >
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk >
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com >
Reviewed-by: Maciej Patelczyk <maciej.patelczyk@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20200513074809.18194-2-chris@chris-wilson.co.uk
2020-05-13 13:38:59 +01:00
Wei Yongjun
761e9f4f80
drm/mcde: dsi: Fix return value check in mcde_dsi_bind()
...
The of_drm_find_bridge() function returns NULL on error, it doesn't return
error pointers so this check doesn't work.
Fixes: 5fc537bfd0 ("drm/mcde: Add new driver for ST-Ericsson MCDE")
Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com >
Signed-off-by: Linus Walleij <linus.walleij@linaro.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20200430073145.52321-1-weiyongjun1@huawei.com
2020-05-12 13:48:24 +02:00
Thomas Zimmermann
81a15b9a65
drm/mgag200: Embed connector instance in struct mga_device
...
Storing the connector instance in struct mga_device avoids some
dynamic memory allocation. On errors, the connector's initializer
function now destroys the i2c structure. Done in preparation of
converting mgag200 to simple-KMS helpers.
v2:
* improved commit message (Michael)
* fixed error message for mgag200_vga_connector_init() (Sam)
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de >
Reviewed-by: Michael J. Ruhl <michael.j.ruhl@intel.com >
Acked-by: Sam Ravnborg <sam@ravnborg.org >
Tested-by: John Donnelly <John.p.donnelly@oracle.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20200507090315.21274-7-tzimmermann@suse.de
2020-05-11 16:40:44 +02:00
Thomas Zimmermann
30b0c940f9
drm/mgag200: Remove unused fields from struct mga_device
...
The fields mode_info, num_crtcs and mode in struct mga_device serve
no purpose. Remove them.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de >
Acked-by: Sam Ravnborg <sam@ravnborg.org >
Tested-by: John Donnelly <John.p.donnelly@oracle.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20200507090315.21274-6-tzimmermann@suse.de
2020-05-11 16:40:35 +02:00
Thomas Zimmermann
5635b7cf86
drm/mgag200: Use managed mode-config initialization
...
Mode configuration is now cleanued up automatically. While at it,
move all mode-config code into mgag200_mode.c. Done in preparation
of switching mgag200 to simple-KMS helpers.
v2:
* improve commit message (Sam)
* rebased during cherry pick
* also move bpp_shift initialization
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de >
Acked-by: Sam Ravnborg <sam@ravnborg.org >
Tested-by: John Donnelly <John.p.donnelly@oracle.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20200507090315.21274-5-tzimmermann@suse.de
2020-05-11 16:40:17 +02:00
Thomas Zimmermann
0858083781
drm/mgag200: Integrate init function into load function
...
Done to simplify initialization code before embedding the DRM device
instance in struct mga_device.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Acked-by: Sam Ravnborg <sam@ravnborg.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20200507090315.21274-4-tzimmermann@suse.de
2020-05-11 16:40:03 +02:00
Thomas Zimmermann
ed5877b62e
drm/mgag200: Remove several references to struct mga_device.dev
...
Done in preparation of embedding the DRM device in struct mga_device.
This patch makes the patch for embedding more readable.
v2:
* improved commit message (Daniel)
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Reviewed-by: Sam Ravnborg <sam@ravnborg.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20200507090315.21274-3-tzimmermann@suse.de
2020-05-11 16:39:54 +02:00
Thomas Zimmermann
8d8ff2a957
drm/mgag200: Convert struct drm_device to struct mga_device with helper
...
Mgag200 uses dev_private to look up struct mga_device for instances
of struct drm_device. Use of dev_private is deprecated, so hide it in
the helper function to_mga_device().
v2:
* make to_mga_device() a function (Sam)
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Reviewed-by: Sam Ravnborg <sam@ravnborg.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20200507090315.21274-2-tzimmermann@suse.de
2020-05-11 16:39:45 +02:00
Jason Yan
6e85bd73d5
video: fbdev: pxa168fb: make pxa168fb_init_mode() return void
...
No other functions use the return value of pxa168fb_init_mode() and the
return value is always 0 now. Make it return void. This fixes the
following coccicheck warning:
drivers/video/fbdev/pxa168fb.c:565:5-8: Unneeded variable: "ret". Return
"0" on line 597
Signed-off-by: Jason Yan <yanaijie@huawei.com >
Signed-off-by: Sam Ravnborg <sam@ravnborg.org >
[fixed indent]
Link: https://patchwork.freedesktop.org/patch/msgid/20200506061745.19451-1-yanaijie@huawei.com
2020-05-09 23:09:41 +02:00
Samuel Zou
7429e92386
drm/i2c/tda998x: Make tda998x_audio_digital_mute static
...
Fix the following sparse warning:
drivers/gpu/drm/i2c/tda998x_drv.c:1136:5: warning:
symbol 'tda998x_audio_digital_mute' was not declared. Should it be static?
Reported-by: Hulk Robot <hulkci@huawei.com >
Signed-off-by: Samuel Zou <zou_wei@huawei.com >
Cc: Russell King <linux@armlinux.org.uk >
Signed-off-by: Sam Ravnborg <sam@ravnborg.org >
Link: https://patchwork.freedesktop.org/patch/msgid/1588819768-11818-1-git-send-email-zou_wei@huawei.com
2020-05-09 23:06:07 +02:00
Douglas Anderson
48834e6084
drm/panel-simple: Support hpd-gpios for delaying prepare()
...
People use panel-simple when they have panels that are builtin to
their device. In these cases the HPD (Hot Plug Detect) signal isn't
really used for hotplugging devices but instead is used for power
sequencing. Panel timing diagrams (especially for eDP panels) usually
have the HPD signal in them and it acts as an indicator that the panel
is ready for us to talk to it.
Sometimes the HPD signal is hooked up to a normal GPIO on a system.
In this case we need to poll it in the correct place to know that the
panel is ready for us. In some system designs the right place for
this is panel-simple.
When adding this support, we'll account for the case that there might
be a circular dependency between panel-simple and the provider of the
GPIO. The case this was designed for was for the "ti-sn65dsi86"
bridge chip. If HPD is hooked up to one of the GPIOs provided by the
bridge chip then in our probe function we'll always get back
-EPROBE_DEFER. Let's handle this by allowing this GPIO to show up
late if we saw -EPROBE_DEFER during probe. NOTE: since the
gpio_get_optional() is used, if the "hpd-gpios" isn't there our
variable will just be NULL and we won't do anything in prepare().
Signed-off-by: Douglas Anderson <dianders@chromium.org >
Reviewed-by: Stephen Boyd <swboyd@chromium.org >
Reviewed-by: Linus Walleij <linus.walleij@linaro.org >
Signed-off-by: Sam Ravnborg <sam@ravnborg.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20200507143354.v5.3.I53fed5b501a31e7a7fa13268ebcdd6b77bd0cadd@changeid
2020-05-09 22:11:45 +02:00
Douglas Anderson
d252830652
dt-bindings: display: Add hpd-gpios to panel-common bindings
...
In the cases where there is no connector in a system there's no great
place to put "hpd-gpios". As per discussion [1] the best place to put
it is in the panel. Add this to the device tree bindings.
[1] https://lore.kernel.org/r/20200417180819.GE5861@pendragon.ideasonboard.com
Signed-off-by: Douglas Anderson <dianders@chromium.org >
Reviewed-by: Stephen Boyd <swboyd@chromium.org >
Reviewed-by: Linus Walleij <linus.walleij@linaro.org >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Signed-off-by: Sam Ravnborg <sam@ravnborg.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20200507143354.v5.2.I1976736b400a3b30e46efa47782248b86b3bc627@changeid
2020-05-09 22:11:22 +02:00
Douglas Anderson
cfe40d0223
panel: simple: Add BOE NV133FHM-N62
...
All info I could find about this panel show that it behaves the same
as the BOE NV133FHM-N61. However, it definitely appears to be a
unique panel because reading the EDID shows "NV133FHM-N62". We'll add
a string match for the new panel but until we find something unique
about it we'll just point at the N61's structures.
Signed-off-by: Douglas Anderson <dianders@chromium.org >
Signed-off-by: Sam Ravnborg <sam@ravnborg.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20200508155859.3.I525ebd471f5340a6a369af7bde06ef04174d2f41@changeid
2020-05-09 21:57:50 +02:00
Douglas Anderson
574a38ca06
dt-bindings: display: simple: Add BOE NV133FHM-N62
...
This panel appears to be the same or nearly the same as the BOE
NV133FHM-N61, but since (in the very least) it identifies itself as a
different model in the EDID we should add a new compatible string for
it.
Signed-off-by: Douglas Anderson <dianders@chromium.org >
Signed-off-by: Sam Ravnborg <sam@ravnborg.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20200508155859.2.I37c879ef4ec6d4028a3d45728bc3a58060bba175@changeid
2020-05-09 21:57:21 +02:00
Douglas Anderson
9694d9c3b5
panel: simple: Fix size and bpp of BOE NV133FHM-N61
...
The BOE NV133FHM-N61 is documented in the original commit to be a
13.3" panel, but the size listed in our struct doesn't match.
Specifically:
math.sqrt(30.0 * 30.0 + 18.7 * 18.7) / 2.54 ==> 13.92
Searching around on the Internet shows that the size that was in the
structure was the "Outline Size", not the "Display Area". Let's fix
it.
Also the Internet says that this panel supports 262K colors. That's
6bpp, not 8bpp.
Fixes: b0c664cc80 ("panel: simple: Add BOE NV133FHM-N61")
Signed-off-by: Douglas Anderson <dianders@chromium.org >
Signed-off-by: Sam Ravnborg <sam@ravnborg.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20200508155859.1.I4d29651c0837b4095fb4951253f44036a371732f@changeid
2020-05-09 21:57:02 +02:00
Mika Kahola
50b6f619a0
uapi/drm/drm_fourcc.h: Note on platform specificity for format modifiers
...
Make an additional note on DRM format modifiers for x and y tiling. These
format modifiers are defined for BDW+ platforms and therefore definition
is not valid for older gens. This is due to address swizzling for tiled
surfaces is no longer used. For newer platforms main memory controller has
a more effective address swizzling algorithm.
v2: Rephrase comment (Daniel)
Signed-off-by: Mika Kahola <mika.kahola@intel.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: https://patchwork.freedesktop.org/patch/msgid/20200506120827.12250-1-mika.kahola@intel.com
2020-05-08 12:12:58 +02:00
Thomas Zimmermann
d6ddbd5c97
drm/ast: Don't check new mode if CRTC is being disabled
...
Suspending failed because there's no mode if the CRTC is being
disabled. Early-out in this case. This fixes runtime PM for ast.
v3:
* fixed commit message
v2:
* added Tested-by/Reported-by tags
* added Fixes tags and CC (Sam)
* improved comment
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de >
Reported-by: Cary Garrett <cogarre@gmail.com >
Tested-by: Cary Garrett <cogarre@gmail.com >
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Fixes: b48e1b6ffd ("drm/ast: Add CRTC helpers for atomic modesetting")
Cc: Thomas Zimmermann <tzimmermann@suse.de >
Cc: Gerd Hoffmann <kraxel@redhat.com >
Cc: Dave Airlie <airlied@redhat.com >
Cc: Daniel Vetter <daniel.vetter@ffwll.ch >
Cc: Sam Ravnborg <sam@ravnborg.org >
Cc: <stable@vger.kernel.org > # v5.6+
Link: https://patchwork.freedesktop.org/patch/msgid/20200507090640.21561-1-tzimmermann@suse.de
2020-05-08 09:29:18 +02:00