From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0E95B7C for ; Tue, 24 May 2022 19:13:23 +0000 (UTC) Received: by mail-ej1-f54.google.com with SMTP id ck4so33010103ejb.8 for ; Tue, 24 May 2022 12:13:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=nzsyUlkyiS/YzaEgtysgXXKOHxgS0XkeH6XhZ/9DzcI=; b=RAoVNQlaMYx37KumXh0hGrjUwAjD0INuS3O9Hxop0qlfjBSf2o+baBodGl+Ft/fYKU rM8ZNU7pRsVNKqt/TUCl31WwE347eoFxkd/3FBxIAYmOt8b/NafU1Hgb154V7KcDvCGf hA3sp8LCOpYW71ANq3ZzVex53wuQObEsodF0Hv0hPEHeo44VkLvCS53sOJDRzfl8Ad0q FHnxZ5KPFoCoqkhe2oX/69b0A7DQklL4H7zIBr9+nOpv+5U8gy0058MF3eaIIVn/vixc OhaGfs932+BEJ+OcHt/6P0v/3I4BSzn4A4AgSxzn09zrtYJuJpLmSyVz8uXaNzYGMP67 f3hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=nzsyUlkyiS/YzaEgtysgXXKOHxgS0XkeH6XhZ/9DzcI=; b=OirTSoTSz/4NI/MusNiJDe9yR4xfIELmFs4fgyNX76nguk9RM/y1jgzWURi/BdCSqp E4gJVTgIHJC2IOc0k4wD6NnrLTGkoU+e+ssPZf5b4RVmhk0mSBkEHJ+FmdkhCmBZCy0B kHQs/oDprCnwVDuajQXgptV2nJA3QeM6dkMXi+pDsJf5J4W8pJGuu3rEOFmaC0Grln8j LwjPkLuA2SXlHKE4zA3hEEUaceqrH39iHpOGuF/XQBRrymviy4fzuF880n/qZzedHUmr z6oxKdZYbBrHiivc8V/7rxc3w5immTyw4cpE7nXJyC0qBFPYC++rMhRHqyKcpIgrSWbF FXCQ== X-Gm-Message-State: AOAM532ox3aNwW3Yue3ervKS+OPoE+9/GG4iXfHrylQBgZVwbwshREs/ 6ou4N1iGb9v76pzY5S0zfXk= X-Google-Smtp-Source: ABdhPJwhIiB5LNWsM05p3UmylLy75saiNErANV1vYibc3/Mqe36oT9Gg7y+M+UJk+GivHhVotPQUMw== X-Received: by 2002:a17:907:7fa8:b0:6f3:e975:abfa with SMTP id qk40-20020a1709077fa800b006f3e975abfamr25545210ejc.86.1653419602162; Tue, 24 May 2022 12:13:22 -0700 (PDT) Received: from kista.localnet (213-161-3-76.dynamic.telemach.net. [213.161.3.76]) by smtp.gmail.com with ESMTPSA id p15-20020a05640210cf00b0042aaa3b741esm9769308edu.1.2022.05.24.12.13.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 May 2022 12:13:21 -0700 (PDT) From: Jernej =?utf-8?B?xaBrcmFiZWM=?= To: Roman Stratiienko Cc: mripard@kernel.org, wens@csie.org, airlied@linux.ie, Daniel Vetter , Samuel Holland , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, megi@xff.cz Subject: Re: Re: Re: [PATCH] drm/sun4i: Fix blend registers corruption for DE2.0/DE3.0 Date: Tue, 24 May 2022 21:13:20 +0200 Message-ID: <2827541.e9J7NaK4W3@kista> In-Reply-To: References: <20220524135249.49993-1-roman.o.stratiienko@globallogic.com> <2629819.mvXUDI8C0e@kista> Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="UTF-8" Don't top post, it's annoying and against rules. Dne torek, 24. maj 2022 ob 19:10:06 CEST je Roman Stratiienko napisal(a): > Please draft a test for the zpos issue you're mentioning. >=20 > It's very easy to do with kmsxx using python wrapper. >=20 > Or explain steps to reproduce here, I will write it by myself. I'm talking about the issue which you, Ondrej Jirman and me all tried to fi= x it=20 in the past one way or another: https://patchwork.kernel.org/project/dri-devel/patch/20190914220337.646719-= 1-megous@megous.com/ https://patchwork.kernel.org/project/dri-devel/patch/20210106204630.1800284= =2D1-jernej.skrabec@siol.net/ Best regards, Jernej >=20 > Thanks. > Regards > Roman >=20 > =D0=B2=D1=82, 24 =D0=BC=D0=B0=D1=8F 2022 =D0=B3. =D0=B2 19:21, Jernej =C5= =A0krabec : > > > > Dne torek, 24. maj 2022 ob 17:31:13 CEST je Roman Stratiienko napisal(a= ): > > > NAK for this. Further testing showed such an approach is not reliable > > > due to .atomic_update() callback called only in case planes have some > > > changes. > > > > Additionally, I think it would be better to fix underlaying zpos issue = first > > (attempted many times) and then worry about blending. > > > > Best regards, > > Jernej > > > > > > > > =D0=B2=D1=82, 24 =D0=BC=D0=B0=D1=8F 2022 =D0=B3. =D0=B2 16:52, Roman = Stratiienko : > > > > > > > > Corruption happens when plane zpos is updated > > > > > > > > Example scenario: > > > > > > > > Initial frame blender state: > > > > PLANE_ZPOS =3D {0, 1, 2, 3} > > > > BLD_ROUTE =3D {0, 1, 2, 0} > > > > BLD_EN =3D {1, 1, 1, 0} > > > > > > > > New frame commit (Only ZPOS has been changed): > > > > > > > > PLANE_ZPOS =3D {0->2, 1->0, 2->1, 3} > > > > > > > > Expected results after plane state update: > > > > Z0 Z1 Z2 Z3 > > > > BLD_ROUTE =3D {1, 2, 0, 0} > > > > BLD_EN =3D {1, 1, 1, 0} > > > > > > > > What is currently happening: > > > > > > > > 1. sun8i_vi_layer_enable(enabled=3Dtrue, zpos=3D2, old_zpos=3D0): > > > > BLD_ROUTE =3D {1->0, 1, 2->0, 0} > > > > BLD_EN =3D {1->0, 1, 1->1, 0} > > > > > > > > 2. sun8i_ui_layer_enable(enabled=3Dtrue, zpos=3D0, old_zpos=3D1): > > > > BLD_ROUTE =3D {0->1, 1->0, 0, 0} > > > > BLD_EN =3D {0->1, 1->0, 1, 0} > > > > > > > > 3. sun8i_ui_layer_enable(enabled=3Dtrue, zpos=3D1, old_zpos=3D2): > > > > BLD_ROUTE =3D {1, 0->2, 0->0, 0} > > > > BLD_EN =3D {1, 0->2, 1->0, 0} > > > > > > > > After updating of all the planes we are ending up with BLD_EN[2]=3D= 0, > > > > which makes this channel disabled. > > > > > > > > To fix this issue, clear BLEND registers before updating the planes > > > > and do not clear the old state while processing every plane. > > > > > > > > Signed-off-by: Roman Stratiienko > > > > --- > > > > drivers/gpu/drm/sun4i/sun8i_mixer.c | 16 +++++++++++++++ > > > > drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 28 +++ +---------------------- > > > > drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 28 +++ +---------------------- > > > > 3 files changed, 24 insertions(+), 48 deletions(-) > > > > > > > > diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/ sun4i/ > > sun8i_mixer.c > > > > index f5e8aeaa3cdf..004377a000fc 100644 > > > > --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c > > > > +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c > > > > @@ -248,6 +248,21 @@ int sun8i_mixer_drm_format_to_hw(u32 format, u= 32 > > *hw_format) > > > > return -EINVAL; > > > > } > > > > > > > > +static void sun8i_atomic_begin(struct sunxi_engine *engine, > > > > + struct drm_crtc_state *old_state) > > > > +{ > > > > + struct sun8i_mixer *mixer =3D engine_to_sun8i_mixer(engine); > > > > + u32 bld_base =3D sun8i_blender_base(mixer); > > > > + > > > > + regmap_write(engine->regs, > > > > + SUN8I_MIXER_BLEND_PIPE_CTL(bld_base), > > > > + 0); > > > > + > > > > + regmap_write(engine->regs, > > > > + SUN8I_MIXER_BLEND_ROUTE(bld_base), > > > > + 0); > > > > +} > > > > + > > > > static void sun8i_mixer_commit(struct sunxi_engine *engine) > > > > { > > > > DRM_DEBUG_DRIVER("Committing changes\n"); > > > > @@ -299,6 +314,7 @@ static struct drm_plane **sun8i_layers_init(str= uct > > drm_device *drm, > > > > } > > > > > > > > static const struct sunxi_engine_ops sun8i_engine_ops =3D { > > > > + .atomic_begin =3D sun8i_atomic_begin, > > > > .commit =3D sun8i_mixer_commit, > > > > .layers_init =3D sun8i_layers_init, > > > > }; > > > > diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/d= rm/ > > sun4i/sun8i_ui_layer.c > > > > index 7845c2a53a7f..b294a882626a 100644 > > > > --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c > > > > +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c > > > > @@ -24,8 +24,7 @@ > > > > #include "sun8i_ui_scaler.h" > > > > > > > > static void sun8i_ui_layer_enable(struct sun8i_mixer *mixer, int=20 channel, > > > > - int overlay, bool enable, unsigne= d=20 int > > zpos, > > > > - unsigned int old_zpos) > > > > + int overlay, bool enable, unsigne= d=20 int > > zpos) > > > > { > > > > u32 val, bld_base, ch_base; > > > > > > > > @@ -44,18 +43,6 @@ static void sun8i_ui_layer_enable(struct=20 sun8i_mixer > > *mixer, int channel, > > > > SUN8I_MIXER_CHAN_UI_LAYER_ATTR(ch_base, > > overlay), > > > > SUN8I_MIXER_CHAN_UI_LAYER_ATTR_EN, val); > > > > > > > > - if (!enable || zpos !=3D old_zpos) { > > > > - regmap_update_bits(mixer->engine.regs, > > > > - =20 SUN8I_MIXER_BLEND_PIPE_CTL(bld_base), > > > > - > > SUN8I_MIXER_BLEND_PIPE_CTL_EN(old_zpos), > > > > - 0); > > > > - > > > > - regmap_update_bits(mixer->engine.regs, > > > > - SUN8I_MIXER_BLEND_ROUTE(bld_base= ), > > > > - > > SUN8I_MIXER_BLEND_ROUTE_PIPE_MSK(old_zpos), > > > > - 0); > > > > - } > > > > - > > > > if (enable) { > > > > val =3D SUN8I_MIXER_BLEND_PIPE_CTL_EN(zpos); > > > > > > > > @@ -291,31 +278,24 @@ static int sun8i_ui_layer_atomic_check(struct > > drm_plane *plane, > > > > static void sun8i_ui_layer_atomic_disable(struct drm_plane *plane, > > > > struct drm_atomic_state=20 *state) > > > > { > > > > - struct drm_plane_state *old_state =3D > > drm_atomic_get_old_plane_state(state, > > > > - > > plane); > > > > struct sun8i_ui_layer *layer =3D plane_to_sun8i_ui_layer(pl= ane); > > > > - unsigned int old_zpos =3D old_state->normalized_zpos; > > > > struct sun8i_mixer *mixer =3D layer->mixer; > > > > > > > > - sun8i_ui_layer_enable(mixer, layer->channel, layer->overlay, > > false, 0, > > > > - old_zpos); > > > > + sun8i_ui_layer_enable(mixer, layer->channel, layer->overlay, > > false, 0); > > > > } > > > > > > > > static void sun8i_ui_layer_atomic_update(struct drm_plane *plane, > > > > struct drm_atomic_state=20 *state) > > > > { > > > > - struct drm_plane_state *old_state =3D > > drm_atomic_get_old_plane_state(state, > > > > - > > plane); > > > > struct drm_plane_state *new_state =3D > > drm_atomic_get_new_plane_state(state, > > > > > > plane); > > > > struct sun8i_ui_layer *layer =3D plane_to_sun8i_ui_layer(pl= ane); > > > > unsigned int zpos =3D new_state->normalized_zpos; > > > > - unsigned int old_zpos =3D old_state->normalized_zpos; > > > > struct sun8i_mixer *mixer =3D layer->mixer; > > > > > > > > if (!new_state->visible) { > > > > sun8i_ui_layer_enable(mixer, layer->channel, > > > > - layer->overlay, false, 0,=20 old_zpos); > > > > + layer->overlay, false, 0); > > > > return; > > > > } > > > > > > > > @@ -328,7 +308,7 @@ static void sun8i_ui_layer_atomic_update(struct > > drm_plane *plane, > > > > sun8i_ui_layer_update_buffer(mixer, layer->channel, > > > > layer->overlay, plane); > > > > sun8i_ui_layer_enable(mixer, layer->channel, layer->overlay, > > > > - true, zpos, old_zpos); > > > > + true, zpos); > > > > } > > > > > > > > static const struct drm_plane_helper_funcs=20 sun8i_ui_layer_helper_funcs =3D > > { > > > > diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/d= rm/ > > sun4i/sun8i_vi_layer.c > > > > index bb7c43036dfa..4653244b2fd8 100644 > > > > --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c > > > > +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c > > > > @@ -18,8 +18,7 @@ > > > > #include "sun8i_vi_scaler.h" > > > > > > > > static void sun8i_vi_layer_enable(struct sun8i_mixer *mixer, int=20 channel, > > > > - int overlay, bool enable, unsigne= d=20 int > > zpos, > > > > - unsigned int old_zpos) > > > > + int overlay, bool enable, unsigne= d=20 int > > zpos) > > > > { > > > > u32 val, bld_base, ch_base; > > > > > > > > @@ -38,18 +37,6 @@ static void sun8i_vi_layer_enable(struct=20 sun8i_mixer > > *mixer, int channel, > > > > SUN8I_MIXER_CHAN_VI_LAYER_ATTR(ch_base, > > overlay), > > > > SUN8I_MIXER_CHAN_VI_LAYER_ATTR_EN, val); > > > > > > > > - if (!enable || zpos !=3D old_zpos) { > > > > - regmap_update_bits(mixer->engine.regs, > > > > - =20 SUN8I_MIXER_BLEND_PIPE_CTL(bld_base), > > > > - > > SUN8I_MIXER_BLEND_PIPE_CTL_EN(old_zpos), > > > > - 0); > > > > - > > > > - regmap_update_bits(mixer->engine.regs, > > > > - SUN8I_MIXER_BLEND_ROUTE(bld_base= ), > > > > - > > SUN8I_MIXER_BLEND_ROUTE_PIPE_MSK(old_zpos), > > > > - 0); > > > > - } > > > > - > > > > if (enable) { > > > > val =3D SUN8I_MIXER_BLEND_PIPE_CTL_EN(zpos); > > > > > > > > @@ -395,31 +382,24 @@ static int sun8i_vi_layer_atomic_check(struct > > drm_plane *plane, > > > > static void sun8i_vi_layer_atomic_disable(struct drm_plane *plane, > > > > struct drm_atomic_state=20 *state) > > > > { > > > > - struct drm_plane_state *old_state =3D > > drm_atomic_get_old_plane_state(state, > > > > - > > plane); > > > > struct sun8i_vi_layer *layer =3D plane_to_sun8i_vi_layer(pl= ane); > > > > - unsigned int old_zpos =3D old_state->normalized_zpos; > > > > struct sun8i_mixer *mixer =3D layer->mixer; > > > > > > > > - sun8i_vi_layer_enable(mixer, layer->channel, layer->overlay, > > false, 0, > > > > - old_zpos); > > > > + sun8i_vi_layer_enable(mixer, layer->channel, layer->overlay, > > false, 0); > > > > } > > > > > > > > static void sun8i_vi_layer_atomic_update(struct drm_plane *plane, > > > > struct drm_atomic_state=20 *state) > > > > { > > > > - struct drm_plane_state *old_state =3D > > drm_atomic_get_old_plane_state(state, > > > > - > > plane); > > > > struct drm_plane_state *new_state =3D > > drm_atomic_get_new_plane_state(state, > > > > > > plane); > > > > struct sun8i_vi_layer *layer =3D plane_to_sun8i_vi_layer(pl= ane); > > > > unsigned int zpos =3D new_state->normalized_zpos; > > > > - unsigned int old_zpos =3D old_state->normalized_zpos; > > > > struct sun8i_mixer *mixer =3D layer->mixer; > > > > > > > > if (!new_state->visible) { > > > > sun8i_vi_layer_enable(mixer, layer->channel, > > > > - layer->overlay, false, 0,=20 old_zpos); > > > > + layer->overlay, false, 0); > > > > return; > > > > } > > > > > > > > @@ -432,7 +412,7 @@ static void sun8i_vi_layer_atomic_update(struct > > drm_plane *plane, > > > > sun8i_vi_layer_update_buffer(mixer, layer->channel, > > > > layer->overlay, plane); > > > > sun8i_vi_layer_enable(mixer, layer->channel, layer->overlay, > > > > - true, zpos, old_zpos); > > > > + true, zpos); > > > > } > > > > > > > > static const struct drm_plane_helper_funcs=20 sun8i_vi_layer_helper_funcs =3D > > { > > > > -- > > > > 2.30.2 > > > > > > > > > > > >=20 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id BB38FC433F5 for ; Tue, 24 May 2022 19:14:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Z/fkMrdQPCvA4nI6p+ZUj5gzWDVP4MqIM0j4suhieXg=; b=nRNBWWS4LBqLqk SYimcbo5A3vdOGiXjiWq+8VU82cSuY8HV8yMOxhgXgixIOpWm7GP7MHvEO2fbRk1K1uTRI8sVOJOn eo0PRpjHx11CAyoXw/O+N+qTNRe2qmD8eTaLB8wBhmaHANVYKDwcXPCMEruJRcgsbm5Rp3IVeRuOj 3505cojl6Lckez3L6QYynw6qwGF+IpwlWRoAt0nuw+sQbCe+6nZqcCenrFDAIpfqWkCe2jk7qfncv lnpW9ozZJVUUe5p6VhqkxNt/UFMlQTg57WXOvGeOlscjsKciE1eDv/IrTUjCwNQSKY+W3qAmZEmDo tHO4ZfMyI2Eou40JI7Qw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ntZyD-008zX5-K9; Tue, 24 May 2022 19:13:29 +0000 Received: from mail-ej1-x630.google.com ([2a00:1450:4864:20::630]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ntZy9-008zWP-VR for linux-arm-kernel@lists.infradead.org; Tue, 24 May 2022 19:13:28 +0000 Received: by mail-ej1-x630.google.com with SMTP id gi33so28790828ejc.3 for ; Tue, 24 May 2022 12:13:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=nzsyUlkyiS/YzaEgtysgXXKOHxgS0XkeH6XhZ/9DzcI=; b=RAoVNQlaMYx37KumXh0hGrjUwAjD0INuS3O9Hxop0qlfjBSf2o+baBodGl+Ft/fYKU rM8ZNU7pRsVNKqt/TUCl31WwE347eoFxkd/3FBxIAYmOt8b/NafU1Hgb154V7KcDvCGf hA3sp8LCOpYW71ANq3ZzVex53wuQObEsodF0Hv0hPEHeo44VkLvCS53sOJDRzfl8Ad0q FHnxZ5KPFoCoqkhe2oX/69b0A7DQklL4H7zIBr9+nOpv+5U8gy0058MF3eaIIVn/vixc OhaGfs932+BEJ+OcHt/6P0v/3I4BSzn4A4AgSxzn09zrtYJuJpLmSyVz8uXaNzYGMP67 f3hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=nzsyUlkyiS/YzaEgtysgXXKOHxgS0XkeH6XhZ/9DzcI=; b=TivFgqpH0RGKKxMLrW5ldx9KIMmNwZq1Na5YBirjw7Sq/ucN/IkI99xP6yM+e411wT qxLFLwSLLwnLtXwm1kCn3VX89pCIkU91WZ9sspvKg0eBRl6GSg1ZUSsTLifLWcnUGboF sdIZEYvErmMSCh9hthsgCmWRGIV3xo0nO/f3j75zUGYIyo6iMWhAUCZl2PCrXVZ7XGwl 9ab5Foku4ZXizozerNweUKJ/FS6JPVNayZCSaDK6/K3oNlqw074ZGmOGKzOGhCfHu/L3 Igf2m2vzT+Yvp13k15aXSwIa1yvG60Pt4eKZsROonIh/CsG37f40yMp6UZOAlUUbkIn9 AXJw== X-Gm-Message-State: AOAM530hhOuiybXKHZPFXRSdSYQ3OxXGqgxt4jRFRsRkZ+gWBQUlKPrS X9t+odskPFHpi5m6r+faz60= X-Google-Smtp-Source: ABdhPJwhIiB5LNWsM05p3UmylLy75saiNErANV1vYibc3/Mqe36oT9Gg7y+M+UJk+GivHhVotPQUMw== X-Received: by 2002:a17:907:7fa8:b0:6f3:e975:abfa with SMTP id qk40-20020a1709077fa800b006f3e975abfamr25545210ejc.86.1653419602162; Tue, 24 May 2022 12:13:22 -0700 (PDT) Received: from kista.localnet (213-161-3-76.dynamic.telemach.net. [213.161.3.76]) by smtp.gmail.com with ESMTPSA id p15-20020a05640210cf00b0042aaa3b741esm9769308edu.1.2022.05.24.12.13.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 May 2022 12:13:21 -0700 (PDT) From: Jernej =?utf-8?B?xaBrcmFiZWM=?= To: Roman Stratiienko Cc: mripard@kernel.org, wens@csie.org, airlied@linux.ie, Daniel Vetter , Samuel Holland , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, megi@xff.cz Subject: Re: Re: Re: [PATCH] drm/sun4i: Fix blend registers corruption for DE2.0/DE3.0 Date: Tue, 24 May 2022 21:13:20 +0200 Message-ID: <2827541.e9J7NaK4W3@kista> In-Reply-To: References: <20220524135249.49993-1-roman.o.stratiienko@globallogic.com> <2629819.mvXUDI8C0e@kista> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220524_121326_064467_3E161228 X-CRM114-Status: GOOD ( 30.02 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RG9uJ3QgdG9wIHBvc3QsIGl0J3MgYW5ub3lpbmcgYW5kIGFnYWluc3QgcnVsZXMuCgpEbmUgdG9y ZWssIDI0LiBtYWogMjAyMiBvYiAxOToxMDowNiBDRVNUIGplIFJvbWFuIFN0cmF0aWllbmtvIG5h cGlzYWwoYSk6Cj4gUGxlYXNlIGRyYWZ0IGEgdGVzdCBmb3IgdGhlIHpwb3MgaXNzdWUgeW91J3Jl IG1lbnRpb25pbmcuCj4gCj4gSXQncyB2ZXJ5IGVhc3kgdG8gZG8gd2l0aCBrbXN4eCB1c2luZyBw eXRob24gd3JhcHBlci4KPiAKPiBPciBleHBsYWluIHN0ZXBzIHRvIHJlcHJvZHVjZSBoZXJlLCBJ IHdpbGwgd3JpdGUgaXQgYnkgbXlzZWxmLgoKSSdtIHRhbGtpbmcgYWJvdXQgdGhlIGlzc3VlIHdo aWNoIHlvdSwgT25kcmVqIEppcm1hbiBhbmQgbWUgYWxsIHRyaWVkIHRvIGZpeCBpdCAKaW4gdGhl IHBhc3Qgb25lIHdheSBvciBhbm90aGVyOgoKaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9w cm9qZWN0L2RyaS1kZXZlbC9wYXRjaC8yMDE5MDkxNDIyMDMzNy42NDY3MTktMS1tZWdvdXNAbWVn b3VzLmNvbS8KaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wcm9qZWN0L2RyaS1kZXZlbC9w YXRjaC8yMDIxMDEwNjIwNDYzMC4xODAwMjg0LTEtamVybmVqLnNrcmFiZWNAc2lvbC5uZXQvCgpC ZXN0IHJlZ2FyZHMsCkplcm5lagoKPiAKPiBUaGFua3MuCj4gUmVnYXJkcwo+IFJvbWFuCj4gCj4g 0LLRgiwgMjQg0LzQsNGPIDIwMjIg0LMuINCyIDE5OjIxLCBKZXJuZWogxaBrcmFiZWMgPGplcm5l ai5za3JhYmVjQGdtYWlsLmNvbT46Cj4gPgo+ID4gRG5lIHRvcmVrLCAyNC4gbWFqIDIwMjIgb2Ig MTc6MzE6MTMgQ0VTVCBqZSBSb21hbiBTdHJhdGlpZW5rbyBuYXBpc2FsKGEpOgo+ID4gPiBOQUsg Zm9yIHRoaXMuIEZ1cnRoZXIgdGVzdGluZyBzaG93ZWQgc3VjaCBhbiBhcHByb2FjaCBpcyBub3Qg cmVsaWFibGUKPiA+ID4gZHVlIHRvIC5hdG9taWNfdXBkYXRlKCkgY2FsbGJhY2sgY2FsbGVkIG9u bHkgaW4gY2FzZSBwbGFuZXMgaGF2ZSBzb21lCj4gPiA+IGNoYW5nZXMuCj4gPgo+ID4gQWRkaXRp b25hbGx5LCBJIHRoaW5rIGl0IHdvdWxkIGJlIGJldHRlciB0byBmaXggdW5kZXJsYXlpbmcgenBv cyBpc3N1ZSBmaXJzdAo+ID4gKGF0dGVtcHRlZCBtYW55IHRpbWVzKSBhbmQgdGhlbiB3b3JyeSBh Ym91dCBibGVuZGluZy4KPiA+Cj4gPiBCZXN0IHJlZ2FyZHMsCj4gPiBKZXJuZWoKPiA+Cj4gPiA+ Cj4gPiA+INCy0YIsIDI0INC80LDRjyAyMDIyINCzLiDQsiAxNjo1MiwgUm9tYW4gU3RyYXRpaWVu a28gPHIuc3RyYXRpaWVua29AZ21haWwuY29tPjoKPiA+ID4gPgo+ID4gPiA+IENvcnJ1cHRpb24g aGFwcGVucyB3aGVuIHBsYW5lIHpwb3MgaXMgdXBkYXRlZAo+ID4gPiA+Cj4gPiA+ID4gRXhhbXBs ZSBzY2VuYXJpbzoKPiA+ID4gPgo+ID4gPiA+IEluaXRpYWwgZnJhbWUgYmxlbmRlciBzdGF0ZToK PiA+ID4gPiAgICAgUExBTkVfWlBPUyA9IHswLCAxLCAyLCAzfQo+ID4gPiA+ICAgICBCTERfUk9V VEUgID0gezAsIDEsIDIsIDB9Cj4gPiA+ID4gICAgIEJMRF9FTiAgICAgPSB7MSwgMSwgMSwgMH0K PiA+ID4gPgo+ID4gPiA+IE5ldyBmcmFtZSBjb21taXQgKE9ubHkgWlBPUyBoYXMgYmVlbiBjaGFu Z2VkKToKPiA+ID4gPgo+ID4gPiA+ICAgICBQTEFORV9aUE9TID0gezAtPjIsIDEtPjAsIDItPjEs IDN9Cj4gPiA+ID4KPiA+ID4gPiBFeHBlY3RlZCByZXN1bHRzIGFmdGVyIHBsYW5lIHN0YXRlIHVw ZGF0ZToKPiA+ID4gPiAgICAgICAgICAgICAgICAgWjAgWjEgWjIgWjMKPiA+ID4gPiAgICAgQkxE X1JPVVRFID0gezEsIDIsIDAsIDB9Cj4gPiA+ID4gICAgIEJMRF9FTiAgICA9IHsxLCAxLCAxLCAw fQo+ID4gPiA+Cj4gPiA+ID4gV2hhdCBpcyBjdXJyZW50bHkgaGFwcGVuaW5nOgo+ID4gPiA+Cj4g PiA+ID4gMS4gc3VuOGlfdmlfbGF5ZXJfZW5hYmxlKGVuYWJsZWQ9dHJ1ZSwgenBvcz0yLCBvbGRf enBvcz0wKToKPiA+ID4gPiAgICAgQkxEX1JPVVRFID0gezEtPjAsIDEsIDItPjAsIDB9Cj4gPiA+ ID4gICAgIEJMRF9FTiAgICA9IHsxLT4wLCAxLCAxLT4xLCAwfQo+ID4gPiA+Cj4gPiA+ID4gMi4g c3VuOGlfdWlfbGF5ZXJfZW5hYmxlKGVuYWJsZWQ9dHJ1ZSwgenBvcz0wLCBvbGRfenBvcz0xKToK PiA+ID4gPiAgICAgQkxEX1JPVVRFID0gezAtPjEsIDEtPjAsIDAsIDB9Cj4gPiA+ID4gICAgIEJM RF9FTiAgICA9IHswLT4xLCAxLT4wLCAxLCAwfQo+ID4gPiA+Cj4gPiA+ID4gMy4gc3VuOGlfdWlf bGF5ZXJfZW5hYmxlKGVuYWJsZWQ9dHJ1ZSwgenBvcz0xLCBvbGRfenBvcz0yKToKPiA+ID4gPiAg ICAgQkxEX1JPVVRFID0gezEsIDAtPjIsIDAtPjAsIDB9Cj4gPiA+ID4gICAgIEJMRF9FTiAgICA9 IHsxLCAwLT4yLCAxLT4wLCAwfQo+ID4gPiA+Cj4gPiA+ID4gQWZ0ZXIgdXBkYXRpbmcgb2YgYWxs IHRoZSBwbGFuZXMgd2UgYXJlIGVuZGluZyB1cCB3aXRoIEJMRF9FTlsyXT0wLAo+ID4gPiA+IHdo aWNoIG1ha2VzIHRoaXMgY2hhbm5lbCBkaXNhYmxlZC4KPiA+ID4gPgo+ID4gPiA+IFRvIGZpeCB0 aGlzIGlzc3VlLCBjbGVhciBCTEVORCByZWdpc3RlcnMgYmVmb3JlIHVwZGF0aW5nIHRoZSBwbGFu ZXMKPiA+ID4gPiBhbmQgZG8gbm90IGNsZWFyIHRoZSBvbGQgc3RhdGUgd2hpbGUgcHJvY2Vzc2lu ZyBldmVyeSBwbGFuZS4KPiA+ID4gPgo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFJvbWFuIFN0cmF0 aWllbmtvIDxyb21hbi5vLnN0cmF0aWllbmtvQGdsb2JhbGxvZ2ljLmNvbT4KPiA+ID4gPiAtLS0K PiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjhpX21peGVyLmMgICAgfCAxNiArKysr KysrKysrKysrKysKPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjhpX3VpX2xheWVy LmMgfCAyOCArKysKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ID4gPiAgZHJpdmVycy9ncHUv ZHJtL3N1bjRpL3N1bjhpX3ZpX2xheWVyLmMgfCAyOCArKysKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KPiA+ID4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA0OCBkZWxldGlv bnMoLSkKPiA+ID4gPgo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vc3VuNGkv c3VuOGlfbWl4ZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS8Kc3VuNGkvCj4gPiBzdW44aV9taXhlci5j Cj4gPiA+ID4gaW5kZXggZjVlOGFlYWEzY2RmLi4wMDQzNzdhMDAwZmMgMTAwNjQ0Cj4gPiA+ID4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjhpX21peGVyLmMKPiA+ID4gPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vc3VuNGkvc3VuOGlfbWl4ZXIuYwo+ID4gPiA+IEBAIC0yNDgsNiArMjQ4 LDIxIEBAIGludCBzdW44aV9taXhlcl9kcm1fZm9ybWF0X3RvX2h3KHUzMiBmb3JtYXQsIHUzMgo+ ID4gKmh3X2Zvcm1hdCkKPiA+ID4gPiAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gPiA+ICB9 Cj4gPiA+ID4KPiA+ID4gPiArc3RhdGljIHZvaWQgc3VuOGlfYXRvbWljX2JlZ2luKHN0cnVjdCBz dW54aV9lbmdpbmUgKmVuZ2luZSwKPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfc3RhdGUpCj4gPiA+ID4gK3sKPiA+ID4gPiAr ICAgICAgIHN0cnVjdCBzdW44aV9taXhlciAqbWl4ZXIgPSBlbmdpbmVfdG9fc3VuOGlfbWl4ZXIo ZW5naW5lKTsKPiA+ID4gPiArICAgICAgIHUzMiBibGRfYmFzZSA9IHN1bjhpX2JsZW5kZXJfYmFz ZShtaXhlcik7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgcmVnbWFwX3dyaXRlKGVuZ2luZS0+ cmVncywKPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICBTVU44SV9NSVhFUl9CTEVORF9QSVBF X0NUTChibGRfYmFzZSksCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgMCk7Cj4gPiA+ID4g Kwo+ID4gPiA+ICsgICAgICAgcmVnbWFwX3dyaXRlKGVuZ2luZS0+cmVncywKPiA+ID4gPiArICAg ICAgICAgICAgICAgICAgICBTVU44SV9NSVhFUl9CTEVORF9ST1VURShibGRfYmFzZSksCj4gPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgMCk7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4g IHN0YXRpYyB2b2lkIHN1bjhpX21peGVyX2NvbW1pdChzdHJ1Y3Qgc3VueGlfZW5naW5lICplbmdp bmUpCj4gPiA+ID4gIHsKPiA+ID4gPiAgICAgICAgIERSTV9ERUJVR19EUklWRVIoIkNvbW1pdHRp bmcgY2hhbmdlc1xuIik7Cj4gPiA+ID4gQEAgLTI5OSw2ICszMTQsNyBAQCBzdGF0aWMgc3RydWN0 IGRybV9wbGFuZSAqKnN1bjhpX2xheWVyc19pbml0KHN0cnVjdAo+ID4gZHJtX2RldmljZSAqZHJt LAo+ID4gPiA+ICB9Cj4gPiA+ID4KPiA+ID4gPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBzdW54aV9l bmdpbmVfb3BzIHN1bjhpX2VuZ2luZV9vcHMgPSB7Cj4gPiA+ID4gKyAgICAgICAuYXRvbWljX2Jl Z2luICAgPSBzdW44aV9hdG9taWNfYmVnaW4sCj4gPiA+ID4gICAgICAgICAuY29tbWl0ICAgICAg ICAgPSBzdW44aV9taXhlcl9jb21taXQsCj4gPiA+ID4gICAgICAgICAubGF5ZXJzX2luaXQgICAg PSBzdW44aV9sYXllcnNfaW5pdCwKPiA+ID4gPiAgfTsKPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3N1bjRpL3N1bjhpX3VpX2xheWVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vCj4g PiBzdW40aS9zdW44aV91aV9sYXllci5jCj4gPiA+ID4gaW5kZXggNzg0NWMyYTUzYTdmLi5iMjk0 YTg4MjYyNmEgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjhp X3VpX2xheWVyLmMKPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vc3VuNGkvc3VuOGlfdWlf bGF5ZXIuYwo+ID4gPiA+IEBAIC0yNCw4ICsyNCw3IEBACj4gPiA+ID4gICNpbmNsdWRlICJzdW44 aV91aV9zY2FsZXIuaCIKPiA+ID4gPgo+ID4gPiA+ICBzdGF0aWMgdm9pZCBzdW44aV91aV9sYXll cl9lbmFibGUoc3RydWN0IHN1bjhpX21peGVyICptaXhlciwgaW50IApjaGFubmVsLAo+ID4gPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3ZlcmxheSwgYm9vbCBlbmFi bGUsIHVuc2lnbmVkIAppbnQKPiA+IHpwb3MsCj4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBvbGRfenBvcykKPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IG92ZXJsYXksIGJvb2wgZW5hYmxlLCB1bnNpZ25lZCAK aW50Cj4gPiB6cG9zKQo+ID4gPiA+ICB7Cj4gPiA+ID4gICAgICAgICB1MzIgdmFsLCBibGRfYmFz ZSwgY2hfYmFzZTsKPiA+ID4gPgo+ID4gPiA+IEBAIC00NCwxOCArNDMsNiBAQCBzdGF0aWMgdm9p ZCBzdW44aV91aV9sYXllcl9lbmFibGUoc3RydWN0IApzdW44aV9taXhlcgo+ID4gKm1peGVyLCBp bnQgY2hhbm5lbCwKPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVU44SV9NSVhF Ul9DSEFOX1VJX0xBWUVSX0FUVFIoY2hfYmFzZSwKPiA+IG92ZXJsYXkpLAo+ID4gPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFNVTjhJX01JWEVSX0NIQU5fVUlfTEFZRVJfQVRUUl9FTiwg dmFsKTsKPiA+ID4gPgo+ID4gPiA+IC0gICAgICAgaWYgKCFlbmFibGUgfHwgenBvcyAhPSBvbGRf enBvcykgewo+ID4gPiA+IC0gICAgICAgICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMobWl4ZXIt PmVuZ2luZS5yZWdzLAo+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ClNVTjhJX01JWEVSX0JMRU5EX1BJUEVfQ1RMKGJsZF9iYXNlKSwKPiA+ID4gPiAtCj4gPiBTVU44 SV9NSVhFUl9CTEVORF9QSVBFX0NUTF9FTihvbGRfenBvcyksCj4gPiA+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAwKTsKPiA+ID4gPiAtCj4gPiA+ID4gLSAgICAgICAgICAg ICAgIHJlZ21hcF91cGRhdGVfYml0cyhtaXhlci0+ZW5naW5lLnJlZ3MsCj4gPiA+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVU44SV9NSVhFUl9CTEVORF9ST1VURShibGRf YmFzZSksCj4gPiA+ID4gLQo+ID4gU1VOOElfTUlYRVJfQkxFTkRfUk9VVEVfUElQRV9NU0sob2xk X3pwb3MpLAo+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Cj4g PiA+ID4gLSAgICAgICB9Cj4gPiA+ID4gLQo+ID4gPiA+ICAgICAgICAgaWYgKGVuYWJsZSkgewo+ ID4gPiA+ICAgICAgICAgICAgICAgICB2YWwgPSBTVU44SV9NSVhFUl9CTEVORF9QSVBFX0NUTF9F Tih6cG9zKTsKPiA+ID4gPgo+ID4gPiA+IEBAIC0yOTEsMzEgKzI3OCwyNCBAQCBzdGF0aWMgaW50 IHN1bjhpX3VpX2xheWVyX2F0b21pY19jaGVjayhzdHJ1Y3QKPiA+IGRybV9wbGFuZSAqcGxhbmUs Cj4gPiA+ID4gIHN0YXRpYyB2b2lkIHN1bjhpX3VpX2xheWVyX2F0b21pY19kaXNhYmxlKHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlIAoqc3RhdGUpCj4gPiA+ID4gIHsK PiA+ID4gPiAtICAgICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSA9Cj4gPiBk cm1fYXRvbWljX2dldF9vbGRfcGxhbmVfc3RhdGUoc3RhdGUsCj4gPiA+ID4gLQo+ID4gcGxhbmUp Owo+ID4gPiA+ICAgICAgICAgc3RydWN0IHN1bjhpX3VpX2xheWVyICpsYXllciA9IHBsYW5lX3Rv X3N1bjhpX3VpX2xheWVyKHBsYW5lKTsKPiA+ID4gPiAtICAgICAgIHVuc2lnbmVkIGludCBvbGRf enBvcyA9IG9sZF9zdGF0ZS0+bm9ybWFsaXplZF96cG9zOwo+ID4gPiA+ICAgICAgICAgc3RydWN0 IHN1bjhpX21peGVyICptaXhlciA9IGxheWVyLT5taXhlcjsKPiA+ID4gPgo+ID4gPiA+IC0gICAg ICAgc3VuOGlfdWlfbGF5ZXJfZW5hYmxlKG1peGVyLCBsYXllci0+Y2hhbm5lbCwgbGF5ZXItPm92 ZXJsYXksCj4gPiBmYWxzZSwgMCwKPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvbGRfenBvcyk7Cj4gPiA+ID4gKyAgICAgICBzdW44aV91aV9sYXllcl9lbmFibGUobWl4ZXIs IGxheWVyLT5jaGFubmVsLCBsYXllci0+b3ZlcmxheSwKPiA+IGZhbHNlLCAwKTsKPiA+ID4gPiAg fQo+ID4gPiA+Cj4gPiA+ID4gIHN0YXRpYyB2b2lkIHN1bjhpX3VpX2xheWVyX2F0b21pY191cGRh dGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAKKnN0YXRlKQo+ID4g PiA+ICB7Cj4gPiA+ID4gLSAgICAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfc3RhdGUg PQo+ID4gZHJtX2F0b21pY19nZXRfb2xkX3BsYW5lX3N0YXRlKHN0YXRlLAo+ID4gPiA+IC0KPiA+ IHBsYW5lKTsKPiA+ID4gPiAgICAgICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm5ld19zdGF0 ZSA9Cj4gPiBkcm1fYXRvbWljX2dldF9uZXdfcGxhbmVfc3RhdGUoc3RhdGUsCj4gPiA+ID4KPiA+ IHBsYW5lKTsKPiA+ID4gPiAgICAgICAgIHN0cnVjdCBzdW44aV91aV9sYXllciAqbGF5ZXIgPSBw bGFuZV90b19zdW44aV91aV9sYXllcihwbGFuZSk7Cj4gPiA+ID4gICAgICAgICB1bnNpZ25lZCBp bnQgenBvcyA9IG5ld19zdGF0ZS0+bm9ybWFsaXplZF96cG9zOwo+ID4gPiA+IC0gICAgICAgdW5z aWduZWQgaW50IG9sZF96cG9zID0gb2xkX3N0YXRlLT5ub3JtYWxpemVkX3pwb3M7Cj4gPiA+ID4g ICAgICAgICBzdHJ1Y3Qgc3VuOGlfbWl4ZXIgKm1peGVyID0gbGF5ZXItPm1peGVyOwo+ID4gPiA+ Cj4gPiA+ID4gICAgICAgICBpZiAoIW5ld19zdGF0ZS0+dmlzaWJsZSkgewo+ID4gPiA+ICAgICAg ICAgICAgICAgICBzdW44aV91aV9sYXllcl9lbmFibGUobWl4ZXIsIGxheWVyLT5jaGFubmVsLAo+ ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXItPm92ZXJs YXksIGZhbHNlLCAwLCAKb2xkX3pwb3MpOwo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbGF5ZXItPm92ZXJsYXksIGZhbHNlLCAwKTsKPiA+ID4gPiAgICAgICAg ICAgICAgICAgcmV0dXJuOwo+ID4gPiA+ICAgICAgICAgfQo+ID4gPiA+Cj4gPiA+ID4gQEAgLTMy OCw3ICszMDgsNyBAQCBzdGF0aWMgdm9pZCBzdW44aV91aV9sYXllcl9hdG9taWNfdXBkYXRlKHN0 cnVjdAo+ID4gZHJtX3BsYW5lICpwbGFuZSwKPiA+ID4gPiAgICAgICAgIHN1bjhpX3VpX2xheWVy X3VwZGF0ZV9idWZmZXIobWl4ZXIsIGxheWVyLT5jaGFubmVsLAo+ID4gPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci0+b3ZlcmxheSwgcGxhbmUpOwo+ID4gPiA+ ICAgICAgICAgc3VuOGlfdWlfbGF5ZXJfZW5hYmxlKG1peGVyLCBsYXllci0+Y2hhbm5lbCwgbGF5 ZXItPm92ZXJsYXksCj4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwg enBvcywgb2xkX3pwb3MpOwo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRy dWUsIHpwb3MpOwo+ID4gPiA+ICB9Cj4gPiA+ID4KPiA+ID4gPiAgc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzIApzdW44aV91aV9sYXllcl9oZWxwZXJfZnVuY3MgPQo+ ID4gewo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vc3VuNGkvc3VuOGlfdmlf bGF5ZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS8KPiA+IHN1bjRpL3N1bjhpX3ZpX2xheWVyLmMKPiA+ ID4gPiBpbmRleCBiYjdjNDMwMzZkZmEuLjQ2NTMyNDRiMmZkOCAxMDA2NDQKPiA+ID4gPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vc3VuNGkvc3VuOGlfdmlfbGF5ZXIuYwo+ID4gPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9zdW40aS9zdW44aV92aV9sYXllci5jCj4gPiA+ID4gQEAgLTE4LDggKzE4 LDcgQEAKPiA+ID4gPiAgI2luY2x1ZGUgInN1bjhpX3ZpX3NjYWxlci5oIgo+ID4gPiA+Cj4gPiA+ ID4gIHN0YXRpYyB2b2lkIHN1bjhpX3ZpX2xheWVyX2VuYWJsZShzdHJ1Y3Qgc3VuOGlfbWl4ZXIg Km1peGVyLCBpbnQgCmNoYW5uZWwsCj4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBvdmVybGF5LCBib29sIGVuYWJsZSwgdW5zaWduZWQgCmludAo+ID4genBvcywK PiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG9s ZF96cG9zKQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3Zl cmxheSwgYm9vbCBlbmFibGUsIHVuc2lnbmVkIAppbnQKPiA+IHpwb3MpCj4gPiA+ID4gIHsKPiA+ ID4gPiAgICAgICAgIHUzMiB2YWwsIGJsZF9iYXNlLCBjaF9iYXNlOwo+ID4gPiA+Cj4gPiA+ID4g QEAgLTM4LDE4ICszNyw2IEBAIHN0YXRpYyB2b2lkIHN1bjhpX3ZpX2xheWVyX2VuYWJsZShzdHJ1 Y3QgCnN1bjhpX21peGVyCj4gPiAqbWl4ZXIsIGludCBjaGFubmVsLAo+ID4gPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFNVTjhJX01JWEVSX0NIQU5fVklfTEFZRVJfQVRUUihjaF9iYXNl LAo+ID4gb3ZlcmxheSksCj4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VOOElf TUlYRVJfQ0hBTl9WSV9MQVlFUl9BVFRSX0VOLCB2YWwpOwo+ID4gPiA+Cj4gPiA+ID4gLSAgICAg ICBpZiAoIWVuYWJsZSB8fCB6cG9zICE9IG9sZF96cG9zKSB7Cj4gPiA+ID4gLSAgICAgICAgICAg ICAgIHJlZ21hcF91cGRhdGVfYml0cyhtaXhlci0+ZW5naW5lLnJlZ3MsCj4gPiA+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKU1VOOElfTUlYRVJfQkxFTkRfUElQRV9DVEwo YmxkX2Jhc2UpLAo+ID4gPiA+IC0KPiA+IFNVTjhJX01JWEVSX0JMRU5EX1BJUEVfQ1RMX0VOKG9s ZF96cG9zKSwKPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwo+ ID4gPiA+IC0KPiA+ID4gPiAtICAgICAgICAgICAgICAgcmVnbWFwX3VwZGF0ZV9iaXRzKG1peGVy LT5lbmdpbmUucmVncywKPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFNVTjhJX01JWEVSX0JMRU5EX1JPVVRFKGJsZF9iYXNlKSwKPiA+ID4gPiAtCj4gPiBTVU44SV9N SVhFUl9CTEVORF9ST1VURV9QSVBFX01TSyhvbGRfenBvcyksCj4gPiA+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAwKTsKPiA+ID4gPiAtICAgICAgIH0KPiA+ID4gPiAtCj4g PiA+ID4gICAgICAgICBpZiAoZW5hYmxlKSB7Cj4gPiA+ID4gICAgICAgICAgICAgICAgIHZhbCA9 IFNVTjhJX01JWEVSX0JMRU5EX1BJUEVfQ1RMX0VOKHpwb3MpOwo+ID4gPiA+Cj4gPiA+ID4gQEAg LTM5NSwzMSArMzgyLDI0IEBAIHN0YXRpYyBpbnQgc3VuOGlfdmlfbGF5ZXJfYXRvbWljX2NoZWNr KHN0cnVjdAo+ID4gZHJtX3BsYW5lICpwbGFuZSwKPiA+ID4gPiAgc3RhdGljIHZvaWQgc3VuOGlf dmlfbGF5ZXJfYXRvbWljX2Rpc2FibGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPiA+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgCipzdGF0ZSkKPiA+ID4gPiAgewo+ID4gPiA+IC0gICAgICAgc3RydWN0IGRybV9w bGFuZV9zdGF0ZSAqb2xkX3N0YXRlID0KPiA+IGRybV9hdG9taWNfZ2V0X29sZF9wbGFuZV9zdGF0 ZShzdGF0ZSwKPiA+ID4gPiAtCj4gPiBwbGFuZSk7Cj4gPiA+ID4gICAgICAgICBzdHJ1Y3Qgc3Vu OGlfdmlfbGF5ZXIgKmxheWVyID0gcGxhbmVfdG9fc3VuOGlfdmlfbGF5ZXIocGxhbmUpOwo+ID4g PiA+IC0gICAgICAgdW5zaWduZWQgaW50IG9sZF96cG9zID0gb2xkX3N0YXRlLT5ub3JtYWxpemVk X3pwb3M7Cj4gPiA+ID4gICAgICAgICBzdHJ1Y3Qgc3VuOGlfbWl4ZXIgKm1peGVyID0gbGF5ZXIt Pm1peGVyOwo+ID4gPiA+Cj4gPiA+ID4gLSAgICAgICBzdW44aV92aV9sYXllcl9lbmFibGUobWl4 ZXIsIGxheWVyLT5jaGFubmVsLCBsYXllci0+b3ZlcmxheSwKPiA+IGZhbHNlLCAwLAo+ID4gPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZF96cG9zKTsKPiA+ID4gPiArICAgICAg IHN1bjhpX3ZpX2xheWVyX2VuYWJsZShtaXhlciwgbGF5ZXItPmNoYW5uZWwsIGxheWVyLT5vdmVy bGF5LAo+ID4gZmFsc2UsIDApOwo+ID4gPiA+ICB9Cj4gPiA+ID4KPiA+ID4gPiAgc3RhdGljIHZv aWQgc3VuOGlfdmlfbGF5ZXJfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK PiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlIAoqc3RhdGUpCj4gPiA+ID4gIHsKPiA+ID4gPiAtICAgICAgIHN0cnVj dCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSA9Cj4gPiBkcm1fYXRvbWljX2dldF9vbGRfcGxh bmVfc3RhdGUoc3RhdGUsCj4gPiA+ID4gLQo+ID4gcGxhbmUpOwo+ID4gPiA+ICAgICAgICAgc3Ry dWN0IGRybV9wbGFuZV9zdGF0ZSAqbmV3X3N0YXRlID0KPiA+IGRybV9hdG9taWNfZ2V0X25ld19w bGFuZV9zdGF0ZShzdGF0ZSwKPiA+ID4gPgo+ID4gcGxhbmUpOwo+ID4gPiA+ICAgICAgICAgc3Ry dWN0IHN1bjhpX3ZpX2xheWVyICpsYXllciA9IHBsYW5lX3RvX3N1bjhpX3ZpX2xheWVyKHBsYW5l KTsKPiA+ID4gPiAgICAgICAgIHVuc2lnbmVkIGludCB6cG9zID0gbmV3X3N0YXRlLT5ub3JtYWxp emVkX3pwb3M7Cj4gPiA+ID4gLSAgICAgICB1bnNpZ25lZCBpbnQgb2xkX3pwb3MgPSBvbGRfc3Rh dGUtPm5vcm1hbGl6ZWRfenBvczsKPiA+ID4gPiAgICAgICAgIHN0cnVjdCBzdW44aV9taXhlciAq bWl4ZXIgPSBsYXllci0+bWl4ZXI7Cj4gPiA+ID4KPiA+ID4gPiAgICAgICAgIGlmICghbmV3X3N0 YXRlLT52aXNpYmxlKSB7Cj4gPiA+ID4gICAgICAgICAgICAgICAgIHN1bjhpX3ZpX2xheWVyX2Vu YWJsZShtaXhlciwgbGF5ZXItPmNoYW5uZWwsCj4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsYXllci0+b3ZlcmxheSwgZmFsc2UsIDAsIApvbGRfenBvcyk7Cj4g PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci0+b3Zlcmxh eSwgZmFsc2UsIDApOwo+ID4gPiA+ICAgICAgICAgICAgICAgICByZXR1cm47Cj4gPiA+ID4gICAg ICAgICB9Cj4gPiA+ID4KPiA+ID4gPiBAQCAtNDMyLDcgKzQxMiw3IEBAIHN0YXRpYyB2b2lkIHN1 bjhpX3ZpX2xheWVyX2F0b21pY191cGRhdGUoc3RydWN0Cj4gPiBkcm1fcGxhbmUgKnBsYW5lLAo+ ID4gPiA+ICAgICAgICAgc3VuOGlfdmlfbGF5ZXJfdXBkYXRlX2J1ZmZlcihtaXhlciwgbGF5ZXIt PmNoYW5uZWwsCj4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxh eWVyLT5vdmVybGF5LCBwbGFuZSk7Cj4gPiA+ID4gICAgICAgICBzdW44aV92aV9sYXllcl9lbmFi bGUobWl4ZXIsIGxheWVyLT5jaGFubmVsLCBsYXllci0+b3ZlcmxheSwKPiA+ID4gPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0cnVlLCB6cG9zLCBvbGRfenBvcyk7Cj4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgenBvcyk7Cj4gPiA+ID4gIH0KPiA+ID4g Pgo+ID4gPiA+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgCnN1 bjhpX3ZpX2xheWVyX2hlbHBlcl9mdW5jcyA9Cj4gPiB7Cj4gPiA+ID4gLS0KPiA+ID4gPiAyLjMw LjIKPiA+ID4gPgo+ID4gPgo+ID4KPiA+Cj4gCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4 LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 099CEC433EF for ; Tue, 24 May 2022 19:13:27 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 5ACAB10FAE8; Tue, 24 May 2022 19:13:25 +0000 (UTC) Received: from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com [IPv6:2a00:1450:4864:20::62c]) by gabe.freedesktop.org (Postfix) with ESMTPS id B9FD610FAE5 for ; Tue, 24 May 2022 19:13:23 +0000 (UTC) Received: by mail-ej1-x62c.google.com with SMTP id wh22so37159605ejb.7 for ; Tue, 24 May 2022 12:13:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=nzsyUlkyiS/YzaEgtysgXXKOHxgS0XkeH6XhZ/9DzcI=; b=RAoVNQlaMYx37KumXh0hGrjUwAjD0INuS3O9Hxop0qlfjBSf2o+baBodGl+Ft/fYKU rM8ZNU7pRsVNKqt/TUCl31WwE347eoFxkd/3FBxIAYmOt8b/NafU1Hgb154V7KcDvCGf hA3sp8LCOpYW71ANq3ZzVex53wuQObEsodF0Hv0hPEHeo44VkLvCS53sOJDRzfl8Ad0q FHnxZ5KPFoCoqkhe2oX/69b0A7DQklL4H7zIBr9+nOpv+5U8gy0058MF3eaIIVn/vixc OhaGfs932+BEJ+OcHt/6P0v/3I4BSzn4A4AgSxzn09zrtYJuJpLmSyVz8uXaNzYGMP67 f3hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=nzsyUlkyiS/YzaEgtysgXXKOHxgS0XkeH6XhZ/9DzcI=; b=Kl5hO4cTYRVaDUTPD8+MJE0bWcT49kNQn2LueQSewvMGnwBpUauF45Ch6UO2S6+w0X ch0FCjzeqCTjZGQEudthxH3FanR/2dqdihaixdbyN+3XSRrMUkzrHry/EKJHc6c/mq33 +ECrSbLx0USbn92GV4FhqQOvLxJAWLF5QZvcdZFst6kKqON+r5Jx6v0CXTbyU5RZ9TNl S7TFLmAiYCfFhkgADzwc6DdYuDh0S+BhxHAZd/zp94WhfrSTHdt9+Zr3K/wBXZm0q0HK tqdsuKtZuJXg6VA6LGOM8YSqai5fYrUi8KsbQLGHB2g3mNVl9VDz/vPANiSSYRHgk/Wx 9Igw== X-Gm-Message-State: AOAM532A42q1322SvyXOBPiXXwGLHeRfaFY10eFVlL1tFDolw29iZUJl ZlKhb3Zi+4LV9Un9UzasP78= X-Google-Smtp-Source: ABdhPJwhIiB5LNWsM05p3UmylLy75saiNErANV1vYibc3/Mqe36oT9Gg7y+M+UJk+GivHhVotPQUMw== X-Received: by 2002:a17:907:7fa8:b0:6f3:e975:abfa with SMTP id qk40-20020a1709077fa800b006f3e975abfamr25545210ejc.86.1653419602162; Tue, 24 May 2022 12:13:22 -0700 (PDT) Received: from kista.localnet (213-161-3-76.dynamic.telemach.net. [213.161.3.76]) by smtp.gmail.com with ESMTPSA id p15-20020a05640210cf00b0042aaa3b741esm9769308edu.1.2022.05.24.12.13.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 May 2022 12:13:21 -0700 (PDT) From: Jernej =?utf-8?B?xaBrcmFiZWM=?= To: Roman Stratiienko Subject: Re: Re: Re: [PATCH] drm/sun4i: Fix blend registers corruption for DE2.0/DE3.0 Date: Tue, 24 May 2022 21:13:20 +0200 Message-ID: <2827541.e9J7NaK4W3@kista> In-Reply-To: References: <20220524135249.49993-1-roman.o.stratiienko@globallogic.com> <2629819.mvXUDI8C0e@kista> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="UTF-8" X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Samuel Holland , airlied@linux.ie, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, wens@csie.org, megi@xff.cz, linux-sunxi@lists.linux.dev, linux-arm-kernel@lists.infradead.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Don't top post, it's annoying and against rules. Dne torek, 24. maj 2022 ob 19:10:06 CEST je Roman Stratiienko napisal(a): > Please draft a test for the zpos issue you're mentioning. >=20 > It's very easy to do with kmsxx using python wrapper. >=20 > Or explain steps to reproduce here, I will write it by myself. I'm talking about the issue which you, Ondrej Jirman and me all tried to fi= x it=20 in the past one way or another: https://patchwork.kernel.org/project/dri-devel/patch/20190914220337.646719-= 1-megous@megous.com/ https://patchwork.kernel.org/project/dri-devel/patch/20210106204630.1800284= =2D1-jernej.skrabec@siol.net/ Best regards, Jernej >=20 > Thanks. > Regards > Roman >=20 > =D0=B2=D1=82, 24 =D0=BC=D0=B0=D1=8F 2022 =D0=B3. =D0=B2 19:21, Jernej =C5= =A0krabec : > > > > Dne torek, 24. maj 2022 ob 17:31:13 CEST je Roman Stratiienko napisal(a= ): > > > NAK for this. Further testing showed such an approach is not reliable > > > due to .atomic_update() callback called only in case planes have some > > > changes. > > > > Additionally, I think it would be better to fix underlaying zpos issue = first > > (attempted many times) and then worry about blending. > > > > Best regards, > > Jernej > > > > > > > > =D0=B2=D1=82, 24 =D0=BC=D0=B0=D1=8F 2022 =D0=B3. =D0=B2 16:52, Roman = Stratiienko : > > > > > > > > Corruption happens when plane zpos is updated > > > > > > > > Example scenario: > > > > > > > > Initial frame blender state: > > > > PLANE_ZPOS =3D {0, 1, 2, 3} > > > > BLD_ROUTE =3D {0, 1, 2, 0} > > > > BLD_EN =3D {1, 1, 1, 0} > > > > > > > > New frame commit (Only ZPOS has been changed): > > > > > > > > PLANE_ZPOS =3D {0->2, 1->0, 2->1, 3} > > > > > > > > Expected results after plane state update: > > > > Z0 Z1 Z2 Z3 > > > > BLD_ROUTE =3D {1, 2, 0, 0} > > > > BLD_EN =3D {1, 1, 1, 0} > > > > > > > > What is currently happening: > > > > > > > > 1. sun8i_vi_layer_enable(enabled=3Dtrue, zpos=3D2, old_zpos=3D0): > > > > BLD_ROUTE =3D {1->0, 1, 2->0, 0} > > > > BLD_EN =3D {1->0, 1, 1->1, 0} > > > > > > > > 2. sun8i_ui_layer_enable(enabled=3Dtrue, zpos=3D0, old_zpos=3D1): > > > > BLD_ROUTE =3D {0->1, 1->0, 0, 0} > > > > BLD_EN =3D {0->1, 1->0, 1, 0} > > > > > > > > 3. sun8i_ui_layer_enable(enabled=3Dtrue, zpos=3D1, old_zpos=3D2): > > > > BLD_ROUTE =3D {1, 0->2, 0->0, 0} > > > > BLD_EN =3D {1, 0->2, 1->0, 0} > > > > > > > > After updating of all the planes we are ending up with BLD_EN[2]=3D= 0, > > > > which makes this channel disabled. > > > > > > > > To fix this issue, clear BLEND registers before updating the planes > > > > and do not clear the old state while processing every plane. > > > > > > > > Signed-off-by: Roman Stratiienko > > > > --- > > > > drivers/gpu/drm/sun4i/sun8i_mixer.c | 16 +++++++++++++++ > > > > drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 28 +++ +---------------------- > > > > drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 28 +++ +---------------------- > > > > 3 files changed, 24 insertions(+), 48 deletions(-) > > > > > > > > diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/ sun4i/ > > sun8i_mixer.c > > > > index f5e8aeaa3cdf..004377a000fc 100644 > > > > --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c > > > > +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c > > > > @@ -248,6 +248,21 @@ int sun8i_mixer_drm_format_to_hw(u32 format, u= 32 > > *hw_format) > > > > return -EINVAL; > > > > } > > > > > > > > +static void sun8i_atomic_begin(struct sunxi_engine *engine, > > > > + struct drm_crtc_state *old_state) > > > > +{ > > > > + struct sun8i_mixer *mixer =3D engine_to_sun8i_mixer(engine); > > > > + u32 bld_base =3D sun8i_blender_base(mixer); > > > > + > > > > + regmap_write(engine->regs, > > > > + SUN8I_MIXER_BLEND_PIPE_CTL(bld_base), > > > > + 0); > > > > + > > > > + regmap_write(engine->regs, > > > > + SUN8I_MIXER_BLEND_ROUTE(bld_base), > > > > + 0); > > > > +} > > > > + > > > > static void sun8i_mixer_commit(struct sunxi_engine *engine) > > > > { > > > > DRM_DEBUG_DRIVER("Committing changes\n"); > > > > @@ -299,6 +314,7 @@ static struct drm_plane **sun8i_layers_init(str= uct > > drm_device *drm, > > > > } > > > > > > > > static const struct sunxi_engine_ops sun8i_engine_ops =3D { > > > > + .atomic_begin =3D sun8i_atomic_begin, > > > > .commit =3D sun8i_mixer_commit, > > > > .layers_init =3D sun8i_layers_init, > > > > }; > > > > diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/d= rm/ > > sun4i/sun8i_ui_layer.c > > > > index 7845c2a53a7f..b294a882626a 100644 > > > > --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c > > > > +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c > > > > @@ -24,8 +24,7 @@ > > > > #include "sun8i_ui_scaler.h" > > > > > > > > static void sun8i_ui_layer_enable(struct sun8i_mixer *mixer, int=20 channel, > > > > - int overlay, bool enable, unsigne= d=20 int > > zpos, > > > > - unsigned int old_zpos) > > > > + int overlay, bool enable, unsigne= d=20 int > > zpos) > > > > { > > > > u32 val, bld_base, ch_base; > > > > > > > > @@ -44,18 +43,6 @@ static void sun8i_ui_layer_enable(struct=20 sun8i_mixer > > *mixer, int channel, > > > > SUN8I_MIXER_CHAN_UI_LAYER_ATTR(ch_base, > > overlay), > > > > SUN8I_MIXER_CHAN_UI_LAYER_ATTR_EN, val); > > > > > > > > - if (!enable || zpos !=3D old_zpos) { > > > > - regmap_update_bits(mixer->engine.regs, > > > > - =20 SUN8I_MIXER_BLEND_PIPE_CTL(bld_base), > > > > - > > SUN8I_MIXER_BLEND_PIPE_CTL_EN(old_zpos), > > > > - 0); > > > > - > > > > - regmap_update_bits(mixer->engine.regs, > > > > - SUN8I_MIXER_BLEND_ROUTE(bld_base= ), > > > > - > > SUN8I_MIXER_BLEND_ROUTE_PIPE_MSK(old_zpos), > > > > - 0); > > > > - } > > > > - > > > > if (enable) { > > > > val =3D SUN8I_MIXER_BLEND_PIPE_CTL_EN(zpos); > > > > > > > > @@ -291,31 +278,24 @@ static int sun8i_ui_layer_atomic_check(struct > > drm_plane *plane, > > > > static void sun8i_ui_layer_atomic_disable(struct drm_plane *plane, > > > > struct drm_atomic_state=20 *state) > > > > { > > > > - struct drm_plane_state *old_state =3D > > drm_atomic_get_old_plane_state(state, > > > > - > > plane); > > > > struct sun8i_ui_layer *layer =3D plane_to_sun8i_ui_layer(pl= ane); > > > > - unsigned int old_zpos =3D old_state->normalized_zpos; > > > > struct sun8i_mixer *mixer =3D layer->mixer; > > > > > > > > - sun8i_ui_layer_enable(mixer, layer->channel, layer->overlay, > > false, 0, > > > > - old_zpos); > > > > + sun8i_ui_layer_enable(mixer, layer->channel, layer->overlay, > > false, 0); > > > > } > > > > > > > > static void sun8i_ui_layer_atomic_update(struct drm_plane *plane, > > > > struct drm_atomic_state=20 *state) > > > > { > > > > - struct drm_plane_state *old_state =3D > > drm_atomic_get_old_plane_state(state, > > > > - > > plane); > > > > struct drm_plane_state *new_state =3D > > drm_atomic_get_new_plane_state(state, > > > > > > plane); > > > > struct sun8i_ui_layer *layer =3D plane_to_sun8i_ui_layer(pl= ane); > > > > unsigned int zpos =3D new_state->normalized_zpos; > > > > - unsigned int old_zpos =3D old_state->normalized_zpos; > > > > struct sun8i_mixer *mixer =3D layer->mixer; > > > > > > > > if (!new_state->visible) { > > > > sun8i_ui_layer_enable(mixer, layer->channel, > > > > - layer->overlay, false, 0,=20 old_zpos); > > > > + layer->overlay, false, 0); > > > > return; > > > > } > > > > > > > > @@ -328,7 +308,7 @@ static void sun8i_ui_layer_atomic_update(struct > > drm_plane *plane, > > > > sun8i_ui_layer_update_buffer(mixer, layer->channel, > > > > layer->overlay, plane); > > > > sun8i_ui_layer_enable(mixer, layer->channel, layer->overlay, > > > > - true, zpos, old_zpos); > > > > + true, zpos); > > > > } > > > > > > > > static const struct drm_plane_helper_funcs=20 sun8i_ui_layer_helper_funcs =3D > > { > > > > diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/d= rm/ > > sun4i/sun8i_vi_layer.c > > > > index bb7c43036dfa..4653244b2fd8 100644 > > > > --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c > > > > +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c > > > > @@ -18,8 +18,7 @@ > > > > #include "sun8i_vi_scaler.h" > > > > > > > > static void sun8i_vi_layer_enable(struct sun8i_mixer *mixer, int=20 channel, > > > > - int overlay, bool enable, unsigne= d=20 int > > zpos, > > > > - unsigned int old_zpos) > > > > + int overlay, bool enable, unsigne= d=20 int > > zpos) > > > > { > > > > u32 val, bld_base, ch_base; > > > > > > > > @@ -38,18 +37,6 @@ static void sun8i_vi_layer_enable(struct=20 sun8i_mixer > > *mixer, int channel, > > > > SUN8I_MIXER_CHAN_VI_LAYER_ATTR(ch_base, > > overlay), > > > > SUN8I_MIXER_CHAN_VI_LAYER_ATTR_EN, val); > > > > > > > > - if (!enable || zpos !=3D old_zpos) { > > > > - regmap_update_bits(mixer->engine.regs, > > > > - =20 SUN8I_MIXER_BLEND_PIPE_CTL(bld_base), > > > > - > > SUN8I_MIXER_BLEND_PIPE_CTL_EN(old_zpos), > > > > - 0); > > > > - > > > > - regmap_update_bits(mixer->engine.regs, > > > > - SUN8I_MIXER_BLEND_ROUTE(bld_base= ), > > > > - > > SUN8I_MIXER_BLEND_ROUTE_PIPE_MSK(old_zpos), > > > > - 0); > > > > - } > > > > - > > > > if (enable) { > > > > val =3D SUN8I_MIXER_BLEND_PIPE_CTL_EN(zpos); > > > > > > > > @@ -395,31 +382,24 @@ static int sun8i_vi_layer_atomic_check(struct > > drm_plane *plane, > > > > static void sun8i_vi_layer_atomic_disable(struct drm_plane *plane, > > > > struct drm_atomic_state=20 *state) > > > > { > > > > - struct drm_plane_state *old_state =3D > > drm_atomic_get_old_plane_state(state, > > > > - > > plane); > > > > struct sun8i_vi_layer *layer =3D plane_to_sun8i_vi_layer(pl= ane); > > > > - unsigned int old_zpos =3D old_state->normalized_zpos; > > > > struct sun8i_mixer *mixer =3D layer->mixer; > > > > > > > > - sun8i_vi_layer_enable(mixer, layer->channel, layer->overlay, > > false, 0, > > > > - old_zpos); > > > > + sun8i_vi_layer_enable(mixer, layer->channel, layer->overlay, > > false, 0); > > > > } > > > > > > > > static void sun8i_vi_layer_atomic_update(struct drm_plane *plane, > > > > struct drm_atomic_state=20 *state) > > > > { > > > > - struct drm_plane_state *old_state =3D > > drm_atomic_get_old_plane_state(state, > > > > - > > plane); > > > > struct drm_plane_state *new_state =3D > > drm_atomic_get_new_plane_state(state, > > > > > > plane); > > > > struct sun8i_vi_layer *layer =3D plane_to_sun8i_vi_layer(pl= ane); > > > > unsigned int zpos =3D new_state->normalized_zpos; > > > > - unsigned int old_zpos =3D old_state->normalized_zpos; > > > > struct sun8i_mixer *mixer =3D layer->mixer; > > > > > > > > if (!new_state->visible) { > > > > sun8i_vi_layer_enable(mixer, layer->channel, > > > > - layer->overlay, false, 0,=20 old_zpos); > > > > + layer->overlay, false, 0); > > > > return; > > > > } > > > > > > > > @@ -432,7 +412,7 @@ static void sun8i_vi_layer_atomic_update(struct > > drm_plane *plane, > > > > sun8i_vi_layer_update_buffer(mixer, layer->channel, > > > > layer->overlay, plane); > > > > sun8i_vi_layer_enable(mixer, layer->channel, layer->overlay, > > > > - true, zpos, old_zpos); > > > > + true, zpos); > > > > } > > > > > > > > static const struct drm_plane_helper_funcs=20 sun8i_vi_layer_helper_funcs =3D > > { > > > > -- > > > > 2.30.2 > > > > > > > > > > > >=20