linux_dsm_epyc7002/drivers/gpu/drm
Jernej Skrabec f88c5ee774
drm/sun4i: Implement zpos for DE2
Initial implementation of DE2 planes only supported fixed zpos.

Expand implementation with configurable zpos property.

Implementation background:
Channel in DE2 driver represents one DRM plane, whereas pipe is just
mapped channel to known Z position. Pipe 0 will always be at the bottom,
pipe 1 just above pipe 0 and so on. If, for example, channel 1 is mapped
at pipe 0 and channel 0 at pipe 1, whatever is on channel 0 will appear
on top.

Before this commit, channel id was used for addressing channel related
registers (prefixed with SUN8I_MIXER_CHAN_UI_ or SUN8I_MIXER_CHAN_VI_)
and pipe registers (prefixed with SUN8I_MIXER_BLEND_). Additionally,
register SUN8I_MIXER_BLEND_ROUTE, which takes care for mapping channels
to pipes had fixed value. It mapped channel 0 to pipe 0, 1 to 1 and so
on. Consequence of all that was fixed Z order of planes.

With this commit, pipe registers are using zpos property as index and
channel related registers still use channel id as index. Pipe mapping
register is now set dynamically too and pipe enable register is rebuild
every time to make sure only active pipes are enabled.

Testing was done to confirm that there is no issues if bottom plane
contains pixels with alpha value < 0xff and if it doesn't whole screen.

