forked from luck/tmp_suning_uos_patched
drm/ingenic: Switch IPU plane to type OVERLAY
commit 68b433fe6937cfa3f8975d18643d5956254edd6a upstream.
It should have been an OVERLAY from the beginning. The documentation
stipulates that there should be an unique PRIMARY plane per CRTC.
Fixes: fc1acf317b
("drm/ingenic: Add support for the IPU")
Cc: <stable@vger.kernel.org> # 5.8+
Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Acked-by: Simon Ser <contact@emersion.fr>
Link: https://patchwork.freedesktop.org/patch/msgid/20210329175046.214629-2-paul@crapouillou.net
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
8f6dcc4dd7
commit
b3f8120039
|
@ -347,7 +347,7 @@ static void ingenic_drm_plane_enable(struct ingenic_drm *priv,
|
|||
unsigned int en_bit;
|
||||
|
||||
if (priv->soc_info->has_osd) {
|
||||
if (plane->type == DRM_PLANE_TYPE_PRIMARY)
|
||||
if (plane != &priv->f0)
|
||||
en_bit = JZ_LCD_OSDC_F1EN;
|
||||
else
|
||||
en_bit = JZ_LCD_OSDC_F0EN;
|
||||
|
@ -362,7 +362,7 @@ void ingenic_drm_plane_disable(struct device *dev, struct drm_plane *plane)
|
|||
unsigned int en_bit;
|
||||
|
||||
if (priv->soc_info->has_osd) {
|
||||
if (plane->type == DRM_PLANE_TYPE_PRIMARY)
|
||||
if (plane != &priv->f0)
|
||||
en_bit = JZ_LCD_OSDC_F1EN;
|
||||
else
|
||||
en_bit = JZ_LCD_OSDC_F0EN;
|
||||
|
@ -389,8 +389,7 @@ void ingenic_drm_plane_config(struct device *dev,
|
|||
|
||||
ingenic_drm_plane_enable(priv, plane);
|
||||
|
||||
if (priv->soc_info->has_osd &&
|
||||
plane->type == DRM_PLANE_TYPE_PRIMARY) {
|
||||
if (priv->soc_info->has_osd && plane != &priv->f0) {
|
||||
switch (fourcc) {
|
||||
case DRM_FORMAT_XRGB1555:
|
||||
ctrl |= JZ_LCD_OSDCTRL_RGB555;
|
||||
|
@ -423,7 +422,7 @@ void ingenic_drm_plane_config(struct device *dev,
|
|||
}
|
||||
|
||||
if (priv->soc_info->has_osd) {
|
||||
if (plane->type == DRM_PLANE_TYPE_PRIMARY) {
|
||||
if (plane != &priv->f0) {
|
||||
xy_reg = JZ_REG_LCD_XYP1;
|
||||
size_reg = JZ_REG_LCD_SIZE1;
|
||||
} else {
|
||||
|
@ -455,7 +454,7 @@ static void ingenic_drm_plane_atomic_update(struct drm_plane *plane,
|
|||
height = state->src_h >> 16;
|
||||
cpp = state->fb->format->cpp[0];
|
||||
|
||||
if (!priv->soc_info->has_osd || plane->type == DRM_PLANE_TYPE_OVERLAY)
|
||||
if (!priv->soc_info->has_osd || plane == &priv->f0)
|
||||
hwdesc = priv->dma_hwdesc_f0;
|
||||
else
|
||||
hwdesc = priv->dma_hwdesc_f1;
|
||||
|
|
|
@ -753,7 +753,7 @@ static int ingenic_ipu_bind(struct device *dev, struct device *master, void *d)
|
|||
|
||||
err = drm_universal_plane_init(drm, plane, 1, &ingenic_ipu_plane_funcs,
|
||||
soc_info->formats, soc_info->num_formats,
|
||||
NULL, DRM_PLANE_TYPE_PRIMARY, NULL);
|
||||
NULL, DRM_PLANE_TYPE_OVERLAY, NULL);
|
||||
if (err) {
|
||||
dev_err(dev, "Failed to init plane: %i\n", err);
|
||||
return err;
|
||||
|
|
Loading…
Reference in New Issue
Block a user