From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) (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 07B5A7C for ; Tue, 24 May 2022 19:14:05 +0000 (UTC) Received: by mail-ej1-f49.google.com with SMTP id f21so23625460ejh.11 for ; Tue, 24 May 2022 12:14:05 -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=ZUNbIM3O9IVgMuURLoH1enWN67UzqQk+sae4XN4TllE=; b=i5W5Hr3TnPWdLCB0yyT/B6rlkC5BY9u1hPBetlVyy3/9wyZlcUkPyuq/uZSfouPrmj 7zxfYmw6VMvMW77zOYDZ/46ckoGLiX0+vMRvUhyuch4GzskvhC87e5ogtTmLSPEC6o0I 21TVLo5M+A2PIcQZZyZMpG2Femy4fhFEH8E3dmUZJkyGmdk6XnDbkiBDd73wKI6lPC70 X5iU8RSEqhnVQ+0JAI94/8SuDk0KklDE+92ihtHb8Vwd6ccdyf411ykhpqCg7eyeYHaD xVUJQ2aQK850GVmNVJdJFsx+fJwqqXLNIf6NWV+VVI7JGjsaeBDbp7b4gtICECuv4fY1 PCgA== 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=ZUNbIM3O9IVgMuURLoH1enWN67UzqQk+sae4XN4TllE=; b=dVG0Cg1h37Qsjv7HEvT2Y3JpGE5npqT6H9TVi1bxvGuBZFdNblk7wHZ4IlW/Nlb72+ DXwouT6i1m+bPJkcBCLEQoN6OUpYRB0eff5klhrvRHV+LKNqnGVgYDliihO8wNbez4sG mjPTgPAbaQEmX8ggHvLrAY5Hgedd7yJVJy29uS1vP4qEYb5FQJo3PV2OO5+cSOH5b7GB HOUqG1prwpuQxPMnQRjWai46375bxQwnQV6ZpZZClriQGuSMIWdZumeVToDu+k19cuXt IwvAD9EWsiRmqxyOMNXNZGb36wV6C6xu/FOnV5u4yo6MXo89wGiN0mhN/P4xPINxGtcN Nmrw== X-Gm-Message-State: AOAM530spweivNUpFPUbh0SesUxcqnhMLMnj7MECnt1suUPffyHTI0uB oVG7J5iS6iXB0vvtPvDYVr8= X-Google-Smtp-Source: ABdhPJy55BARM8sTDIdGNAvfeVy4m0ARiKvAodu9th+WWcY2lPc3PErfQprwXDlrx7DmiVmvM8dwug== X-Received: by 2002:a17:906:d552:b0:6f5:942e:bc5f with SMTP id cr18-20020a170906d55200b006f5942ebc5fmr25761129ejc.110.1653419644250; Tue, 24 May 2022 12:14:04 -0700 (PDT) Received: from kista.localnet (213-161-3-76.dynamic.telemach.net. [213.161.3.76]) by smtp.gmail.com with ESMTPSA id r17-20020a056402019100b0042abf2affebsm9767860edv.67.2022.05.24.12.14.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 May 2022 12:14:03 -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:14:02 +0200 Message-ID: <3174733.44csPzL39Z@kista> In-Reply-To: References: <20220524135249.49993-1-roman.o.stratiienko@globallogic.com> 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" Dne torek, 24. maj 2022 ob 19:14:35 CEST je Roman Stratiienko napisal(a): > By the way, not related to this issue: >=20 > I cherry-picked > https://patchwork.kernel.org/project/dri-devel/patch/20220424162633.12369= =2D9-samuel@sholland.org/ > and got a blank FB console on OPI3. > Can you check it please? Reply to that patch and we'll talk. Best regards, Jernej >=20 > Regards, > Roman >=20 >=20 >=20 > =D0=B2=D1=82, 24 =D0=BC=D0=B0=D1=8F 2022 =D0=B3. =D0=B2 20:10, Roman Stra= tiienko : > > > > Please draft a test for the zpos issue you're mentioning. > > > > It's very easy to do with kmsxx using python wrapper. > > > > Or explain steps to reproduce here, I will write it by myself. > > > > Thanks. > > Regards > > Roman > > > > =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=20 napisal(a): > > > > NAK for this. Further testing showed such an approach is not reliab= le > > > > due to .atomic_update() callback called only in case planes have so= me > > > > changes. > > > > > > Additionally, I think it would be better to fix underlaying zpos issu= e=20 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, Roma= n Stratiienko=20 : > > > > > > > > > > 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]= =3D0, > > > > > which makes this channel disabled. > > > > > > > > > > To fix this issue, clear BLEND registers before updating the plan= es > > > > > and do not clear the old state while processing every plane. > > > > > > > > > > Signed-off-by: Roman Stratiienko=20 > > > > > --- > > > > > 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/dr= m/ 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,= =20 u32 > > > *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(engin= e); > > > > > + 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=20 **sun8i_layers_init(struct > > > 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/ drm/ > > > 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, unsig= ned=20 int > > > zpos, > > > > > - unsigned int old_zpos) > > > > > + int overlay, bool enable, unsig= ned=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, > > > > > - =20 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(stru= ct > > > drm_plane *plane, > > > > > static void sun8i_ui_layer_atomic_disable(struct drm_plane *plan= e, > > > > > 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=20 plane_to_sun8i_ui_layer(plane); > > > > > - unsigned int old_zpos =3D old_state->normalized_zpos; > > > > > struct sun8i_mixer *mixer =3D layer->mixer; > > > > > > > > > > - sun8i_ui_layer_enable(mixer, layer->channel, layer->overl= ay, > > > false, 0, > > > > > - old_zpos); > > > > > + sun8i_ui_layer_enable(mixer, layer->channel, layer->overl= ay, > > > 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=20 plane_to_sun8i_ui_layer(plane); > > > > > 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(stru= ct > > > drm_plane *plane, > > > > > sun8i_ui_layer_update_buffer(mixer, layer->channel, > > > > > layer->overlay, plane); > > > > > sun8i_ui_layer_enable(mixer, layer->channel, layer->overl= ay, > > > > > - 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/ drm/ > > > 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, unsig= ned=20 int > > > zpos, > > > > > - unsigned int old_zpos) > > > > > + int overlay, bool enable, unsig= ned=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, > > > > > - =20 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(stru= ct > > > drm_plane *plane, > > > > > static void sun8i_vi_layer_atomic_disable(struct drm_plane *plan= e, > > > > > 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=20 plane_to_sun8i_vi_layer(plane); > > > > > - unsigned int old_zpos =3D old_state->normalized_zpos; > > > > > struct sun8i_mixer *mixer =3D layer->mixer; > > > > > > > > > > - sun8i_vi_layer_enable(mixer, layer->channel, layer->overl= ay, > > > false, 0, > > > > > - old_zpos); > > > > > + sun8i_vi_layer_enable(mixer, layer->channel, layer->overl= ay, > > > 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=20 plane_to_sun8i_vi_layer(plane); > > > > > 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(stru= ct > > > drm_plane *plane, > > > > > sun8i_vi_layer_update_buffer(mixer, layer->channel, > > > > > layer->overlay, plane); > > > > > sun8i_vi_layer_enable(mixer, layer->channel, layer->overl= ay, > > > > > - 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 A07E5C433EF for ; Tue, 24 May 2022 19:15:28 +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=QQJGupiyO0d5yzVDepifszfC91TwOAwLGoghJ2XBgT4=; b=q3wOl9Cut2QoTJ 110d8oH7MbwtqPrnh5tlauLRFIPWmU844ZE9lj48TACQBYh6derZumyWEYNXYyd9EQ1Xbmvhx2Cil LjTk9lsjsk6z2i97tA5pS40EGXDBcnyjP6iwh8RwU/RlYczhHm+oaqa0T9q5c51sQAh6dqXYPtM0u rvSA4/jY/jxJAfePW9EWehjxViPEx7kTE0aYWuVai7KeJmwkuZBYyIZ5A70DZShnKbMww8ua5if5F sq63heBQHivBjjwWIZ0zxJQoH//sSU7n8U6YAlmK6LXSSsQgvLQyzROrpl5YX9Meb+0Ub0u51QuMY Xza5hWHuAkd/YsU3CZDw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ntZyu-008zjF-6R; Tue, 24 May 2022 19:14:12 +0000 Received: from mail-ej1-x62a.google.com ([2a00:1450:4864:20::62a]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ntZyq-008zgU-26 for linux-arm-kernel@lists.infradead.org; Tue, 24 May 2022 19:14:10 +0000 Received: by mail-ej1-x62a.google.com with SMTP id gh17so24261750ejc.6 for ; Tue, 24 May 2022 12:14:05 -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=ZUNbIM3O9IVgMuURLoH1enWN67UzqQk+sae4XN4TllE=; b=i5W5Hr3TnPWdLCB0yyT/B6rlkC5BY9u1hPBetlVyy3/9wyZlcUkPyuq/uZSfouPrmj 7zxfYmw6VMvMW77zOYDZ/46ckoGLiX0+vMRvUhyuch4GzskvhC87e5ogtTmLSPEC6o0I 21TVLo5M+A2PIcQZZyZMpG2Femy4fhFEH8E3dmUZJkyGmdk6XnDbkiBDd73wKI6lPC70 X5iU8RSEqhnVQ+0JAI94/8SuDk0KklDE+92ihtHb8Vwd6ccdyf411ykhpqCg7eyeYHaD xVUJQ2aQK850GVmNVJdJFsx+fJwqqXLNIf6NWV+VVI7JGjsaeBDbp7b4gtICECuv4fY1 PCgA== 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=ZUNbIM3O9IVgMuURLoH1enWN67UzqQk+sae4XN4TllE=; b=DbRCXrUSJbxhBLLxa6jH5rsCw6m/roG4wOmfZPl6ixoY2ZVFP7zx0xKaOTErxLqfVP LhZ0fPG9BJPAjsVS2Uz3N4iZfvWOH3VRUVd9iJpK7ihaal3OrHcylZE+Jrq/0CE9tG9k qe61kgafJGzmm328dY/5YD5FKolHCdt4s3PMEs/O7WgOGxqrvALo/h8RnrOjwa3qOm1/ +ZImpGgQB6vV4dT+S+NBz+gWVDbF//iz+DNVMyoLv+ihpf4SxsG0WC4qdqwSdHpcQfT1 thxyTayf1/Xs6cY2cLkVqyRB2WTFEjLOW8z6prsZ+jA5GAiMaEEbNre467CHrmp0p8l+ SFsQ== X-Gm-Message-State: AOAM530ZdR2DXuG1LLNIwgY1yBsqDuoqfcOyoBQCbAbsVsaUSJuWx3df jb6Q4HFDrUVadM+x0oJRIDQ= X-Google-Smtp-Source: ABdhPJy55BARM8sTDIdGNAvfeVy4m0ARiKvAodu9th+WWcY2lPc3PErfQprwXDlrx7DmiVmvM8dwug== X-Received: by 2002:a17:906:d552:b0:6f5:942e:bc5f with SMTP id cr18-20020a170906d55200b006f5942ebc5fmr25761129ejc.110.1653419644250; Tue, 24 May 2022 12:14:04 -0700 (PDT) Received: from kista.localnet (213-161-3-76.dynamic.telemach.net. [213.161.3.76]) by smtp.gmail.com with ESMTPSA id r17-20020a056402019100b0042abf2affebsm9767860edv.67.2022.05.24.12.14.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 May 2022 12:14:03 -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:14:02 +0200 Message-ID: <3174733.44csPzL39Z@kista> In-Reply-To: References: <20220524135249.49993-1-roman.o.stratiienko@globallogic.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220524_121408_171277_840B15CC X-CRM114-Status: GOOD ( 33.61 ) 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 RG5lIHRvcmVrLCAyNC4gbWFqIDIwMjIgb2IgMTk6MTQ6MzUgQ0VTVCBqZSBSb21hbiBTdHJhdGlp ZW5rbyBuYXBpc2FsKGEpOgo+IEJ5IHRoZSB3YXksIG5vdCByZWxhdGVkIHRvIHRoaXMgaXNzdWU6 Cj4gCj4gSSBjaGVycnktcGlja2VkCj4gaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wcm9q ZWN0L2RyaS1kZXZlbC9wYXRjaC8yMDIyMDQyNDE2MjYzMy4xMjM2OS05LXNhbXVlbEBzaG9sbGFu ZC5vcmcvCj4gYW5kIGdvdCBhIGJsYW5rIEZCIGNvbnNvbGUgb24gT1BJMy4KPiBDYW4geW91IGNo ZWNrIGl0IHBsZWFzZT8KClJlcGx5IHRvIHRoYXQgcGF0Y2ggYW5kIHdlJ2xsIHRhbGsuCgpCZXN0 IHJlZ2FyZHMsCkplcm5lagoKPiAKPiBSZWdhcmRzLAo+IFJvbWFuCj4gCj4gCj4gCj4g0LLRgiwg MjQg0LzQsNGPIDIwMjIg0LMuINCyIDIwOjEwLCBSb21hbiBTdHJhdGlpZW5rbyA8ci5zdHJhdGlp ZW5rb0BnbWFpbC5jb20+Ogo+ID4KPiA+IFBsZWFzZSBkcmFmdCBhIHRlc3QgZm9yIHRoZSB6cG9z IGlzc3VlIHlvdSdyZSBtZW50aW9uaW5nLgo+ID4KPiA+IEl0J3MgdmVyeSBlYXN5IHRvIGRvIHdp dGgga21zeHggdXNpbmcgcHl0aG9uIHdyYXBwZXIuCj4gPgo+ID4gT3IgZXhwbGFpbiBzdGVwcyB0 byByZXByb2R1Y2UgaGVyZSwgSSB3aWxsIHdyaXRlIGl0IGJ5IG15c2VsZi4KPiA+Cj4gPiBUaGFu a3MuCj4gPiBSZWdhcmRzCj4gPiBSb21hbgo+ID4KPiA+INCy0YIsIDI0INC80LDRjyAyMDIyINCz LiDQsiAxOToyMSwgSmVybmVqIMWga3JhYmVjIDxqZXJuZWouc2tyYWJlY0BnbWFpbC5jb20+Ogo+ ID4gPgo+ID4gPiBEbmUgdG9yZWssIDI0LiBtYWogMjAyMiBvYiAxNzozMToxMyBDRVNUIGplIFJv bWFuIFN0cmF0aWllbmtvIApuYXBpc2FsKGEpOgo+ID4gPiA+IE5BSyBmb3IgdGhpcy4gRnVydGhl ciB0ZXN0aW5nIHNob3dlZCBzdWNoIGFuIGFwcHJvYWNoIGlzIG5vdCByZWxpYWJsZQo+ID4gPiA+ IGR1ZSB0byAuYXRvbWljX3VwZGF0ZSgpIGNhbGxiYWNrIGNhbGxlZCBvbmx5IGluIGNhc2UgcGxh bmVzIGhhdmUgc29tZQo+ID4gPiA+IGNoYW5nZXMuCj4gPiA+Cj4gPiA+IEFkZGl0aW9uYWxseSwg SSB0aGluayBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gZml4IHVuZGVybGF5aW5nIHpwb3MgaXNzdWUg CmZpcnN0Cj4gPiA+IChhdHRlbXB0ZWQgbWFueSB0aW1lcykgYW5kIHRoZW4gd29ycnkgYWJvdXQg YmxlbmRpbmcuCj4gPiA+Cj4gPiA+IEJlc3QgcmVnYXJkcywKPiA+ID4gSmVybmVqCj4gPiA+Cj4g PiA+ID4KPiA+ID4gPiDQstGCLCAyNCDQvNCw0Y8gMjAyMiDQsy4g0LIgMTY6NTIsIFJvbWFuIFN0 cmF0aWllbmtvIAo8ci5zdHJhdGlpZW5rb0BnbWFpbC5jb20+Ogo+ID4gPiA+ID4KPiA+ID4gPiA+ IENvcnJ1cHRpb24gaGFwcGVucyB3aGVuIHBsYW5lIHpwb3MgaXMgdXBkYXRlZAo+ID4gPiA+ID4K PiA+ID4gPiA+IEV4YW1wbGUgc2NlbmFyaW86Cj4gPiA+ID4gPgo+ID4gPiA+ID4gSW5pdGlhbCBm cmFtZSBibGVuZGVyIHN0YXRlOgo+ID4gPiA+ID4gICAgIFBMQU5FX1pQT1MgPSB7MCwgMSwgMiwg M30KPiA+ID4gPiA+ICAgICBCTERfUk9VVEUgID0gezAsIDEsIDIsIDB9Cj4gPiA+ID4gPiAgICAg QkxEX0VOICAgICA9IHsxLCAxLCAxLCAwfQo+ID4gPiA+ID4KPiA+ID4gPiA+IE5ldyBmcmFtZSBj b21taXQgKE9ubHkgWlBPUyBoYXMgYmVlbiBjaGFuZ2VkKToKPiA+ID4gPiA+Cj4gPiA+ID4gPiAg ICAgUExBTkVfWlBPUyA9IHswLT4yLCAxLT4wLCAyLT4xLCAzfQo+ID4gPiA+ID4KPiA+ID4gPiA+ IEV4cGVjdGVkIHJlc3VsdHMgYWZ0ZXIgcGxhbmUgc3RhdGUgdXBkYXRlOgo+ID4gPiA+ID4gICAg ICAgICAgICAgICAgIFowIFoxIFoyIFozCj4gPiA+ID4gPiAgICAgQkxEX1JPVVRFID0gezEsIDIs IDAsIDB9Cj4gPiA+ID4gPiAgICAgQkxEX0VOICAgID0gezEsIDEsIDEsIDB9Cj4gPiA+ID4gPgo+ ID4gPiA+ID4gV2hhdCBpcyBjdXJyZW50bHkgaGFwcGVuaW5nOgo+ID4gPiA+ID4KPiA+ID4gPiA+ IDEuIHN1bjhpX3ZpX2xheWVyX2VuYWJsZShlbmFibGVkPXRydWUsIHpwb3M9Miwgb2xkX3pwb3M9 MCk6Cj4gPiA+ID4gPiAgICAgQkxEX1JPVVRFID0gezEtPjAsIDEsIDItPjAsIDB9Cj4gPiA+ID4g PiAgICAgQkxEX0VOICAgID0gezEtPjAsIDEsIDEtPjEsIDB9Cj4gPiA+ID4gPgo+ID4gPiA+ID4g Mi4gc3VuOGlfdWlfbGF5ZXJfZW5hYmxlKGVuYWJsZWQ9dHJ1ZSwgenBvcz0wLCBvbGRfenBvcz0x KToKPiA+ID4gPiA+ICAgICBCTERfUk9VVEUgPSB7MC0+MSwgMS0+MCwgMCwgMH0KPiA+ID4gPiA+ ICAgICBCTERfRU4gICAgPSB7MC0+MSwgMS0+MCwgMSwgMH0KPiA+ID4gPiA+Cj4gPiA+ID4gPiAz LiBzdW44aV91aV9sYXllcl9lbmFibGUoZW5hYmxlZD10cnVlLCB6cG9zPTEsIG9sZF96cG9zPTIp Ogo+ID4gPiA+ID4gICAgIEJMRF9ST1VURSA9IHsxLCAwLT4yLCAwLT4wLCAwfQo+ID4gPiA+ID4g ICAgIEJMRF9FTiAgICA9IHsxLCAwLT4yLCAxLT4wLCAwfQo+ID4gPiA+ID4KPiA+ID4gPiA+IEFm dGVyIHVwZGF0aW5nIG9mIGFsbCB0aGUgcGxhbmVzIHdlIGFyZSBlbmRpbmcgdXAgd2l0aCBCTERf RU5bMl09MCwKPiA+ID4gPiA+IHdoaWNoIG1ha2VzIHRoaXMgY2hhbm5lbCBkaXNhYmxlZC4KPiA+ ID4gPiA+Cj4gPiA+ID4gPiBUbyBmaXggdGhpcyBpc3N1ZSwgY2xlYXIgQkxFTkQgcmVnaXN0ZXJz IGJlZm9yZSB1cGRhdGluZyB0aGUgcGxhbmVzCj4gPiA+ID4gPiBhbmQgZG8gbm90IGNsZWFyIHRo ZSBvbGQgc3RhdGUgd2hpbGUgcHJvY2Vzc2luZyBldmVyeSBwbGFuZS4KPiA+ID4gPiA+Cj4gPiA+ ID4gPiBTaWduZWQtb2ZmLWJ5OiBSb21hbiBTdHJhdGlpZW5rbyAKPHJvbWFuLm8uc3RyYXRpaWVu a29AZ2xvYmFsbG9naWMuY29tPgo+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiAgZHJpdmVycy9ncHUv ZHJtL3N1bjRpL3N1bjhpX21peGVyLmMgICAgfCAxNiArKysrKysrKysrKysrKysKPiA+ID4gPiA+ ICBkcml2ZXJzL2dwdS9kcm0vc3VuNGkvc3VuOGlfdWlfbGF5ZXIuYyB8IDI4ICsrKworLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQo+ID4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW44aV92 aV9sYXllci5jIHwgMjggKysrCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiA+ID4gPiAgMyBm aWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA0OCBkZWxldGlvbnMoLSkKPiA+ID4gPiA+ Cj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjhpX21peGVy LmMgYi9kcml2ZXJzL2dwdS9kcm0vCnN1bjRpLwo+ID4gPiBzdW44aV9taXhlci5jCj4gPiA+ID4g PiBpbmRleCBmNWU4YWVhYTNjZGYuLjAwNDM3N2EwMDBmYyAxMDA2NDQKPiA+ID4gPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9zdW40aS9zdW44aV9taXhlci5jCj4gPiA+ID4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vc3VuNGkvc3VuOGlfbWl4ZXIuYwo+ID4gPiA+ID4gQEAgLTI0OCw2ICsyNDgs MjEgQEAgaW50IHN1bjhpX21peGVyX2RybV9mb3JtYXRfdG9faHcodTMyIGZvcm1hdCwgCnUzMgo+ ID4gPiAqaHdfZm9ybWF0KQo+ID4gPiA+ID4gICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ID4g PiA+ICB9Cj4gPiA+ID4gPgo+ID4gPiA+ID4gK3N0YXRpYyB2b2lkIHN1bjhpX2F0b21pY19iZWdp bihzdHJ1Y3Qgc3VueGlfZW5naW5lICplbmdpbmUsCj4gPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfc3RhdGUpCj4gPiA+ID4g PiArewo+ID4gPiA+ID4gKyAgICAgICBzdHJ1Y3Qgc3VuOGlfbWl4ZXIgKm1peGVyID0gZW5naW5l X3RvX3N1bjhpX21peGVyKGVuZ2luZSk7Cj4gPiA+ID4gPiArICAgICAgIHUzMiBibGRfYmFzZSA9 IHN1bjhpX2JsZW5kZXJfYmFzZShtaXhlcik7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICAg IHJlZ21hcF93cml0ZShlbmdpbmUtPnJlZ3MsCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICBTVU44SV9NSVhFUl9CTEVORF9QSVBFX0NUTChibGRfYmFzZSksCj4gPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAwKTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsgICAgICAgcmVnbWFwX3dy aXRlKGVuZ2luZS0+cmVncywKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgIFNVTjhJX01J WEVSX0JMRU5EX1JPVVRFKGJsZF9iYXNlKSwKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAg IDApOwo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICBzdGF0aWMgdm9pZCBzdW44 aV9taXhlcl9jb21taXQoc3RydWN0IHN1bnhpX2VuZ2luZSAqZW5naW5lKQo+ID4gPiA+ID4gIHsK PiA+ID4gPiA+ICAgICAgICAgRFJNX0RFQlVHX0RSSVZFUigiQ29tbWl0dGluZyBjaGFuZ2VzXG4i KTsKPiA+ID4gPiA+IEBAIC0yOTksNiArMzE0LDcgQEAgc3RhdGljIHN0cnVjdCBkcm1fcGxhbmUg Cioqc3VuOGlfbGF5ZXJzX2luaXQoc3RydWN0Cj4gPiA+IGRybV9kZXZpY2UgKmRybSwKPiA+ID4g PiA+ICB9Cj4gPiA+ID4gPgo+ID4gPiA+ID4gIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3VueGlfZW5n aW5lX29wcyBzdW44aV9lbmdpbmVfb3BzID0gewo+ID4gPiA+ID4gKyAgICAgICAuYXRvbWljX2Jl Z2luICAgPSBzdW44aV9hdG9taWNfYmVnaW4sCj4gPiA+ID4gPiAgICAgICAgIC5jb21taXQgICAg ICAgICA9IHN1bjhpX21peGVyX2NvbW1pdCwKPiA+ID4gPiA+ICAgICAgICAgLmxheWVyc19pbml0 ICAgID0gc3VuOGlfbGF5ZXJzX2luaXQsCj4gPiA+ID4gPiAgfTsKPiA+ID4gPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vc3VuNGkvc3VuOGlfdWlfbGF5ZXIuYyBiL2RyaXZlcnMvZ3B1 Lwpkcm0vCj4gPiA+IHN1bjRpL3N1bjhpX3VpX2xheWVyLmMKPiA+ID4gPiA+IGluZGV4IDc4NDVj MmE1M2E3Zi4uYjI5NGE4ODI2MjZhIDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3N1bjRpL3N1bjhpX3VpX2xheWVyLmMKPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9zdW40aS9zdW44aV91aV9sYXllci5jCj4gPiA+ID4gPiBAQCAtMjQsOCArMjQsNyBAQAo+ID4g PiA+ID4gICNpbmNsdWRlICJzdW44aV91aV9zY2FsZXIuaCIKPiA+ID4gPiA+Cj4gPiA+ID4gPiAg c3RhdGljIHZvaWQgc3VuOGlfdWlfbGF5ZXJfZW5hYmxlKHN0cnVjdCBzdW44aV9taXhlciAqbWl4 ZXIsIGludCAKY2hhbm5lbCwKPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgb3ZlcmxheSwgYm9vbCBlbmFibGUsIHVuc2lnbmVkIAppbnQKPiA+ID4genBvcywK PiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg b2xkX3pwb3MpCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IG92ZXJsYXksIGJvb2wgZW5hYmxlLCB1bnNpZ25lZCAKaW50Cj4gPiA+IHpwb3MpCj4gPiA+ID4g PiAgewo+ID4gPiA+ID4gICAgICAgICB1MzIgdmFsLCBibGRfYmFzZSwgY2hfYmFzZTsKPiA+ID4g PiA+Cj4gPiA+ID4gPiBAQCAtNDQsMTggKzQzLDYgQEAgc3RhdGljIHZvaWQgc3VuOGlfdWlfbGF5 ZXJfZW5hYmxlKHN0cnVjdCAKc3VuOGlfbWl4ZXIKPiA+ID4gKm1peGVyLCBpbnQgY2hhbm5lbCwK PiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVTjhJX01JWEVSX0NIQU5fVUlf TEFZRVJfQVRUUihjaF9iYXNlLAo+ID4gPiBvdmVybGF5KSwKPiA+ID4gPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFNVTjhJX01JWEVSX0NIQU5fVUlfTEFZRVJfQVRUUl9FTiwgdmFsKTsK PiA+ID4gPiA+Cj4gPiA+ID4gPiAtICAgICAgIGlmICghZW5hYmxlIHx8IHpwb3MgIT0gb2xkX3pw b3MpIHsKPiA+ID4gPiA+IC0gICAgICAgICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMobWl4ZXIt PmVuZ2luZS5yZWdzLAo+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKU1VOOElfTUlYRVJfQkxFTkRfUElQRV9DVEwoYmxkX2Jhc2UpLAo+ID4gPiA+ID4gLQo+ID4g PiBTVU44SV9NSVhFUl9CTEVORF9QSVBFX0NUTF9FTihvbGRfenBvcyksCj4gPiA+ID4gPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwo+ID4gPiA+ID4gLQo+ID4gPiA+ID4g LSAgICAgICAgICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhtaXhlci0+ZW5naW5lLnJlZ3MsCj4g PiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApTVU44SV9NSVhFUl9C TEVORF9ST1VURShibGRfYmFzZSksCj4gPiA+ID4gPiAtCj4gPiA+IFNVTjhJX01JWEVSX0JMRU5E X1JPVVRFX1BJUEVfTVNLKG9sZF96cG9zKSwKPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMCk7Cj4gPiA+ID4gPiAtICAgICAgIH0KPiA+ID4gPiA+IC0KPiA+ID4g PiA+ICAgICAgICAgaWYgKGVuYWJsZSkgewo+ID4gPiA+ID4gICAgICAgICAgICAgICAgIHZhbCA9 IFNVTjhJX01JWEVSX0JMRU5EX1BJUEVfQ1RMX0VOKHpwb3MpOwo+ID4gPiA+ID4KPiA+ID4gPiA+ IEBAIC0yOTEsMzEgKzI3OCwyNCBAQCBzdGF0aWMgaW50IHN1bjhpX3VpX2xheWVyX2F0b21pY19j aGVjayhzdHJ1Y3QKPiA+ID4gZHJtX3BsYW5lICpwbGFuZSwKPiA+ID4gPiA+ICBzdGF0aWMgdm9p ZCBzdW44aV91aV9sYXllcl9hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK PiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlIAoqc3RhdGUpCj4gPiA+ID4gPiAgewo+ID4gPiA+ID4gLSAgICAg ICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfc3RhdGUgPQo+ID4gPiBkcm1fYXRvbWljX2dl dF9vbGRfcGxhbmVfc3RhdGUoc3RhdGUsCj4gPiA+ID4gPiAtCj4gPiA+IHBsYW5lKTsKPiA+ID4g PiA+ICAgICAgICAgc3RydWN0IHN1bjhpX3VpX2xheWVyICpsYXllciA9IApwbGFuZV90b19zdW44 aV91aV9sYXllcihwbGFuZSk7Cj4gPiA+ID4gPiAtICAgICAgIHVuc2lnbmVkIGludCBvbGRfenBv cyA9IG9sZF9zdGF0ZS0+bm9ybWFsaXplZF96cG9zOwo+ID4gPiA+ID4gICAgICAgICBzdHJ1Y3Qg c3VuOGlfbWl4ZXIgKm1peGVyID0gbGF5ZXItPm1peGVyOwo+ID4gPiA+ID4KPiA+ID4gPiA+IC0g ICAgICAgc3VuOGlfdWlfbGF5ZXJfZW5hYmxlKG1peGVyLCBsYXllci0+Y2hhbm5lbCwgbGF5ZXIt Pm92ZXJsYXksCj4gPiA+IGZhbHNlLCAwLAo+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgb2xkX3pwb3MpOwo+ID4gPiA+ID4gKyAgICAgICBzdW44aV91aV9sYXllcl9lbmFi bGUobWl4ZXIsIGxheWVyLT5jaGFubmVsLCBsYXllci0+b3ZlcmxheSwKPiA+ID4gZmFsc2UsIDAp Owo+ID4gPiA+ID4gIH0KPiA+ID4gPiA+Cj4gPiA+ID4gPiAgc3RhdGljIHZvaWQgc3VuOGlfdWlf bGF5ZXJfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+ID4gPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9hdG9taWNf c3RhdGUgCipzdGF0ZSkKPiA+ID4gPiA+ICB7Cj4gPiA+ID4gPiAtICAgICAgIHN0cnVjdCBkcm1f cGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSA9Cj4gPiA+IGRybV9hdG9taWNfZ2V0X29sZF9wbGFuZV9z dGF0ZShzdGF0ZSwKPiA+ID4gPiA+IC0KPiA+ID4gcGxhbmUpOwo+ID4gPiA+ID4gICAgICAgICBz dHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpuZXdfc3RhdGUgPQo+ID4gPiBkcm1fYXRvbWljX2dldF9u ZXdfcGxhbmVfc3RhdGUoc3RhdGUsCj4gPiA+ID4gPgo+ID4gPiBwbGFuZSk7Cj4gPiA+ID4gPiAg ICAgICAgIHN0cnVjdCBzdW44aV91aV9sYXllciAqbGF5ZXIgPSAKcGxhbmVfdG9fc3VuOGlfdWlf bGF5ZXIocGxhbmUpOwo+ID4gPiA+ID4gICAgICAgICB1bnNpZ25lZCBpbnQgenBvcyA9IG5ld19z dGF0ZS0+bm9ybWFsaXplZF96cG9zOwo+ID4gPiA+ID4gLSAgICAgICB1bnNpZ25lZCBpbnQgb2xk X3pwb3MgPSBvbGRfc3RhdGUtPm5vcm1hbGl6ZWRfenBvczsKPiA+ID4gPiA+ICAgICAgICAgc3Ry dWN0IHN1bjhpX21peGVyICptaXhlciA9IGxheWVyLT5taXhlcjsKPiA+ID4gPiA+Cj4gPiA+ID4g PiAgICAgICAgIGlmICghbmV3X3N0YXRlLT52aXNpYmxlKSB7Cj4gPiA+ID4gPiAgICAgICAgICAg ICAgICAgc3VuOGlfdWlfbGF5ZXJfZW5hYmxlKG1peGVyLCBsYXllci0+Y2hhbm5lbCwKPiA+ID4g PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXItPm92ZXJsYXks IGZhbHNlLCAwLCAKb2xkX3pwb3MpOwo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsYXllci0+b3ZlcmxheSwgZmFsc2UsIDApOwo+ID4gPiA+ID4gICAgICAg ICAgICAgICAgIHJldHVybjsKPiA+ID4gPiA+ICAgICAgICAgfQo+ID4gPiA+ID4KPiA+ID4gPiA+ IEBAIC0zMjgsNyArMzA4LDcgQEAgc3RhdGljIHZvaWQgc3VuOGlfdWlfbGF5ZXJfYXRvbWljX3Vw ZGF0ZShzdHJ1Y3QKPiA+ID4gZHJtX3BsYW5lICpwbGFuZSwKPiA+ID4gPiA+ICAgICAgICAgc3Vu OGlfdWlfbGF5ZXJfdXBkYXRlX2J1ZmZlcihtaXhlciwgbGF5ZXItPmNoYW5uZWwsCj4gPiA+ID4g PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXItPm92ZXJsYXksIHBs YW5lKTsKPiA+ID4gPiA+ICAgICAgICAgc3VuOGlfdWlfbGF5ZXJfZW5hYmxlKG1peGVyLCBsYXll ci0+Y2hhbm5lbCwgbGF5ZXItPm92ZXJsYXksCj4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0cnVlLCB6cG9zLCBvbGRfenBvcyk7Cj4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0cnVlLCB6cG9zKTsKPiA+ID4gPiA+ICB9Cj4gPiA+ID4gPgo+ID4g PiA+ID4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyAKc3VuOGlf dWlfbGF5ZXJfaGVscGVyX2Z1bmNzID0KPiA+ID4gewo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9zdW40aS9zdW44aV92aV9sYXllci5jIGIvZHJpdmVycy9ncHUvCmRybS8K PiA+ID4gc3VuNGkvc3VuOGlfdmlfbGF5ZXIuYwo+ID4gPiA+ID4gaW5kZXggYmI3YzQzMDM2ZGZh Li40NjUzMjQ0YjJmZDggMTAwNjQ0Cj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vc3Vu NGkvc3VuOGlfdmlfbGF5ZXIuYwo+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3N1bjRp L3N1bjhpX3ZpX2xheWVyLmMKPiA+ID4gPiA+IEBAIC0xOCw4ICsxOCw3IEBACj4gPiA+ID4gPiAg I2luY2x1ZGUgInN1bjhpX3ZpX3NjYWxlci5oIgo+ID4gPiA+ID4KPiA+ID4gPiA+ICBzdGF0aWMg dm9pZCBzdW44aV92aV9sYXllcl9lbmFibGUoc3RydWN0IHN1bjhpX21peGVyICptaXhlciwgaW50 IApjaGFubmVsLAo+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBvdmVybGF5LCBib29sIGVuYWJsZSwgdW5zaWduZWQgCmludAo+ID4gPiB6cG9zLAo+ID4gPiA+ ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBvbGRfenBv cykKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3Zlcmxh eSwgYm9vbCBlbmFibGUsIHVuc2lnbmVkIAppbnQKPiA+ID4genBvcykKPiA+ID4gPiA+ICB7Cj4g PiA+ID4gPiAgICAgICAgIHUzMiB2YWwsIGJsZF9iYXNlLCBjaF9iYXNlOwo+ID4gPiA+ID4KPiA+ ID4gPiA+IEBAIC0zOCwxOCArMzcsNiBAQCBzdGF0aWMgdm9pZCBzdW44aV92aV9sYXllcl9lbmFi bGUoc3RydWN0IApzdW44aV9taXhlcgo+ID4gPiAqbWl4ZXIsIGludCBjaGFubmVsLAo+ID4gPiA+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VOOElfTUlYRVJfQ0hBTl9WSV9MQVlFUl9B VFRSKGNoX2Jhc2UsCj4gPiA+IG92ZXJsYXkpLAo+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgU1VOOElfTUlYRVJfQ0hBTl9WSV9MQVlFUl9BVFRSX0VOLCB2YWwpOwo+ID4gPiA+ ID4KPiA+ID4gPiA+IC0gICAgICAgaWYgKCFlbmFibGUgfHwgenBvcyAhPSBvbGRfenBvcykgewo+ ID4gPiA+ID4gLSAgICAgICAgICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhtaXhlci0+ZW5naW5l LnJlZ3MsCj4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApTVU44 SV9NSVhFUl9CTEVORF9QSVBFX0NUTChibGRfYmFzZSksCj4gPiA+ID4gPiAtCj4gPiA+IFNVTjhJ X01JWEVSX0JMRU5EX1BJUEVfQ1RMX0VOKG9sZF96cG9zKSwKPiA+ID4gPiA+IC0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMCk7Cj4gPiA+ID4gPiAtCj4gPiA+ID4gPiAtICAgICAg ICAgICAgICAgcmVnbWFwX3VwZGF0ZV9iaXRzKG1peGVyLT5lbmdpbmUucmVncywKPiA+ID4gPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgClNVTjhJX01JWEVSX0JMRU5EX1JP VVRFKGJsZF9iYXNlKSwKPiA+ID4gPiA+IC0KPiA+ID4gU1VOOElfTUlYRVJfQkxFTkRfUk9VVEVf UElQRV9NU0sob2xkX3pwb3MpLAo+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAwKTsKPiA+ID4gPiA+IC0gICAgICAgfQo+ID4gPiA+ID4gLQo+ID4gPiA+ID4gICAg ICAgICBpZiAoZW5hYmxlKSB7Cj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgdmFsID0gU1VOOElf TUlYRVJfQkxFTkRfUElQRV9DVExfRU4oenBvcyk7Cj4gPiA+ID4gPgo+ID4gPiA+ID4gQEAgLTM5 NSwzMSArMzgyLDI0IEBAIHN0YXRpYyBpbnQgc3VuOGlfdmlfbGF5ZXJfYXRvbWljX2NoZWNrKHN0 cnVjdAo+ID4gPiBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gPiA+ID4gIHN0YXRpYyB2b2lkIHN1bjhp X3ZpX2xheWVyX2F0b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gPiA+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9h dG9taWNfc3RhdGUgCipzdGF0ZSkKPiA+ID4gPiA+ICB7Cj4gPiA+ID4gPiAtICAgICAgIHN0cnVj dCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSA9Cj4gPiA+IGRybV9hdG9taWNfZ2V0X29sZF9w bGFuZV9zdGF0ZShzdGF0ZSwKPiA+ID4gPiA+IC0KPiA+ID4gcGxhbmUpOwo+ID4gPiA+ID4gICAg ICAgICBzdHJ1Y3Qgc3VuOGlfdmlfbGF5ZXIgKmxheWVyID0gCnBsYW5lX3RvX3N1bjhpX3ZpX2xh eWVyKHBsYW5lKTsKPiA+ID4gPiA+IC0gICAgICAgdW5zaWduZWQgaW50IG9sZF96cG9zID0gb2xk X3N0YXRlLT5ub3JtYWxpemVkX3pwb3M7Cj4gPiA+ID4gPiAgICAgICAgIHN0cnVjdCBzdW44aV9t aXhlciAqbWl4ZXIgPSBsYXllci0+bWl4ZXI7Cj4gPiA+ID4gPgo+ID4gPiA+ID4gLSAgICAgICBz dW44aV92aV9sYXllcl9lbmFibGUobWl4ZXIsIGxheWVyLT5jaGFubmVsLCBsYXllci0+b3Zlcmxh eSwKPiA+ID4gZmFsc2UsIDAsCj4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvbGRfenBvcyk7Cj4gPiA+ID4gPiArICAgICAgIHN1bjhpX3ZpX2xheWVyX2VuYWJsZShtaXhl ciwgbGF5ZXItPmNoYW5uZWwsIGxheWVyLT5vdmVybGF5LAo+ID4gPiBmYWxzZSwgMCk7Cj4gPiA+ ID4gPiAgfQo+ID4gPiA+ID4KPiA+ID4gPiA+ICBzdGF0aWMgdm9pZCBzdW44aV92aV9sYXllcl9h dG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gPiA+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAK KnN0YXRlKQo+ID4gPiA+ID4gIHsKPiA+ID4gPiA+IC0gICAgICAgc3RydWN0IGRybV9wbGFuZV9z dGF0ZSAqb2xkX3N0YXRlID0KPiA+ID4gZHJtX2F0b21pY19nZXRfb2xkX3BsYW5lX3N0YXRlKHN0 YXRlLAo+ID4gPiA+ID4gLQo+ID4gPiBwbGFuZSk7Cj4gPiA+ID4gPiAgICAgICAgIHN0cnVjdCBk cm1fcGxhbmVfc3RhdGUgKm5ld19zdGF0ZSA9Cj4gPiA+IGRybV9hdG9taWNfZ2V0X25ld19wbGFu ZV9zdGF0ZShzdGF0ZSwKPiA+ID4gPiA+Cj4gPiA+IHBsYW5lKTsKPiA+ID4gPiA+ICAgICAgICAg c3RydWN0IHN1bjhpX3ZpX2xheWVyICpsYXllciA9IApwbGFuZV90b19zdW44aV92aV9sYXllcihw bGFuZSk7Cj4gPiA+ID4gPiAgICAgICAgIHVuc2lnbmVkIGludCB6cG9zID0gbmV3X3N0YXRlLT5u b3JtYWxpemVkX3pwb3M7Cj4gPiA+ID4gPiAtICAgICAgIHVuc2lnbmVkIGludCBvbGRfenBvcyA9 IG9sZF9zdGF0ZS0+bm9ybWFsaXplZF96cG9zOwo+ID4gPiA+ID4gICAgICAgICBzdHJ1Y3Qgc3Vu OGlfbWl4ZXIgKm1peGVyID0gbGF5ZXItPm1peGVyOwo+ID4gPiA+ID4KPiA+ID4gPiA+ICAgICAg ICAgaWYgKCFuZXdfc3RhdGUtPnZpc2libGUpIHsKPiA+ID4gPiA+ICAgICAgICAgICAgICAgICBz dW44aV92aV9sYXllcl9lbmFibGUobWl4ZXIsIGxheWVyLT5jaGFubmVsLAo+ID4gPiA+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci0+b3ZlcmxheSwgZmFsc2Us IDAsIApvbGRfenBvcyk7Cj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxheWVyLT5vdmVybGF5LCBmYWxzZSwgMCk7Cj4gPiA+ID4gPiAgICAgICAgICAgICAg ICAgcmV0dXJuOwo+ID4gPiA+ID4gICAgICAgICB9Cj4gPiA+ID4gPgo+ID4gPiA+ID4gQEAgLTQz Miw3ICs0MTIsNyBAQCBzdGF0aWMgdm9pZCBzdW44aV92aV9sYXllcl9hdG9taWNfdXBkYXRlKHN0 cnVjdAo+ID4gPiBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gPiA+ID4gICAgICAgICBzdW44aV92aV9s YXllcl91cGRhdGVfYnVmZmVyKG1peGVyLCBsYXllci0+Y2hhbm5lbCwKPiA+ID4gPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci0+b3ZlcmxheSwgcGxhbmUpOwo+ ID4gPiA+ID4gICAgICAgICBzdW44aV92aV9sYXllcl9lbmFibGUobWl4ZXIsIGxheWVyLT5jaGFu bmVsLCBsYXllci0+b3ZlcmxheSwKPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRydWUsIHpwb3MsIG9sZF96cG9zKTsKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRydWUsIHpwb3MpOwo+ID4gPiA+ID4gIH0KPiA+ID4gPiA+Cj4gPiA+ID4gPiAg c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzIApzdW44aV92aV9sYXll cl9oZWxwZXJfZnVuY3MgPQo+ID4gPiB7Cj4gPiA+ID4gPiAtLQo+ID4gPiA+ID4gMi4zMC4yCj4g PiA+ID4gPgo+ID4gPiA+Cj4gPiA+Cj4gPiA+Cj4gCgoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0Cmxp bnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFk Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK 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 381AFC433F5 for ; Tue, 24 May 2022 19:14:08 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 58D6510E351; Tue, 24 May 2022 19:14:07 +0000 (UTC) Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com [IPv6:2a00:1450:4864:20::62b]) by gabe.freedesktop.org (Postfix) with ESMTPS id C492110E351 for ; Tue, 24 May 2022 19:14:05 +0000 (UTC) Received: by mail-ej1-x62b.google.com with SMTP id ck4so33013451ejb.8 for ; Tue, 24 May 2022 12:14:05 -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=ZUNbIM3O9IVgMuURLoH1enWN67UzqQk+sae4XN4TllE=; b=i5W5Hr3TnPWdLCB0yyT/B6rlkC5BY9u1hPBetlVyy3/9wyZlcUkPyuq/uZSfouPrmj 7zxfYmw6VMvMW77zOYDZ/46ckoGLiX0+vMRvUhyuch4GzskvhC87e5ogtTmLSPEC6o0I 21TVLo5M+A2PIcQZZyZMpG2Femy4fhFEH8E3dmUZJkyGmdk6XnDbkiBDd73wKI6lPC70 X5iU8RSEqhnVQ+0JAI94/8SuDk0KklDE+92ihtHb8Vwd6ccdyf411ykhpqCg7eyeYHaD xVUJQ2aQK850GVmNVJdJFsx+fJwqqXLNIf6NWV+VVI7JGjsaeBDbp7b4gtICECuv4fY1 PCgA== 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=ZUNbIM3O9IVgMuURLoH1enWN67UzqQk+sae4XN4TllE=; b=EpQy2Q5AyrqcHX5u93g/5eBQq/hEivHN19+UowQTIwNscDeRMtgdhhaUSDJJUCG9ki bBsEU1LvQjvMEeblL3A+sxYt6hv4hpGfEI23R1TasvFXWYzcS4+myH6QuYJ/VeNB0a8x cv/WKi5HZ4bQ4fp1Y7hIu/s7AdIivrZReq6MapkZBCXKkKLxhR1zxNyqb5ZCgQNypNAQ pa0jF5g+zMTdT5Am61Tq868H1X3S5WK0/jXhCS8zKQDp/AtZli012DWS0ebf9r7IbLlq qBTMBHkx3z9T6ivoWbedN8fqYedTjITfFa7/UjvGrS45+lcMsljMxVKY0aStfZbviQG5 FgWg== X-Gm-Message-State: AOAM533gYke72UTs/VX71D2pPkxE1sWn0a4/rguZ1b6XuGhs1SYQ1oVR I5SCQ5lPO5jP85Vdo9mPY7I= X-Google-Smtp-Source: ABdhPJy55BARM8sTDIdGNAvfeVy4m0ARiKvAodu9th+WWcY2lPc3PErfQprwXDlrx7DmiVmvM8dwug== X-Received: by 2002:a17:906:d552:b0:6f5:942e:bc5f with SMTP id cr18-20020a170906d55200b006f5942ebc5fmr25761129ejc.110.1653419644250; Tue, 24 May 2022 12:14:04 -0700 (PDT) Received: from kista.localnet (213-161-3-76.dynamic.telemach.net. [213.161.3.76]) by smtp.gmail.com with ESMTPSA id r17-20020a056402019100b0042abf2affebsm9767860edv.67.2022.05.24.12.14.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 May 2022 12:14:03 -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:14:02 +0200 Message-ID: <3174733.44csPzL39Z@kista> In-Reply-To: References: <20220524135249.49993-1-roman.o.stratiienko@globallogic.com> 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" Dne torek, 24. maj 2022 ob 19:14:35 CEST je Roman Stratiienko napisal(a): > By the way, not related to this issue: >=20 > I cherry-picked > https://patchwork.kernel.org/project/dri-devel/patch/20220424162633.12369= =2D9-samuel@sholland.org/ > and got a blank FB console on OPI3. > Can you check it please? Reply to that patch and we'll talk. Best regards, Jernej >=20 > Regards, > Roman >=20 >=20 >=20 > =D0=B2=D1=82, 24 =D0=BC=D0=B0=D1=8F 2022 =D0=B3. =D0=B2 20:10, Roman Stra= tiienko : > > > > Please draft a test for the zpos issue you're mentioning. > > > > It's very easy to do with kmsxx using python wrapper. > > > > Or explain steps to reproduce here, I will write it by myself. > > > > Thanks. > > Regards > > Roman > > > > =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=20 napisal(a): > > > > NAK for this. Further testing showed such an approach is not reliab= le > > > > due to .atomic_update() callback called only in case planes have so= me > > > > changes. > > > > > > Additionally, I think it would be better to fix underlaying zpos issu= e=20 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, Roma= n Stratiienko=20 : > > > > > > > > > > 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]= =3D0, > > > > > which makes this channel disabled. > > > > > > > > > > To fix this issue, clear BLEND registers before updating the plan= es > > > > > and do not clear the old state while processing every plane. > > > > > > > > > > Signed-off-by: Roman Stratiienko=20 > > > > > --- > > > > > 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/dr= m/ 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,= =20 u32 > > > *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(engin= e); > > > > > + 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=20 **sun8i_layers_init(struct > > > 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/ drm/ > > > 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, unsig= ned=20 int > > > zpos, > > > > > - unsigned int old_zpos) > > > > > + int overlay, bool enable, unsig= ned=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, > > > > > - =20 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(stru= ct > > > drm_plane *plane, > > > > > static void sun8i_ui_layer_atomic_disable(struct drm_plane *plan= e, > > > > > 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=20 plane_to_sun8i_ui_layer(plane); > > > > > - unsigned int old_zpos =3D old_state->normalized_zpos; > > > > > struct sun8i_mixer *mixer =3D layer->mixer; > > > > > > > > > > - sun8i_ui_layer_enable(mixer, layer->channel, layer->overl= ay, > > > false, 0, > > > > > - old_zpos); > > > > > + sun8i_ui_layer_enable(mixer, layer->channel, layer->overl= ay, > > > 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=20 plane_to_sun8i_ui_layer(plane); > > > > > 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(stru= ct > > > drm_plane *plane, > > > > > sun8i_ui_layer_update_buffer(mixer, layer->channel, > > > > > layer->overlay, plane); > > > > > sun8i_ui_layer_enable(mixer, layer->channel, layer->overl= ay, > > > > > - 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/ drm/ > > > 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, unsig= ned=20 int > > > zpos, > > > > > - unsigned int old_zpos) > > > > > + int overlay, bool enable, unsig= ned=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, > > > > > - =20 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(stru= ct > > > drm_plane *plane, > > > > > static void sun8i_vi_layer_atomic_disable(struct drm_plane *plan= e, > > > > > 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=20 plane_to_sun8i_vi_layer(plane); > > > > > - unsigned int old_zpos =3D old_state->normalized_zpos; > > > > > struct sun8i_mixer *mixer =3D layer->mixer; > > > > > > > > > > - sun8i_vi_layer_enable(mixer, layer->channel, layer->overl= ay, > > > false, 0, > > > > > - old_zpos); > > > > > + sun8i_vi_layer_enable(mixer, layer->channel, layer->overl= ay, > > > 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=20 plane_to_sun8i_vi_layer(plane); > > > > > 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(stru= ct > > > drm_plane *plane, > > > > > sun8i_vi_layer_update_buffer(mixer, layer->channel, > > > > > layer->overlay, plane); > > > > > sun8i_vi_layer_enable(mixer, layer->channel, layer->overl= ay, > > > > > - true, zpos, old_zpos); > > > > > + true, zpos); > > > > > } > > > > > > > > > > static const struct drm_plane_helper_funcs=20 sun8i_vi_layer_helper_funcs =3D > > > { > > > > > -- > > > > > 2.30.2 > > > > > > > > > > > > > > > >=20