Received: by 2002:a05:6358:7058:b0:131:369:b2a3 with SMTP id 24csp2378269rwp; Fri, 14 Jul 2023 05:26:19 -0700 (PDT) X-Google-Smtp-Source: APBJJlHOid0tYNgqyq+nH2Rc1D5vwt7gtF45SuRLW50l8KPHb1uFxAd94fF8I0ArfA1rRmJ/TcWH X-Received: by 2002:a05:6a20:8e28:b0:12f:eb73:fc64 with SMTP id y40-20020a056a208e2800b0012feb73fc64mr3963357pzj.51.1689337579333; Fri, 14 Jul 2023 05:26:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689337579; cv=none; d=google.com; s=arc-20160816; b=tnfjslzqWkp6FpXUOVFvN4JRTBik8o/2dLSDGrSieIvUdHM1Fz3P+A0zWCQndhH0EQ wzzjgNUCOszHB1GHeFYLUiRARwiP6Er79nyf7a3hpIUTpFB2dcv/7ZsgCjJ9SL06JsrG 09yi/2eilWqgPgYQQQw9p8V7JYL18t88WSzdQySrrslNN+aeM0StZcLKK7rI+rHrA3Tv ZyPv0fcCp+etIoIeAXKaHS+MIsljE9z1ZKG55Hdll4SXY8jXyLdkJbU/m7NcBU2ODZVV Kvn5A0zF93j+5ywJ5W+MGfpw0h6M7SjKasc46jOtPhWue5y0IZ1Nd7gWgeP4RvCeWdLL o0Bg== 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:date:subject:cc:to:from :dkim-signature; bh=u06tgDOD7cwIlWOvnR6QjrDtX4w5Uq2Dumh06lblnLk=; fh=DPhSm9bkTpS5JblvyMkT/M6tvsAOu89GY+cajnw1vZQ=; b=mOGZKJmQDgQ3cYfQviApYl5d1+KKwlja2cK27I/ZoHtbtVcfQNvBnOOxAE3H+uBpsa abQP/bEs8VoNXqUUtnUeg7C6qc8K2cIgxIkBX8+3r3XITRtJjr4O2RDZSGX5uURlGevc yVishz03o4Z1wfOk+q9hJ5iAjjNF8ZbH8iFiN+UUEtoionT1M33eeXTEyCcWSEznZt35 aVqaJkaq3x2qmqSW5euHPw6g7viHd2kY8+4CNdulp4liojz9ok2F/xJNuOVcdfZg5S1y jpqw9ZGF9x/LOqDLDzEFGxa842DRVvSp4uaPTwB54XL0efmSY2TH24xwAPxR2Qmmrx+h kevA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=ZizL2KNz; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s193-20020a632cca000000b00553859c59c1si2019854pgs.695.2023.07.14.05.26.07; Fri, 14 Jul 2023 05:26:19 -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=@gmail.com header.s=20221208 header.b=ZizL2KNz; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235753AbjGNMOw (ORCPT + 99 others); Fri, 14 Jul 2023 08:14:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59962 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235404AbjGNMOu (ORCPT ); Fri, 14 Jul 2023 08:14:50 -0400 Received: from mail-lf1-x135.google.com (mail-lf1-x135.google.com [IPv6:2a00:1450:4864:20::135]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EDB972D68; Fri, 14 Jul 2023 05:14:48 -0700 (PDT) Received: by mail-lf1-x135.google.com with SMTP id 2adb3069b0e04-4fb7589b187so3133878e87.1; Fri, 14 Jul 2023 05:14:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689336887; x=1691928887; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=u06tgDOD7cwIlWOvnR6QjrDtX4w5Uq2Dumh06lblnLk=; b=ZizL2KNz/0ekwzdN2fp2PsVPMxigv2//r6fIw5YtSY1gfA26UnViwFAwKYTeWE+ry1 J1mY/W0BMGlW8T0OqGzdODUNivKMJWVH4xzAVctXIIPNatG5gHyphQ4XsGzOmMM3TQBC QdkyetoY5N8aa96YceojRE2LJCSb7gkwLADV5FbwXaqGaO4PX9eqx0B+WLIZVyuJtwIB Yc5DwxgsZboK+aMDgrgpR3EWF3o5/yyd5r6Vn8zyPoCWEuZWK+M5R3q1Sw4iDOMZBK+M Re87sH+EYylefiUsfAgCRdm3rVXKnp6vmCtPT4dQGA0vDErYl53o1h4V0LTIYq4ymyO4 SYlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689336887; x=1691928887; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=u06tgDOD7cwIlWOvnR6QjrDtX4w5Uq2Dumh06lblnLk=; b=jHJTae3iZLrXOwXERUsmIAmR84BnxKTrXd0wEZMjyj3F6bPxND4TBGEjCl7QeqtU4G 9nwWOd8cKv0cRRwXbEv2cGi727hk/eIp4JqBDuVMAiifyZTUi/2NAffsroQyCN65ex2w tpX2Q45P0lipIlfR9JzBJRla1yJJyr7Eau4XKqJlNFKc5OSK02ZNjfkSZ5f2PAk8gV8o 8zHZuGVmiI/gUInKZYhDAlAtGx1xT+MnL+gOvkXSgrocSAWQjTTIJ+RT2WM1gMpE+fff k52n+jkZtdlMQxEmIxY3uWPsKR93Lb8cIQY++l5nLwRZdRwzWfWuChGdKQpoORJglJNc f3YA== X-Gm-Message-State: ABy/qLYWmFxF9xbLmY70LZtD3Pwpddivr3jVB7uGAGhlq7ukiTOpGUwY wVuyHssEwOuU4jyUfoKiwuc= X-Received: by 2002:a19:5003:0:b0:4fc:3756:754e with SMTP id e3-20020a195003000000b004fc3756754emr3201988lfb.56.1689336887104; Fri, 14 Jul 2023 05:14:47 -0700 (PDT) Received: from tablet.my.domain (ip-37-248-157-105.multi.internet.cyfrowypolsat.pl. [37.248.157.105]) by smtp.gmail.com with ESMTPSA id r16-20020aa7d150000000b0051e19bf66a4sm5680666edo.83.2023.07.14.05.14.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Jul 2023 05:14:46 -0700 (PDT) From: Artur Weber To: Lee Jones Cc: Daniel Thompson , Jingoo Han , Helge Deller , Thierry Reding , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Artur Weber , dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pwm@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht Subject: [PATCH 1/2] backlight: lp855x: Initialize PWM state on first brightness change Date: Fri, 14 Jul 2023 14:14:39 +0200 Message-ID: <20230714121440.7717-2-aweber.kernel@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230714121440.7717-1-aweber.kernel@gmail.com> References: <20230714121440.7717-1-aweber.kernel@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,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 As pointed out by Uwe Kleine-König[1], the changes introduced in commit c1ff7da03e16 ("video: backlight: lp855x: Get PWM for PWM mode during probe") caused the PWM state set up by the bootloader to be re-set when the driver is probed. This differs from the behavior from before that patch, where the PWM state would be initialized on the first brightness change. Fix this by moving the PWM state initialization into the PWM control function. Add a new variable, needs_pwm_init, to the device info struct to allow us to check whether we need the initialization, or whether it has already been done. [1] https://lore.kernel.org/lkml/20230614083953.e4kkweddjz7wztby@pengutronix.de/ Fixes: c1ff7da03e16 ("video: backlight: lp855x: Get PWM for PWM mode during probe") Signed-off-by: Artur Weber --- drivers/video/backlight/lp855x_bl.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/drivers/video/backlight/lp855x_bl.c b/drivers/video/backlight/lp855x_bl.c index 1c9e921bca14..349ec324bc1e 100644 --- a/drivers/video/backlight/lp855x_bl.c +++ b/drivers/video/backlight/lp855x_bl.c @@ -71,6 +71,7 @@ struct lp855x { struct device *dev; struct lp855x_platform_data *pdata; struct pwm_device *pwm; + bool needs_pwm_init; struct regulator *supply; /* regulator for VDD input */ struct regulator *enable; /* regulator for EN/VDDIO input */ }; @@ -220,7 +221,15 @@ static void lp855x_pwm_ctrl(struct lp855x *lp, int br, int max_br) { struct pwm_state state; - pwm_get_state(lp->pwm, &state); + if (lp->needs_pwm_init) { + pwm_init_state(lp->pwm, &state); + /* Legacy platform data compatibility */ + if (lp->pdata->period_ns > 0) + state.period = lp->pdata->period_ns; + lp->needs_pwm_init = false; + } else { + pwm_get_state(lp->pwm, &state); + } state.duty_cycle = div_u64(br * state.period, max_br); state.enabled = state.duty_cycle; @@ -387,7 +396,6 @@ static int lp855x_probe(struct i2c_client *cl) const struct i2c_device_id *id = i2c_client_get_device_id(cl); const struct acpi_device_id *acpi_id = NULL; struct device *dev = &cl->dev; - struct pwm_state pwmstate; struct lp855x *lp; int ret; @@ -470,15 +478,11 @@ static int lp855x_probe(struct i2c_client *cl) else return dev_err_probe(dev, ret, "getting PWM\n"); + lp->needs_pwm_init = false; lp->mode = REGISTER_BASED; dev_dbg(dev, "mode: register based\n"); } else { - pwm_init_state(lp->pwm, &pwmstate); - /* Legacy platform data compatibility */ - if (lp->pdata->period_ns > 0) - pwmstate.period = lp->pdata->period_ns; - pwm_apply_state(lp->pwm, &pwmstate); - + lp->needs_pwm_init = true; lp->mode = PWM_BASED; dev_dbg(dev, "mode: PWM based\n"); } -- 2.41.0