linux/drivers/gpu/drm/vc4
Maxime Ripard 8ba0b6d196
drm/vc4: crtc: Keep the previously assigned HVS FIFO
The HVS FIFOs are currently assigned each time we have an atomic_check
for all the enabled CRTCs.

However, if we are running multiple outputs in parallel and we happen to
disable the first (by index) CRTC, we end up changing the assigned FIFO
of the second CRTC without disabling and reenabling the pixelvalve which
ends up in a stall and eventually a VBLANK timeout.

In order to fix this, we can create a special value for our assigned
channel to mark it as disabled, and if our CRTC already had an assigned
channel in its previous state, we keep on using it.

Fixes: 87ebcd42fb ("drm/vc4: crtc: Assign output to channel automatically")
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Tested-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200923084032.218619-2-maxime@cerno.tech
2020-09-25 16:56:21 +02:00
..
Kconfig drm/vc4: Fix Kconfig indentation 2019-11-25 10:04:41 +01:00
Makefile drm/vc4: hdmi: Add PHY init and disable function 2020-09-07 18:06:04 +02:00
vc4_bo.c drm/vc4: remove _unlocked suffix in drm_gem_object_put_unlocked 2020-05-19 22:31:35 +01:00
vc4_crtc.c drm/vc4: crtc: Keep the previously assigned HVS FIFO 2020-09-25 16:56:21 +02:00
vc4_debugfs.c drm: convert .debugfs_init() hook to return void. 2020-03-18 17:53:28 +01:00
vc4_dpi.c drm/vc4: Use simple encoder 2020-04-02 14:16:45 +02:00
vc4_drv.c drm/vc4: drv: Support BCM2711 2020-09-07 18:14:55 +02:00
vc4_drv.h drm/vc4: crtc: Keep the previously assigned HVS FIFO 2020-09-25 16:56:21 +02:00
vc4_dsi.c drm/vc4: Use simple encoder 2020-04-02 14:16:45 +02:00
vc4_fence.c
vc4_gem.c drm/vc4: remove _unlocked suffix in drm_gem_object_put_unlocked 2020-05-19 22:31:35 +01:00
vc4_hdmi.c drm/vc4: hdmi: Fix NULL vs IS_ERR() checks in vc5_hdmi_init_resources() 2020-09-10 12:15:57 +02:00
vc4_hdmi.h drm/vc4: hdmi: Support the BCM2711 HDMI controllers 2020-09-07 18:14:54 +02:00
vc4_hdmi_phy.c drm/vc4: hdmi: Support the BCM2711 HDMI controllers 2020-09-07 18:14:54 +02:00
vc4_hdmi_regs.h drm/vc4: Update type of reg parameter in vc4_hdmi_{read,write} 2020-09-11 11:30:16 +02:00
vc4_hvs.c drm/vc4: hvs: Introduce a function to get the assigned FIFO 2020-09-07 18:04:26 +02:00
vc4_irq.c drm/vc4: Allocate binner bo when starting to use the V3D 2019-05-23 17:32:21 +02:00
vc4_kms.c drm/vc4: crtc: Keep the previously assigned HVS FIFO 2020-09-25 16:56:21 +02:00
vc4_packet.h
vc4_perfmon.c drm/vc4: Disable V3D interactions if the v3d component didn't probe. 2019-04-03 12:49:18 -07:00
vc4_plane.c drm/vc4: Handing the return value of drm_universal_plane_init 2020-09-16 04:48:37 -04:00
vc4_qpu_defines.h
vc4_regs.h drm/vc4: hdmi: Support the BCM2711 HDMI controllers 2020-09-07 18:14:54 +02:00
vc4_render_cl.c drm/vc4: Make sure to emit a tile coordinates between two MSAA loads. 2019-04-01 09:33:38 -07:00
vc4_trace.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
vc4_trace_points.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
vc4_txp.c drm/vc4: crtc: Move the HVS gamma LUT setup to our init function 2020-09-07 18:03:39 +02:00
vc4_v3d.c drm/vc4: remove _unlocked suffix in drm_gem_object_put_unlocked 2020-05-19 22:31:35 +01:00
vc4_validate.c
vc4_validate_shaders.c
vc4_vec.c drm/vc4: Use simple encoder 2020-04-02 14:16:45 +02:00