From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 974263546FA; Wed, 15 Jul 2026 11:05:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784113529; cv=none; b=Aftd4HMq9bi1IjsM94JJHyYjUfZi/ENpmP+j6vulaOBLK3ktqSJxBMQW5W/pYgDrsilhRNpDwsNxUu3vdue+dCPY+OOedIxEENAzEqosUD4Pnpsm9sZxN7LaiqBcqbcomJM2ut+aiXeSivV4rIDIpHpLEBCRfguEjMtQKFX0xaI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784113529; c=relaxed/simple; bh=FUOvUmj3ObiKDADM819etyhdJNDhRItkgYTkrK29MCg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=el9BNAKj1fI27qrn4ppsPY3lYskjhgsCYY9KSKAr8GYCkEZUiJEob3WEmR/jEkKtKHxFBr3Ss3IIxfNRhx59J6KPBt98LCrNr5HwL1vc1K37mcZ3Apeo9dnB6rfKSoIrO50cX4Ihts1DrGhP6aTisVsrv5Q7BErAqGWo3Pvt8ro= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=JmQe+TrM; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="JmQe+TrM" Received: by smtp.kernel.org (Postfix) with ESMTPS id 559B3C2BCF4; Wed, 15 Jul 2026 11:05:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1784113529; bh=FUOvUmj3ObiKDADM819etyhdJNDhRItkgYTkrK29MCg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=JmQe+TrMtmR5nBFkX4eTmdm8CawtVbzU/ieMhp/AylsdITXpXzbjQ/6NM151DG3KC guyPPi7ebNhBSorYZmSXVPVckVCNtsQFGnKGauLjoCI9Tcbb931CH/Jf3UZqMnPlhY o3ATXcEyBwy5WSwJNYAXKUVXJzt5kH9cIXtmJnKUbxJT9aFbwQ8sFhS+y7UJ7WJbPM GpEBi7f99oVyhn+dtHvPnrFiIpKGV3B91k/akBIYWofkNiYs4DGF8XajxdAF/prQ3p AohZ1wZ3Q+Q3jj/jMZBWv2ekEBZP9vG0TUshK8+RZlbhxUCHDy1pdrraZYN661X3NZ OAxLgSYymheHg== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3910AC4450E; Wed, 15 Jul 2026 11:05:29 +0000 (UTC) From: Keguang Zhang via B4 Relay Date: Wed, 15 Jul 2026 19:05:24 +0800 Subject: [PATCH v3 2/2] pwm: loongson: Reload PWM configuration through counter reset Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260715-pwm-loongson-fix-v3-2-0aab2847eaa7@gmail.com> References: <20260715-pwm-loongson-fix-v3-0-0aab2847eaa7@gmail.com> In-Reply-To: <20260715-pwm-loongson-fix-v3-0-0aab2847eaa7@gmail.com> To: Binbin Zhou , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= Cc: linux-pwm@vger.kernel.org, linux-kernel@vger.kernel.org, Keguang Zhang X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1784113526; l=1594; i=keguang.zhang@gmail.com; s=20231129; h=from:subject:message-id; bh=biFtvzcfE9GMfI0AelNWdMjYeCU43VSlkKbfLk28ODs=; b=PClAz4w6153hlGuTdMEpO1CayKm0GYsVyst61lz/k7k+AG5yBqA5h4oZzJVTPI+2rWjb9kIP0 0u7G12YgEo4Ddg0fbyq1Waxxj9DdT4elzY+gciVYqBRVMbYRIfdcfG5 X-Developer-Key: i=keguang.zhang@gmail.com; a=ed25519; pk=FMKGj/JgKll/MgClpNZ3frIIogsh5e5r8CeW2mr+WLs= X-Endpoint-Received: by B4 Relay for keguang.zhang@gmail.com/20231129 with auth_id=102 X-Original-From: Keguang Zhang Reply-To: keguang.zhang@gmail.com From: Keguang Zhang The Loongson PWM controller latches the LOW and PERIOD registers only at the start of each PWM period. After disabling and re-enabling the PWM, the controller resumes from the previous counter value and completes the current period before re-latching the updated LOW and PERIOD values. Reset the PWM counter when disabling the PWM and release it when enabling the PWM so that the updated LOW and PERIOD values are latched before the PWM starts running again. Fixes: 2b62c89448dd ("pwm: Add Loongson PWM controller support") Signed-off-by: Keguang Zhang --- drivers/pwm/pwm-loongson.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/pwm/pwm-loongson.c b/drivers/pwm/pwm-loongson.c index e703217a6d5e..c317d62fe813 100644 --- a/drivers/pwm/pwm-loongson.c +++ b/drivers/pwm/pwm-loongson.c @@ -103,6 +103,7 @@ static void pwm_loongson_disable(struct pwm_chip *chip, struct pwm_device *pwm) struct pwm_loongson_ddata *ddata = to_pwm_loongson_ddata(chip); val = pwm_loongson_readl(ddata, LOONGSON_PWM_REG_CTRL); + val |= LOONGSON_PWM_CTRL_REG_RST; val &= ~LOONGSON_PWM_CTRL_REG_EN; pwm_loongson_writel(ddata, val, LOONGSON_PWM_REG_CTRL); } @@ -113,6 +114,7 @@ static int pwm_loongson_enable(struct pwm_chip *chip, struct pwm_device *pwm) struct pwm_loongson_ddata *ddata = to_pwm_loongson_ddata(chip); val = pwm_loongson_readl(ddata, LOONGSON_PWM_REG_CTRL); + val &= ~LOONGSON_PWM_CTRL_REG_RST; val |= LOONGSON_PWM_CTRL_REG_EN; pwm_loongson_writel(ddata, val, LOONGSON_PWM_REG_CTRL); -- 2.43.0