Tested-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180706164732.24166-1-jernej.skrabec@siol.net
2018-07-12 18:48:11 +02:00
..
amd Merge drm-upstream/drm-next into drm-misc-next 2018-07-06 13:34:13 -03:00
arc drm: add missing ctx argument to plane transitional helpers 2018-07-03 09:30:19 +02:00
arm Merge commit 'refs/for-upstream/mali-dp' of git://linux-arm.org/linux-ld into drm-next 2018-07-06 10:02:13 +10:00
armada dma-buf: remove kmap_atomic interface 2018-06-20 15:59:34 +02:00
ast
atmel-hlcdc Merge v4.18-rc3 into drm-next 2018-07-04 10:27:12 +10:00
bochs
bridge drm/panel: Make of_drm_find_panel() return an ERR_PTR() instead of NULL 2018-07-10 17:59:05 +02:00
cirrus
etnaviv drm/etnaviv: Remove unecessary dma_fence_ops 2018-07-03 13:13:27 +02:00
exynos drm/panel: Make of_drm_find_panel() return an ERR_PTR() instead of NULL 2018-07-10 17:59:05 +02:00
fsl-dcu drm/panel: Make of_drm_find_panel() return an ERR_PTR() instead of NULL 2018-07-10 17:59:05 +02:00
gma500 drm: gma500: Changed __attribute__((packed)) to __packed 2018-07-12 08:48:25 +02:00
hisilicon drm: kirin: Remove useless "Scale not support" error message 2018-06-25 18:09:38 +02:00
i2c Merge drm-upstream/drm-next into drm-misc-next 2018-06-20 13:22:22 -03:00
i810 drm/i810: off by one in i810_dma_vertex() 2018-07-03 15:00:42 +02:00
i915 Merge drm-upstream/drm-next into drm-misc-next 2018-07-06 13:34:13 -03:00
imx drm/imx: Use drm_plane_mask() 2018-07-02 18:45:56 +03:00
lib
mediatek Merge drm-upstream/drm-next into drm-misc-next 2018-06-20 13:22:22 -03:00
meson drm/meson: Fix an un-handled error path in 'meson_drv_bind_master()' 2018-06-26 10:22:29 +02:00
mga
mgag200
msm drm/panel: Make of_drm_find_panel() return an ERR_PTR() instead of NULL 2018-07-10 17:59:05 +02:00
mxsfb
nouveau drm/nouveau: Use drm_connector_for_each_possible_encoder() 2018-07-05 16:52:08 +03:00
omapdrm omapdrm changes for 4.19 2018-07-06 06:29:24 +10:00
panel drm/panel: simple: Add Sharp LQ035Q7DB03 panel support 2018-07-11 18:35:25 +02:00
pl111 drm/pl111: Set .gem_prime_vmap and .gem_prime_mmap 2018-07-10 14:52:54 +02:00
qxl drm/qxl: Remove unecessary dma_fence_ops 2018-07-03 13:13:56 +02:00
r128
radeon drm/radeon: Use drm_connector_for_each_possible_encoder() 2018-07-05 16:52:08 +03:00
rcar-du drm/panel: Make of_drm_find_panel() return an ERR_PTR() instead of NULL 2018-07-10 17:59:05 +02:00
rockchip drm/panel: Make of_drm_find_panel() return an ERR_PTR() instead of NULL 2018-07-10 17:59:05 +02:00
savage drm/savage: off by one in savage_bci_cmdbuf() 2018-07-04 14:27:01 +02:00
scheduler drm: Remove unecessary dma_fence_ops 2018-07-03 13:13:22 +02:00
selftests drm-misc-next for 4.19: 2018-06-22 12:58:08 +10:00
shmobile
sis
sti drm/panel: Make of_drm_find_panel() return an ERR_PTR() instead of NULL 2018-07-10 17:59:05 +02:00
stm drm/stm: ltdc: rework reset sequence 2018-07-06 10:15:47 +02:00
sun4i drm/sun4i: Implement zpos for DE2 2018-07-12 18:48:11 +02:00
tdfx
tegra drm/panel: Make of_drm_find_panel() return an ERR_PTR() instead of NULL 2018-07-10 17:59:05 +02:00
tilcdc drm/tilcdc: Use drm_connector_has_possible_encoder() 2018-07-05 16:52:08 +03:00
tinydrm drm/tinydrm: Fix doc build warnings 2018-07-11 22:24:02 +02:00
ttm Merge branch 'drm-next-4.19' of git://people.freedesktop.org/~agd5f/linux into drm-next 2018-06-22 13:19:05 +10:00
tve200
udl dma-buf: remove kmap_atomic interface 2018-06-20 15:59:34 +02:00
v3d drm/v3d: Fix a grammar nit in the scheduler docs. 2018-07-05 11:42:50 -07:00
vc4 drm/vc4: Support the case where the DSI device is disabled 2018-07-10 17:59:05 +02:00
vgem drm/vgem: off by one in vgem_gem_fault() 2018-07-03 15:06:15 +02:00
via treewide: Use array_size() in vzalloc() 2018-06-12 16:19:22 -07:00
virtio drm/virtio: Remove unecessary dma_fence_ops 2018-07-03 13:14:18 +02:00
vkms drm/vkms: Add framebuffer and plane helpers 2018-07-12 16:24:05 +02:00
vmwgfx drm/vmwgfx: Use drm_plane_mask() & co. 2018-07-02 18:45:56 +03:00
xen drm-misc-next for 4.19: 2018-06-22 12:58:08 +10:00
zte drm: add missing ctx argument to plane transitional helpers 2018-07-03 09:30:19 +02:00
ati_pcigart.c
drm_agpsupport.c
drm_atomic_helper.c drm/atomic: Call fake_vblank() from the generic commit_tail() helpers 2018-07-07 07:53:56 +02:00
drm_atomic.c drm/atomic: Avoid connector to writeback_connector casts 2018-07-07 07:51:19 +02:00
drm_auth.c
drm_blend.c
drm_bridge.c
drm_bufs.c
drm_cache.c
drm_client.c drm/client: Fix: drm_client_new: Don't require DRM to be registered 2018-07-11 22:25:51 +02:00
drm_color_mgmt.c
drm_connector.c drm: Add drm_connector_has_possible_encoder() 2018-07-05 16:52:08 +03:00
drm_context.c
drm_crtc_helper_internal.h
drm_crtc_helper.c
drm_crtc_internal.h drm: Make ioctls available for in-kernel clients 2018-06-25 16:20:14 +02:00
drm_crtc.c drm: Remove unecessary dma_fence_ops 2018-07-03 13:13:22 +02:00
drm_debugfs_crc.c drm/crc: Only report a single overflow when a CRC fd is opened 2018-07-06 14:57:03 +02:00
drm_debugfs.c drm/debugfs: Add internal client debugfs file 2018-07-10 14:53:35 +02:00
drm_dma.c
drm_dp_aux_dev.c
drm_dp_dual_mode_helper.c
drm_dp_helper.c drm for v4.18-rc1 2018-06-06 08:16:33 -07:00
drm_dp_mst_topology.c
drm_drv.c drm: Begin an API for in-kernel clients 2018-07-10 14:51:37 +02:00
drm_dumb_buffers.c drm-misc-next for 4.19: 2018-06-28 13:29:07 +10:00
drm_edid_load.c
drm_edid.c drm-misc-next for 4.19: 2018-06-22 12:58:08 +10:00
drm_encoder_slave.c
drm_encoder.c
drm_fb_cma_helper.c drm/cma-helper: Remove drm_fb_cma_fbdev_init_with_funcs() 2018-07-10 14:54:50 +02:00
drm_fb_helper.c drm/fb-helper: Finish the generic fbdev emulation 2018-07-10 14:54:09 +02:00
drm_file.c drm: Begin an API for in-kernel clients 2018-07-10 14:51:37 +02:00
drm_flip_work.c
drm_fourcc.c
drm_framebuffer.c drm: Add drm_plane_mask() 2018-07-02 18:45:55 +03:00
drm_gem_cma_helper.c
drm_gem_framebuffer_helper.c drm/gem-fb-helper: Always do implicit sync 2018-06-20 14:43:13 +02:00
drm_gem.c
drm_global.c drm: add SPDX identifier and clarify license 2018-06-29 15:28:47 -05:00
drm_hashtab.c treewide: Use array_size() in vzalloc() 2018-06-12 16:19:22 -07:00
drm_info.c
drm_internal.h drm: provide management functions for drm_file 2018-06-25 16:17:03 +02:00
drm_ioc32.c
drm_ioctl.c drm: Make ioctls available for in-kernel clients 2018-06-25 16:20:14 +02:00
drm_irq.c
drm_kms_helper_common.c
drm_lease.c
drm_legacy.h
drm_lock.c
drm_memory.c treewide: Use array_size() in vmalloc() 2018-06-12 16:19:22 -07:00
drm_mipi_dsi.c
drm_mm.c
drm_mode_config.c drm: writeback: Add client capability for exposing writeback connectors 2018-06-20 15:30:20 +01:00
drm_mode_object.c
drm_modes.c drm: Add support for extracting sync signal drive edge from videomode 2018-07-10 17:59:05 +02:00
drm_modeset_helper.c
drm_modeset_lock.c
drm_of.c drm/of: Make drm_of_find_panel_or_bridge() fail when the device is disabled 2018-07-10 17:59:05 +02:00
drm_panel_orientation_quirks.c
drm_panel.c drm/panel: Let of_drm_find_panel() return -ENODEV when the panel is disabled 2018-07-10 17:59:05 +02:00
drm_pci.c
drm_plane_helper.c drm: add missing ctx argument to plane transitional helpers 2018-07-03 09:30:19 +02:00
drm_plane.c drm: Add checks for atomic_[duplicate/destroy]_state with atomic drivers 2018-06-18 09:20:51 +02:00
drm_prime.c dma-buf: remove kmap_atomic interface 2018-06-20 15:59:34 +02:00
drm_print.c
drm_probe_helper.c drm: Begin an API for in-kernel clients 2018-07-10 14:51:37 +02:00
drm_property.c
drm_rect.c
drm_scatter.c
drm_scdc_helper.c
drm_simple_kms_helper.c drm: Use drm_crtc_mask() 2018-07-02 18:45:55 +03:00
drm_syncobj.c drm: Remove unecessary dma_fence_ops 2018-07-03 13:13:22 +02:00
drm_sysfs.c
drm_trace_points.c
drm_trace.h
drm_vblank.c
drm_vm.c
drm_vma_manager.c drm: add SPDX idenitifier and clarify license 2018-06-29 15:28:47 -05:00
drm_writeback.c drm/writeback: Fix the "overview" section of the doc 2018-07-07 07:48:38 +02:00
Kconfig drm: vkms: select DRM_KMS_HELPER 2018-07-09 18:46:05 +02:00
Makefile drm: Begin an API for in-kernel clients 2018-07-10 14:51:37 +02:00