linux/drivers/gpu/drm/sun4i
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
..
Kconfig drm/sun4i: fix build failure with CONFIG_DRM_SUN8I_MIXER=m 2018-07-12 09:35:19 +02:00
Makefile drm/sun4i: fix build failure with CONFIG_DRM_SUN8I_MIXER=m 2018-07-12 09:35:19 +02:00
sun4i_backend.c drm/sun4i: Add support for plane alpha 2018-04-16 21:21:16 +02:00
sun4i_backend.h drm/sun4i: Add support for plane alpha 2018-04-16 21:21:16 +02:00
sun4i_crtc.c drm/sun4i: Use drm_crtc_mask() 2018-07-02 18:45:56 +03:00
sun4i_crtc.h drm/sun4i: abstract a engine type 2017-06-01 09:47:23 +02:00
sun4i_dotclock.c drm/sun4i: Fix dclk_set_phase 2018-03-01 10:41:27 +01:00
sun4i_dotclock.h
sun4i_drv.c drm/sun4i: fix build failure with CONFIG_DRM_SUN8I_MIXER=m 2018-07-12 09:35:19 +02:00
sun4i_drv.h drm/sun4i: Add a driver for the display frontend 2018-01-22 15:15:38 +01:00
sun4i_framebuffer.c drm/sun4i: backend: Add support for zpos 2018-01-29 14:02:40 +01:00
sun4i_framebuffer.h drm/sun4i: Use drm_fb_cma_fbdev_init/fini() 2017-12-08 14:47:42 +01:00
sun4i_frontend.c drm/sun4i: Add a driver for the display frontend 2018-01-22 15:15:38 +01:00
sun4i_frontend.h drm/sun4i: Add a driver for the display frontend 2018-01-22 15:15:38 +01:00
sun4i_hdmi_ddc_clk.c drm/sun4i: tcon: Don't rely on encoders to set the TCON mode 2017-10-17 19:49:13 +02:00
sun4i_hdmi_enc.c drm/sun4i: hdmi: Fix another error handling path in 'sun4i_hdmi_bind()' 2018-03-20 11:50:28 +01:00
sun4i_hdmi_i2c.c drm/sun4i: hdmi: Add support for controller hardware variants 2017-10-11 09:53:33 +02:00
sun4i_hdmi_tmds_clk.c drm/sun4i: hdmi: Add missing rate halving check in sun4i_tmds_determine_rate 2018-01-11 13:25:43 +01:00
sun4i_hdmi.h drm/sun4i: hdmi: Document PAD_CTRL1 output invert bits 2017-10-16 09:54:21 +02:00
sun4i_layer.c drm/sun4i: Add support for plane alpha 2018-04-16 21:21:16 +02:00
sun4i_layer.h drm/sun4i: backend: Assign the pipes automatically 2018-02-22 16:19:52 +01:00
sun4i_lvds.c drm/sun4i: Use drm_crtc_mask() 2018-07-02 18:45:56 +03:00
sun4i_lvds.h drm/sun4i: Add LVDS support 2018-01-04 20:37:17 +01:00
sun4i_rgb.c drm/sun4i: Use drm_crtc_mask() 2018-07-02 18:45:56 +03:00
sun4i_rgb.h drm/sun4i: rgb: Pass tcon pointer when initializing RGB encoder 2017-03-07 22:18:24 +01:00
sun4i_tcon.c drm/sun4i: tcon: Release node when traversing of graph 2018-07-11 09:52:41 +02:00
sun4i_tcon.h drm/sun4i: Tie the DSI controller in the TCON 2018-04-11 13:19:28 +02:00
sun4i_tv.c drm/sun4i: tcon: Don't rely on encoders to set the TCON mode 2017-10-17 19:49:13 +02:00
sun6i_drc.c drm/sun4i: Add driver support for A80 display pipeline 2018-03-19 15:40:24 +01:00
sun6i_mipi_dphy.c drm/sun4i: Add Allwinner A31 MIPI-DSI controller support 2018-04-11 13:19:17 +02:00
sun6i_mipi_dsi.c drm/panel: Make of_drm_find_panel() return an ERR_PTR() instead of NULL 2018-07-10 17:59:05 +02:00
sun6i_mipi_dsi.h drm/sun4i: Add Allwinner A31 MIPI-DSI controller support 2018-04-11 13:19:17 +02:00
sun8i_csc.c drm/sun4i: Add DE2 CSC library 2017-12-05 13:22:44 +01:00
sun8i_csc.h drm/sun4i: Add DE2 CSC library 2017-12-05 13:22:44 +01:00
sun8i_dw_hdmi.c drm/sun4i: fix build failure with CONFIG_DRM_SUN8I_MIXER=m 2018-07-12 09:35:19 +02:00
sun8i_dw_hdmi.h drm/sun4i: Add support for second clock parent to DW HDMI PHY clk driver 2018-06-27 21:44:02 +02:00
sun8i_hdmi_phy_clk.c drm/sun4i: Add support for second clock parent to DW HDMI PHY clk driver 2018-06-27 21:44:02 +02:00
sun8i_hdmi_phy.c drm/sun4i: Add support for A64 HDMI PHY 2018-06-27 21:44:03 +02:00
sun8i_mixer.c drm/sun4i: Implement zpos for DE2 2018-07-12 18:48:11 +02:00
sun8i_mixer.h drm/sun4i: Implement zpos for DE2 2018-07-12 18:48:11 +02:00
sun8i_tcon_top.c drm/sun4i: tcon-top: Remove mux configuration at probe time 2018-07-11 09:57:45 +02:00
sun8i_tcon_top.h drm/sun4i: tcon-top: Add helpers for mux switching 2018-07-11 09:54:54 +02:00
sun8i_ui_layer.c drm/sun4i: Implement zpos for DE2 2018-07-12 18:48:11 +02:00
sun8i_ui_layer.h drm/sun4i: Reorganize UI layer code in DE2 2017-12-05 13:22:43 +01:00
sun8i_ui_scaler.c drm/sun4i: Add support for HW scaling to DE2 2017-12-05 13:22:44 +01:00
sun8i_ui_scaler.h drm/sun4i: Add support for HW scaling to DE2 2017-12-05 13:22:44 +01:00
sun8i_vi_layer.c drm/sun4i: Implement zpos for DE2 2018-07-12 18:48:11 +02:00
sun8i_vi_layer.h drm/sun4i: Add support for DE2 VI planes 2017-12-05 13:22:43 +01:00
sun8i_vi_scaler.c drm/sun4i: Expand DE2 scaler lib with YUV support 2017-12-05 13:22:44 +01:00
sun8i_vi_scaler.h drm/sun4i: Expand DE2 scaler lib with YUV support 2017-12-05 13:22:44 +01:00
sunxi_engine.h drm/sun4i: Fix build warnings in sunxi_engine.h 2018-01-23 10:45:01 +01:00