Received: by 2002:a05:7412:7c14:b0:fa:6e18:a558 with SMTP id ii20csp192892rdb; Mon, 22 Jan 2024 00:33:43 -0800 (PST) X-Google-Smtp-Source: AGHT+IFqVGI/7iA9Y7H9d5G/I2mNsFud0GRSXU/NJ0Z51NmS9r1/uAfHlLSNcGDGnecT77UswRQc X-Received: by 2002:a05:6358:528d:b0:175:b75:f0e3 with SMTP id g13-20020a056358528d00b001750b75f0e3mr925929rwa.12.1705912422872; Mon, 22 Jan 2024 00:33:42 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1705912422; cv=pass; d=google.com; s=arc-20160816; b=rQhR+oVWEj2ym7TdlCdYl48CtbNmaARpZI416q8jr/s5n2ozRM6+UJgY2r/o+rnib3 m4CsE8u23c5TJtQxzyLde3hCH+H+2uV3QmClezM2H+A3HhP+Bi4IVwtbEhP5BSPLTuVl od5c2duhkZUv/ZChe+UJ/Nm3/zPY3RiIC8FxAeqfxMYZeEm4nO7zHrvN/CkCvdTCvbdr rrBOFWE/D9u8d/hNwlJHYcOoYTRTQbFK9+Z9Zc+ASapst1T5lhxQepfrAzBjszbrVse5 4g4+iZ54RHla31jH2zvglUWw7W+q4L4WYBZ0gbHn7jRoUOQjUHUP+qZ+IW0EkSkDU3sG uK6Q== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:list-unsubscribe:list-subscribe:list-id:precedence :references:in-reply-to:message-id:date:subject:cc:to:from; bh=MX4Xczi1NezZ8Sv508TwZOkFSlSUNzvSw1aBJZ8z0Xc=; fh=95ELfTRbd3XNYg9rj2TePHqYKoG4l12p0iX6Yjf47Ms=; b=k5QBwp98DAs+1zLDML4Pn2LlR5OZHpuTMIQ01LmxjNF4hhRhh1zy0FzUvJ4K1C651V jvxEcL3t0ZILJGYncr1bQdCuL7paboFqyuVk5NhZiXw4xfyz8SuDt1G9nbb4q2vp00nu YYuj6g5ysj+F87llaKimHdkm08TcMYb/6150SHbwCecMtd3eXUWRH3D0u0PGQsVSF/bS 2tHRL4cb2EmHFrQ89wjkaCd07p54eV0XEgkPMYf09F+DnbLuSxwN8t1awO6cGvf3svZ3 4nec/IHCsdh6+lEnXiePBEV5QGkipSLycBRb8FPN+3Q21p5lBaNX9KedYNkM6c2ZA780 b/mg== ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=unisoc.com); spf=pass (google.com: domain of linux-kernel+bounces-32499-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-32499-linux.lists.archive=gmail.com@vger.kernel.org" Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [2604:1380:40f1:3f00::1]) by mx.google.com with ESMTPS id y16-20020a63e250000000b005ce0767c9d2si7872567pgj.582.2024.01.22.00.33.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Jan 2024 00:33:42 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-32499-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) client-ip=2604:1380:40f1:3f00::1; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=unisoc.com); spf=pass (google.com: domain of linux-kernel+bounces-32499-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-32499-linux.lists.archive=gmail.com@vger.kernel.org" Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 6E9CAB26746 for ; Mon, 22 Jan 2024 08:18:38 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id BC5C820DF7; Mon, 22 Jan 2024 08:18:27 +0000 (UTC) Received: from SHSQR01.spreadtrum.com (mx1.unisoc.com [222.66.158.135]) (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 E23B520DE0 for ; Mon, 22 Jan 2024 08:18:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=222.66.158.135 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1705911507; cv=none; b=qJKSOexWzDA9NgUzU4Wt7URkd8M4bmJ9EX4k4LXQA7RdWOz0WKOneHvn63nqhl1EzepT7vjKFcUJyvp0qaqDCm7QWaF1riTkdf2kk/J4iv4CUjWQ1MsQCK8wY6SOdGYjI+lt9rVXrNq/3ITeOk+N0FxoS1fQ2e4DwfR2ecTOk+A= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1705911507; c=relaxed/simple; bh=r5yH1TaiCnUCBJprvitoDlf5mXdrpFFc3uvABTt2tEs=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=npuBSDWpZd74C65McHHdMJYZDbSH9+1zAhtE50Ep9TO6+V4njJcOcSescw2ogVWYytS36BSzNNln9EzxiBo4ZB7L/S4blNtFD0sy1/E5j6Eh2FjaHDXZqVuhFfjzIIf70uWK7ewRPcPhYCqH1sXwdXNruAVZSdCm9qZMkhCvpns= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=unisoc.com; spf=pass smtp.mailfrom=unisoc.com; arc=none smtp.client-ip=222.66.158.135 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=unisoc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=unisoc.com Received: from dlp.unisoc.com ([10.29.3.86]) by SHSQR01.spreadtrum.com with ESMTP id 40M8I5t6055439; Mon, 22 Jan 2024 16:18:05 +0800 (+08) (envelope-from Wenhua.Lin@unisoc.com) Received: from SHDLP.spreadtrum.com (shmbx06.spreadtrum.com [10.0.1.11]) by dlp.unisoc.com (SkyGuard) with ESMTPS id 4TJNFf5R23z2Rb68H; Mon, 22 Jan 2024 16:10:46 +0800 (CST) Received: from xm9614pcu.spreadtrum.com (10.13.2.29) by shmbx06.spreadtrum.com (10.0.1.11) with Microsoft SMTP Server (TLS) id 15.0.1497.23; Mon, 22 Jan 2024 16:18:03 +0800 From: Wenhua Lin To: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= CC: Orson Zhai , Baolin Wang , Chunyan Zhang , , , wenhua lin , Wenhua Lin , Xiongpeng Wu , zhaochen su , Zhaochen Su , Xiaolong Wang Subject: [PATCH 3/6] pwm: sprd: Optimize the calculation method of duty Date: Mon, 22 Jan 2024 16:17:51 +0800 Message-ID: <20240122081754.17058-4-Wenhua.Lin@unisoc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240122081754.17058-1-Wenhua.Lin@unisoc.com> References: <20240122081754.17058-1-Wenhua.Lin@unisoc.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain X-ClientProxiedBy: SHCAS03.spreadtrum.com (10.0.1.207) To shmbx06.spreadtrum.com (10.0.1.11) X-MAIL:SHSQR01.spreadtrum.com 40M8I5t6055439 Use DIV_ROUND_CLOSEST_ULL to avoid overflow and improve accuracy when calculating duty. Signed-off-by: Wenhua Lin --- drivers/pwm/pwm-sprd.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/pwm/pwm-sprd.c b/drivers/pwm/pwm-sprd.c index 411e91891c6d..22793e2b8707 100644 --- a/drivers/pwm/pwm-sprd.c +++ b/drivers/pwm/pwm-sprd.c @@ -156,7 +156,8 @@ static int sprd_pwm_config(struct sprd_pwm_chip *spc, struct pwm_device *pwm, * given settings (MOD and input clock). */ mod = spc->mod[pwm->hwpwm]; - duty = duty_ns * mod / period_ns; + tmp = (u64)duty_ns * mod; + duty = DIV_ROUND_CLOSEST_ULL(tmp, period_ns); tmp = (u64)chn->clk_rate * period_ns; do_div(tmp, NSEC_PER_SEC); -- 2.17.1