Received: by 2002:a05:6a10:413:0:0:0:0 with SMTP id 19csp3950048pxp; Tue, 15 Mar 2022 09:21:52 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxfUJoQJ6utfaG0L/HITGxLnVZvnAoBNyaVudtQbL3AtjTtxpx/tXbPxaoBfIUns1nijtwG X-Received: by 2002:a17:907:9956:b0:6b9:a6d9:a535 with SMTP id kl22-20020a170907995600b006b9a6d9a535mr22867053ejc.64.1647361312412; Tue, 15 Mar 2022 09:21:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647361312; cv=none; d=google.com; s=arc-20160816; b=qjvHG0k30/gPyKPRfa9xy2Lkf6QhPjmVMHZxWwyirp5HJuZU5diyHF6hphYQZUhjE8 Yk3kduVdmr6z/0GohKiCFzk387O2Xh2W8ddS9ga5wzaN9W0umGxH4g1kuJEVcSz6+7kk VKHliK+3YAh107sJx00oEnKywp8o2PuFb6qLQfosrhCdWdwTtj6lD/ggDI4emnrr1WDi Vglk0vKFpoWsoqQhfY6DxRvLIXYYg++574pC532EW8n6rjMo6ZniU0zNIy4pwSGhhfvl qIEdaZBhqOvTRhkh2yf3TMq0w9LI0ULaDBVOoG1JZCkIUJAAb4J0xYeS/yWF7wumqXlj 2Kgw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:cc:to:subject:from:date :dkim-signature; bh=MJhVqCXdY5vJSE5DEOiKyiWllO/DjfEoLcGECqfYSW4=; b=kfV6NCGAlENcRDMIA1LfEwJRI0nh1UzLNLOqce8OrfGlswIjoPSCEBBvAKxy4F868E AAcmjgEwc+wiEftqJ14lHgxa/4K64pJc8LM5/UfFoUu3hdzaan/4GJwivym6Nc1EvspW 1iaaHvYdI0QN89kf4GD5tXXXZxJzHBiqI+EcONI8JK+i4As7AOptON2qY+W5/U0mxnNr D+Etuz6lCmIwAsKlo5JHOgtRlYiO+FCh+Sfn5Qf3hDBtCewc64uef+TF1RlcwP+b/RmC iSBGQmgHuZgO/BRCSnAMMTtbVAXP8dpIUEi5GGEdcLcagsMzmIx8n8ZF45M087KnTOr5 NokA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=NIVNpvPT; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b10-20020a056402084a00b00416f1217474si8902458edz.565.2022.03.15.09.21.26; Tue, 15 Mar 2022 09:21:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@crapouillou.net header.s=mail header.b=NIVNpvPT; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=crapouillou.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244473AbiCNT7p (ORCPT + 99 others); Mon, 14 Mar 2022 15:59:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52044 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S245123AbiCNT6y (ORCPT ); Mon, 14 Mar 2022 15:58:54 -0400 Received: from aposti.net (aposti.net [89.234.176.197]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 031F11128; Mon, 14 Mar 2022 12:57:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=crapouillou.net; s=mail; t=1647287862; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=MJhVqCXdY5vJSE5DEOiKyiWllO/DjfEoLcGECqfYSW4=; b=NIVNpvPTZkirRbu+BOYPi60LbI9AoqxRpyRbWSy3PC7vaNpfuMN52w1uACB69NAxLSxnyE 25hP3YRM/ICm61yd3jYj0TlLbVHBEDcKiPUG7PSJbPu0elKwdCGGK/4KUcVIH3pRDyB2hE f3R+tOb354A4L3E2V8sLsbC1mdgrsCw= Date: Mon, 14 Mar 2022 19:57:32 +0000 From: Paul Cercueil Subject: Re: [PATCH v4 1/4] drm/ingenic : add ingenic_drm_bridge_atomic_enable To: Christophe Branchereau Cc: David Airlie , Daniel Vetter , Thierry Reding , Sam Ravnborg , Rob Herring , linux-kernel@vger.kernel.org, linux-mips@vger.kernel.org, dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org Message-Id: In-Reply-To: <20220311170240.173846-2-cbranchereau@gmail.com> References: <20220311170240.173846-1-cbranchereau@gmail.com> <20220311170240.173846-2-cbranchereau@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1; format=flowed Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Christophe, Le ven., mars 11 2022 at 18:02:37 +0100, Christophe Branchereau=20 a =E9crit : > This allows the CRTC to be enabled after panels have slept out, > and before their display is turned on, solving a graphical bug > on the newvision nv3502c >=20 > Signed-off-by: Christophe Branchereau > --- > drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 19 +++++++++++++------ > 1 file changed, 13 insertions(+), 6 deletions(-) >=20 > diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c=20 > b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c > index dcf44cb00821..51512f41263e 100644 > --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c > +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c > @@ -226,6 +226,18 @@ static int ingenic_drm_update_pixclk(struct=20 > notifier_block *nb, > } > } >=20 > +static void ingenic_drm_bridge_atomic_enable(struct drm_bridge=20 > *bridge, > + struct drm_bridge_state *old_bridge_state) > +{ > + struct ingenic_drm *priv =3D drm_device_get_priv(bridge->dev); > + > + regmap_write(priv->map, JZ_REG_LCD_STATE, 0); > + > + regmap_update_bits(priv->map, JZ_REG_LCD_CTRL, > + JZ_LCD_CTRL_ENABLE | JZ_LCD_CTRL_DISABLE, > + JZ_LCD_CTRL_ENABLE); > +} > + > static void ingenic_drm_crtc_atomic_enable(struct drm_crtc *crtc, > struct drm_atomic_state *state) > { > @@ -237,17 +249,11 @@ static void=20 > ingenic_drm_crtc_atomic_enable(struct drm_crtc *crtc, > if (WARN_ON(IS_ERR(priv_state))) > return; >=20 > - regmap_write(priv->map, JZ_REG_LCD_STATE, 0); > - > /* Set addresses of our DMA descriptor chains */ > next_id =3D priv_state->use_palette ? HWDESC_PALETTE : 0; > regmap_write(priv->map, JZ_REG_LCD_DA0, dma_hwdesc_addr(priv,=20 > next_id)); > regmap_write(priv->map, JZ_REG_LCD_DA1, dma_hwdesc_addr(priv, 1)); >=20 > - regmap_update_bits(priv->map, JZ_REG_LCD_CTRL, > - JZ_LCD_CTRL_ENABLE | JZ_LCD_CTRL_DISABLE, > - JZ_LCD_CTRL_ENABLE); > - > drm_crtc_vblank_on(crtc); > } >=20 > @@ -968,6 +974,7 @@ static const struct drm_encoder_helper_funcs=20 > ingenic_drm_encoder_helper_funcs =3D >=20 > static const struct drm_bridge_funcs ingenic_drm_bridge_funcs =3D { > .attach =3D ingenic_drm_bridge_attach, > + .atomic_enable =3D ingenic_drm_bridge_atomic_enable, Shouldn't we have a .atomic_disable() as well? If the CRTC is now=20 enabled in the bridge's .atomic_enable, it would make sense to have it=20 disabled in the .atomic_disable(). Cheers, -Paul > .atomic_check =3D ingenic_drm_bridge_atomic_check, > .atomic_reset =3D drm_atomic_helper_bridge_reset, > .atomic_duplicate_state =3D drm_atomic_helper_bridge_duplicate_state, > -- > 2.35.1 >=20