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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 50E2ECDB47E for ; Fri, 20 Oct 2023 11:27:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1377034AbjJTL1h (ORCPT ); Fri, 20 Oct 2023 07:27:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35202 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1376935AbjJTL1g (ORCPT ); Fri, 20 Oct 2023 07:27:36 -0400 Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com [IPv6:2a00:1450:4864:20::22a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E191391 for ; Fri, 20 Oct 2023 04:27:31 -0700 (PDT) Received: by mail-lj1-x22a.google.com with SMTP id 38308e7fff4ca-2c5071165d5so11509021fa.0 for ; Fri, 20 Oct 2023 04:27:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1697801250; x=1698406050; darn=vger.kernel.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=cMmNFqskfyUOXpQegXuQzmiikeYo6k8K/89VdvccPyY=; b=V7jMwcp8I6tDHGfkUpaYKQytTUshyfYOcR3VIrM4Vkte3JKiOUFyv/1fY0f6QQioh+ KUSmplFsXbZKKI1A0IcK+SdAwZYl3BoCARVqLaCnROmBuQ5Nfpg45vypZql0/4XR9wqb X/qDr//smzBinnqI6BMr77gphAxDeYjFmlUOa2DNLOThuUvQUQO+Tz/RKsiPHrc+jQIV XD+ubwrZClTBV6hCnu1AfTLSQmuFi+hFTWGBvEuB/tkyVjxZegp9WuEcTtc9PLKNNCvN wH6ISrOsW7sbwQ0xfDy51uvZLoTlaIOQkfnqqx+DQyt0gEZuDsGWLHF3sYvpP9q9deeG EHAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697801250; x=1698406050; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=cMmNFqskfyUOXpQegXuQzmiikeYo6k8K/89VdvccPyY=; b=RnsMgBXBbhGfPNUvKt8Zxy37r6HG38zJBMVEQJrcY0RDup3rRUHdTb9901Z+adPMn4 3NdgSwjx1VT+QiBui8gPkItrZF7r/MB0t1xdACC1I2BlDT2MfQ3c+zfmChQ6Rc1o0gWD R1QrHE2cB4w5MN0aZLZsFQ8/ZHRQ1KsUm6QsfTplfUDys14CszMLJ0aYR9vB2PtU6HHV bimfzt1VcKlWBiCg87A5vAzL3dT8urXxPxOyjSPNpQw12X7gH1tN0gcNLaIdYEcvBzRs sSfsnYMGLTilQS3AFCZLvl8qgjXGq1DTK4Uxy3z5BYuD7Bnmskj7FvM/NXcBZzdlnW2E CGEw== X-Gm-Message-State: AOJu0YzHwoLNLCkAA5qvNr41ynyEuPvyaqjl0rXsCPR860ZWwSs498ql 9EHGuHPaOEqesprcwFOSs+8g1ni4otQ8tRdVdxaxPA== X-Google-Smtp-Source: AGHT+IF6PQTaN2LIwk2vIQs8dGQckxx0OgLpZjue64p2nFkQLUkLGAUYJizVCo1QpyNFwO8uojzoSw== X-Received: by 2002:a2e:a99b:0:b0:2b9:3684:165 with SMTP id x27-20020a2ea99b000000b002b936840165mr1279776ljq.8.1697801250111; Fri, 20 Oct 2023 04:27:30 -0700 (PDT) Received: from aspen.lan (aztw-34-b2-v4wan-166919-cust780.vm26.cable.virginm.net. [82.37.195.13]) by smtp.gmail.com with ESMTPSA id bi9-20020a05600c3d8900b003fc16ee2864sm1912171wmb.48.2023.10.20.04.27.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Oct 2023 04:27:29 -0700 (PDT) Date: Fri, 20 Oct 2023 12:27:27 +0100 From: Daniel Thompson To: Uwe =?iso-8859-1?Q?Kleine-K=F6nig?= Cc: Philipp Zabel , Thierry Reding , Lee Jones , Jingoo Han , Helge Deller , linux-pwm@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] backlight: pwm_bl: Avoid backlight flicker applying initial PWM state Message-ID: <20231020112727.GF23755@aspen.lan> References: <20230608-backlight-pwm-avoid-flicker-v1-1-afd380d50174@pengutronix.de> <20231018210741.6t3yfj6qgmpwhhlo@pengutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20231018210741.6t3yfj6qgmpwhhlo@pengutronix.de> Precedence: bulk List-ID: X-Mailing-List: linux-fbdev@vger.kernel.org On Wed, Oct 18, 2023 at 11:07:41PM +0200, Uwe Kleine-König wrote: > Hello Philipp, > > On Thu, Jun 08, 2023 at 04:11:14PM +0200, Philipp Zabel wrote: > > The initial PWM state returned by pwm_init_state() has a duty cycle > > of 0 ns. > > This is only true for drivers without a .get_state() callback, isn't it? pwm_init_state() explicitly zeros the duty-cycle in order to avoid problems when the default args have a different period to the currently applied config: https://elixir.bootlin.com/linux/latest/source/include/linux/pwm.h#L174 Daniel. > > To avoid backlight flicker when taking over an enabled > > display from the bootloader, skip the initial pwm_apply_state() > > and leave the PWM be until backlight_update_state() will apply the > > state with the desired brightness. > > > > Signed-off-by: Philipp Zabel > > --- > > With a PWM driver that allows to inherit PWM state from the bootloader, > > postponing the initial pwm_apply_state() with 0 ns duty cycle allows to > > set the desired duty cycle before the PWM is set, avoiding a short flicker > > if the backlight was previously enabled and will be enabled again. > > --- > > drivers/video/backlight/pwm_bl.c | 16 ++++++++-------- > > 1 file changed, 8 insertions(+), 8 deletions(-) > > > > diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c > > index fce412234d10..47a917038f58 100644 > > --- a/drivers/video/backlight/pwm_bl.c > > +++ b/drivers/video/backlight/pwm_bl.c > > @@ -531,12 +531,10 @@ static int pwm_backlight_probe(struct platform_device *pdev) > > if (!state.period && (data->pwm_period_ns > 0)) > > state.period = data->pwm_period_ns; > > > > - ret = pwm_apply_state(pb->pwm, &state); > > - if (ret) { > > - dev_err(&pdev->dev, "failed to apply initial PWM state: %d\n", > > - ret); > > - goto err_alloc; > > - } > > + /* > > + * No need to apply initial state, except in the error path. > > Why do you want to modify the PWM in the error path? I would have > expected not touching it at all in .probe() is fine?! > > > + * State will be applied by backlight_update_status() on success. > > + */ > > > > memset(&props, 0, sizeof(struct backlight_properties)); > > > > Best regards > Uwe > > -- > Pengutronix e.K. | Uwe Kleine-König | > Industrial Linux Solutions | https://www.pengutronix.de/ | 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 7E856CDB474 for ; Fri, 20 Oct 2023 11:27:35 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A631010E0A0; Fri, 20 Oct 2023 11:27:34 +0000 (UTC) Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com [IPv6:2a00:1450:4864:20::236]) by gabe.freedesktop.org (Postfix) with ESMTPS id E57D810E0A0 for ; Fri, 20 Oct 2023 11:27:31 +0000 (UTC) Received: by mail-lj1-x236.google.com with SMTP id 38308e7fff4ca-2b95d5ee18dso11364181fa.1 for ; Fri, 20 Oct 2023 04:27:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1697801250; x=1698406050; darn=lists.freedesktop.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=cMmNFqskfyUOXpQegXuQzmiikeYo6k8K/89VdvccPyY=; b=QpOPxEBrXnyZA34wNreyblJakuhda6exiDuusJeSOau1GXw2zGLqXX17Roy7m+IlTG BHQ16bU2vVmd1Gy/fa1CFsIFkRdsDaEoLNON1zEajEw3ADXBuxt4bKIyUqhrdzPQDk4n FC5QGyr4lWAD6WawdWL+m7thcVU1vP9+/ye6p7jdi9iQl/CXdWe93Kxanbcos8FV3QWZ vvdeV/W4pAaOZH1fvm3RfH9wLA5E6y0V4L2N533NlL4xpVz376+VXgV1sJm/C3ntk/bG MuTNelOcxBeW5worCYPYcn2Ft0jPeexwtDR5lDPcexiVfu8dnadzFUGbC9rcDsfgS+1O rfQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697801250; x=1698406050; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=cMmNFqskfyUOXpQegXuQzmiikeYo6k8K/89VdvccPyY=; b=hJO2nqwkEX7Cdb/ss6j250l8B/h8SiFY+eXsivz30l+Mkzhz0Lealut0buKpqO4Y2C 76TmTCCT4h6F9xgzPxsxjx9eHMqyhMb42JItuvmA03JUYP7uU06le+phvliebeSqWGMo 0hAFp6WrFCq4PTmOABguxAhHNyibaUhJzY2IQ17aMsKSXID6Z3bZjUmgaROe7huikx9Z o/c6qWvJh+T3FBPiqWJq/KYFAdrVw397Uqw1cubGRz+XsIqTqzb2XaQNaSX1QUbKtYd3 hL66X79zODixtnnwuGuj6FH6uW1mUNM5/3P7wjYczoyN9cqsuC0dtKmH3f/ccNny9i58 riTg== X-Gm-Message-State: AOJu0YyffYJ+OtcXL8ta3vSaVAPSMkDtoQtSJKP62FXY3DeyxrYG19Rh VzGBAqme4GKPa9bOBGPotupDFA== X-Google-Smtp-Source: AGHT+IF6PQTaN2LIwk2vIQs8dGQckxx0OgLpZjue64p2nFkQLUkLGAUYJizVCo1QpyNFwO8uojzoSw== X-Received: by 2002:a2e:a99b:0:b0:2b9:3684:165 with SMTP id x27-20020a2ea99b000000b002b936840165mr1279776ljq.8.1697801250111; Fri, 20 Oct 2023 04:27:30 -0700 (PDT) Received: from aspen.lan (aztw-34-b2-v4wan-166919-cust780.vm26.cable.virginm.net. [82.37.195.13]) by smtp.gmail.com with ESMTPSA id bi9-20020a05600c3d8900b003fc16ee2864sm1912171wmb.48.2023.10.20.04.27.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Oct 2023 04:27:29 -0700 (PDT) Date: Fri, 20 Oct 2023 12:27:27 +0100 From: Daniel Thompson To: Uwe =?iso-8859-1?Q?Kleine-K=F6nig?= Subject: Re: [PATCH] backlight: pwm_bl: Avoid backlight flicker applying initial PWM state Message-ID: <20231020112727.GF23755@aspen.lan> References: <20230608-backlight-pwm-avoid-flicker-v1-1-afd380d50174@pengutronix.de> <20231018210741.6t3yfj6qgmpwhhlo@pengutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20231018210741.6t3yfj6qgmpwhhlo@pengutronix.de> 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: linux-pwm@vger.kernel.org, linux-fbdev@vger.kernel.org, Jingoo Han , Helge Deller , Lee Jones , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Thierry Reding Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" On Wed, Oct 18, 2023 at 11:07:41PM +0200, Uwe Kleine-König wrote: > Hello Philipp, > > On Thu, Jun 08, 2023 at 04:11:14PM +0200, Philipp Zabel wrote: > > The initial PWM state returned by pwm_init_state() has a duty cycle > > of 0 ns. > > This is only true for drivers without a .get_state() callback, isn't it? pwm_init_state() explicitly zeros the duty-cycle in order to avoid problems when the default args have a different period to the currently applied config: https://elixir.bootlin.com/linux/latest/source/include/linux/pwm.h#L174 Daniel. > > To avoid backlight flicker when taking over an enabled > > display from the bootloader, skip the initial pwm_apply_state() > > and leave the PWM be until backlight_update_state() will apply the > > state with the desired brightness. > > > > Signed-off-by: Philipp Zabel > > --- > > With a PWM driver that allows to inherit PWM state from the bootloader, > > postponing the initial pwm_apply_state() with 0 ns duty cycle allows to > > set the desired duty cycle before the PWM is set, avoiding a short flicker > > if the backlight was previously enabled and will be enabled again. > > --- > > drivers/video/backlight/pwm_bl.c | 16 ++++++++-------- > > 1 file changed, 8 insertions(+), 8 deletions(-) > > > > diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c > > index fce412234d10..47a917038f58 100644 > > --- a/drivers/video/backlight/pwm_bl.c > > +++ b/drivers/video/backlight/pwm_bl.c > > @@ -531,12 +531,10 @@ static int pwm_backlight_probe(struct platform_device *pdev) > > if (!state.period && (data->pwm_period_ns > 0)) > > state.period = data->pwm_period_ns; > > > > - ret = pwm_apply_state(pb->pwm, &state); > > - if (ret) { > > - dev_err(&pdev->dev, "failed to apply initial PWM state: %d\n", > > - ret); > > - goto err_alloc; > > - } > > + /* > > + * No need to apply initial state, except in the error path. > > Why do you want to modify the PWM in the error path? I would have > expected not touching it at all in .probe() is fine?! > > > + * State will be applied by backlight_update_status() on success. > > + */ > > > > memset(&props, 0, sizeof(struct backlight_properties)); > > > > Best regards > Uwe > > -- > Pengutronix e.K. | Uwe Kleine-König | > Industrial Linux Solutions | https://www.pengutronix.de/ |