drm/sun4i: tcon: Support backend input mux
The TCON has a mux to select the source of the data to display. This mux includes selecting the display backends. On the A31, which has two display pipelines, this mux can let the TCON select either backend as its data source. Although the muxing can be changed on the fly, DRM needs to be able to group a bunch of layers such that they get switched to another crtc together. This is because the display backend does the layer compositing, while the TCON generates the display timings. This constraint is not supported by DRM. Here we simply pair up backends and TCONs with the same ID. Signed-off-by: Chen-Yu Tsai <wens@csie.org> Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> Link: https://patchwork.freedesktop.org/patch/msgid/20170908075016.18657-7-wens@csie.org
This commit is contained in:

committed by
Maxime Ripard

parent
be3fe0f9ed
commit
27e18de78e
@@ -37,6 +37,7 @@
|
||||
#define SUN4I_TCON0_CTL_TCON_ENABLE BIT(31)
|
||||
#define SUN4I_TCON0_CTL_CLK_DELAY_MASK GENMASK(8, 4)
|
||||
#define SUN4I_TCON0_CTL_CLK_DELAY(delay) ((delay << 4) & SUN4I_TCON0_CTL_CLK_DELAY_MASK)
|
||||
#define SUN4I_TCON0_CTL_SRC_SEL_MASK GENMASK(2, 0)
|
||||
|
||||
#define SUN4I_TCON0_DCLK_REG 0x44
|
||||
#define SUN4I_TCON0_DCLK_GATE_BIT (31)
|
||||
@@ -85,6 +86,7 @@
|
||||
#define SUN4I_TCON1_CTL_INTERLACE_ENABLE BIT(20)
|
||||
#define SUN4I_TCON1_CTL_CLK_DELAY_MASK GENMASK(8, 4)
|
||||
#define SUN4I_TCON1_CTL_CLK_DELAY(delay) ((delay << 4) & SUN4I_TCON1_CTL_CLK_DELAY_MASK)
|
||||
#define SUN4I_TCON1_CTL_SRC_SEL_MASK GENMASK(1, 0)
|
||||
|
||||
#define SUN4I_TCON1_BASIC0_REG 0x94
|
||||
#define SUN4I_TCON1_BASIC0_X(width) ((((width) - 1) & 0xfff) << 16)
|
||||
@@ -146,6 +148,7 @@
|
||||
struct sun4i_tcon_quirks {
|
||||
bool has_unknown_mux; /* sun5i has undocumented mux */
|
||||
bool has_channel_1; /* a33 does not have channel 1 */
|
||||
bool needs_de_be_mux; /* sun6i needs mux to select backend */
|
||||
};
|
||||
|
||||
struct sun4i_tcon {
|
||||
|
Reference in New Issue
Block a user