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 2AD21C4332F for ; Tue, 14 Dec 2021 16:20:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229619AbhLNQUf (ORCPT ); Tue, 14 Dec 2021 11:20:35 -0500 Received: from guitar.tcltek.co.il ([84.110.109.230]:39105 "EHLO mx.tkos.co.il" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S229542AbhLNQUf (ORCPT ); Tue, 14 Dec 2021 11:20:35 -0500 X-Greylist: delayed 397 seconds by postgrey-1.27 at vger.kernel.org; Tue, 14 Dec 2021 11:20:34 EST Received: from tarshish (unknown [10.0.8.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx.tkos.co.il (Postfix) with ESMTPS id 886E8440F2F; Tue, 14 Dec 2021 18:13:54 +0200 (IST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tkos.co.il; s=default; t=1639498435; bh=1fwIRY6SB3en15B126frdgqHFepu3cN45gLKiln9Nso=; h=References:From:To:Cc:Subject:Date:In-reply-to:From; b=cdw3xqZFuSgR1xxHE6O8fkXx9pMF+xk8tQ4fd2t34wC3GLOUi6slFaBkrhOZNwZof 0Da0Bn179QiOLwtMxT96UQn6kOmlZYnKd1ZvmN/j3x520pCiIdEpThimWCewQP2g2o sC3eA5WO9r3E+iR/vzHSjhxfqj8i2hFAHHySxrLyC4Kfx4U/UNB0e7jDb0shTjLJFc g8arPYBAoONPTa0twWhLU6KeISS2rTuWrEfo+ZedJlVSsT6zFvj8DMIp8Yjh6/OT9F Ve/LaPoDVVXD05Q7I9ajmRr+3w+ZjTSMUbzNx/NYpRbkVgOzcEfvbVhX1olHPhEjRV tAVJKnN9qK5Pg== References: <5c95bcf62a9d08208a7da19f0b1cec0689502b9a.1630323987.git.baruch@tkos.co.il> <20210914124959.spwjiifvysposhls@pengutronix.de> User-agent: mu4e 1.6.10; emacs 27.1 From: Baruch Siach To: Uwe =?utf-8?Q?Kleine-K=C3=B6nig?= Cc: Thierry Reding , Lee Jones , Andy Gross , Bjorn Andersson , Balaji Prakash J , Rob Herring , Robert Marko , Kathiravan T , linux-pwm@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kernel@pengutronix.de Subject: Re: [PATCH v8 2/4] pwm: driver for qualcomm ipq6018 pwm block Date: Tue, 14 Dec 2021 18:05:08 +0200 In-reply-to: <20210914124959.spwjiifvysposhls@pengutronix.de> Message-ID: <87pmpzmaf1.fsf@tarshish> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Hi Uwe, On Tue, Sep 14 2021, Uwe Kleine-K=C3=B6nig wrote: > On Mon, Aug 30, 2021 at 02:46:25PM +0300, Baruch Siach wrote: >> + for (; pre_div <=3D IPQ_PWM_MAX_DIV; pre_div++) { >> + pwm_div =3D DIV64_U64_ROUND_UP(period_ns * rate, >> + (u64)NSEC_PER_SEC * (pre_div + 1)); >> + pwm_div--; > > Can it happen that pwm_div is zero before it is decreased by one? Also > you need to round down here; with rounding up the resulting period is > bigger than the requested period (unless the division yields an exact > integer). I followed your round down advice on v9, but it turned out to be wrong. Round down means that the divider is smaller so the period is larger. This means that 'diff' below can not be positive. So only exact match (diff =3D=3D 0) works. When there is no exact match, best_* values are left in their initial setting. I'll fix that in v10 along with another bug I introduced in v9. baruch >> + if (pre_div > pwm_div) >> + break; > > A comment here why we can end the search would be good. > >> + /* >> + * Make sure we can do 100% duty cycle where >> + * hi_dur =3D=3D pwm_div + 1 >> + */ >> + if (pwm_div > IPQ_PWM_MAX_DIV - 1) >> + continue; >> + >> + diff =3D ((uint64_t)freq * (pre_div + 1) * (pwm_div + 1)) >> + - (uint64_t)rate; >> + >> + if (diff < 0) /* period larger than requested */ >> + continue; >> + if (diff =3D=3D 0) { /* bingo */ >> + best_pre_div =3D pre_div; >> + best_pwm_div =3D pwm_div; >> + break; >> + } >> + if (diff < min_diff) { >> + min_diff =3D diff; >> + best_pre_div =3D pre_div; >> + best_pwm_div =3D pwm_div; >> + } >> + } >> + >> + /* config divider values for the closest possible frequency */ >> + config_div_and_duty(pwm, best_pre_div, best_pwm_div, >> + rate, duty_ns, state->enabled); >> + >> + return 0; >> +} --=20 ~. .~ Tk Open Systems =3D}------------------------------------------------ooO--U--Ooo------------= {=3D - baruch@tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il - 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 234A1C433EF for ; Tue, 14 Dec 2021 16:15:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:In-reply-to: Date:Subject:Cc:To:From:References:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=aE78CJslhlYTSjDleFpA0uhDnd00KyPuo5EEwT05TL4=; b=ZvEOFmHpzHuULk 3bDRO6Wjg0N9ClpzovHcAC2Jst/fUS1nqOhfF/cX5yuh4XeyFtUeSwFsae1B62Qth/2Qze0NWIZVe C0l1gUpa+ZhsER43phX8rC6Gr81CVMalpeDBgKeuyqqzWY92AUwXuqTlpLdl5K2ZJPb4ZVnze6/m2 DNdhwi3FsaOegdFelXa8KZvrj09yLSBRR3YaI0M+IHYzeHGpXiytixCl4dS2tdT1h0R6qJTXHAb77 R0N3kgsB0fgb0jojD6NaNKveN0oT16fLZwIL8nPsIEW9bl0sKDKa+to0QJy0jGg7BGLx2EOMiCNKM EkjGhvq/97ZUF0OeHSbg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mxARJ-00EoGq-9P; Tue, 14 Dec 2021 16:14:05 +0000 Received: from guitar.tcltek.co.il ([84.110.109.230] helo=mx.tkos.co.il) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mxARF-00EoFY-0h for linux-arm-kernel@lists.infradead.org; Tue, 14 Dec 2021 16:14:03 +0000 Received: from tarshish (unknown [10.0.8.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx.tkos.co.il (Postfix) with ESMTPS id 886E8440F2F; Tue, 14 Dec 2021 18:13:54 +0200 (IST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tkos.co.il; s=default; t=1639498435; bh=1fwIRY6SB3en15B126frdgqHFepu3cN45gLKiln9Nso=; h=References:From:To:Cc:Subject:Date:In-reply-to:From; b=cdw3xqZFuSgR1xxHE6O8fkXx9pMF+xk8tQ4fd2t34wC3GLOUi6slFaBkrhOZNwZof 0Da0Bn179QiOLwtMxT96UQn6kOmlZYnKd1ZvmN/j3x520pCiIdEpThimWCewQP2g2o sC3eA5WO9r3E+iR/vzHSjhxfqj8i2hFAHHySxrLyC4Kfx4U/UNB0e7jDb0shTjLJFc g8arPYBAoONPTa0twWhLU6KeISS2rTuWrEfo+ZedJlVSsT6zFvj8DMIp8Yjh6/OT9F Ve/LaPoDVVXD05Q7I9ajmRr+3w+ZjTSMUbzNx/NYpRbkVgOzcEfvbVhX1olHPhEjRV tAVJKnN9qK5Pg== References: <5c95bcf62a9d08208a7da19f0b1cec0689502b9a.1630323987.git.baruch@tkos.co.il> <20210914124959.spwjiifvysposhls@pengutronix.de> User-agent: mu4e 1.6.10; emacs 27.1 From: Baruch Siach To: Uwe =?utf-8?Q?Kleine-K=C3=B6nig?= Cc: Thierry Reding , Lee Jones , Andy Gross , Bjorn Andersson , Balaji Prakash J , Rob Herring , Robert Marko , Kathiravan T , linux-pwm@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kernel@pengutronix.de Subject: Re: [PATCH v8 2/4] pwm: driver for qualcomm ipq6018 pwm block Date: Tue, 14 Dec 2021 18:05:08 +0200 In-reply-to: <20210914124959.spwjiifvysposhls@pengutronix.de> Message-ID: <87pmpzmaf1.fsf@tarshish> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211214_081401_645954_DAC06060 X-CRM114-Status: GOOD ( 17.66 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgVXdlLAoKT24gVHVlLCBTZXAgMTQgMjAyMSwgVXdlIEtsZWluZS1Lw7ZuaWcgd3JvdGU6Cj4g T24gTW9uLCBBdWcgMzAsIDIwMjEgYXQgMDI6NDY6MjVQTSArMDMwMCwgQmFydWNoIFNpYWNoIHdy b3RlOgo+PiArCWZvciAoOyBwcmVfZGl2IDw9IElQUV9QV01fTUFYX0RJVjsgcHJlX2RpdisrKSB7 Cj4+ICsJCXB3bV9kaXYgPSBESVY2NF9VNjRfUk9VTkRfVVAocGVyaW9kX25zICogcmF0ZSwKPj4g KwkJCQkodTY0KU5TRUNfUEVSX1NFQyAqIChwcmVfZGl2ICsgMSkpOwo+PiArCQlwd21fZGl2LS07 Cj4KPiBDYW4gaXQgaGFwcGVuIHRoYXQgcHdtX2RpdiBpcyB6ZXJvIGJlZm9yZSBpdCBpcyBkZWNy ZWFzZWQgYnkgb25lPyBBbHNvCj4geW91IG5lZWQgdG8gcm91bmQgZG93biBoZXJlOyB3aXRoIHJv dW5kaW5nIHVwIHRoZSByZXN1bHRpbmcgcGVyaW9kIGlzCj4gYmlnZ2VyIHRoYW4gdGhlIHJlcXVl c3RlZCBwZXJpb2QgKHVubGVzcyB0aGUgZGl2aXNpb24geWllbGRzIGFuIGV4YWN0Cj4gaW50ZWdl cikuCgpJIGZvbGxvd2VkIHlvdXIgcm91bmQgZG93biBhZHZpY2Ugb24gdjksIGJ1dCBpdCB0dXJu ZWQgb3V0IHRvIGJlCndyb25nLiBSb3VuZCBkb3duIG1lYW5zIHRoYXQgdGhlIGRpdmlkZXIgaXMg c21hbGxlciBzbyB0aGUgcGVyaW9kIGlzCmxhcmdlci4gVGhpcyBtZWFucyB0aGF0ICdkaWZmJyBi ZWxvdyBjYW4gbm90IGJlIHBvc2l0aXZlLiBTbyBvbmx5IGV4YWN0Cm1hdGNoIChkaWZmID09IDAp IHdvcmtzLiBXaGVuIHRoZXJlIGlzIG5vIGV4YWN0IG1hdGNoLCBiZXN0XyogdmFsdWVzIGFyZQps ZWZ0IGluIHRoZWlyIGluaXRpYWwgc2V0dGluZy4KCkknbGwgZml4IHRoYXQgaW4gdjEwIGFsb25n IHdpdGggYW5vdGhlciBidWcgSSBpbnRyb2R1Y2VkIGluIHY5LgoKYmFydWNoCgo+PiArCQlpZiAo cHJlX2RpdiA+IHB3bV9kaXYpCj4+ICsJCQlicmVhazsKPgo+IEEgY29tbWVudCBoZXJlIHdoeSB3 ZSBjYW4gZW5kIHRoZSBzZWFyY2ggd291bGQgYmUgZ29vZC4KPgo+PiArCQkvKgo+PiArCQkgKiBN YWtlIHN1cmUgd2UgY2FuIGRvIDEwMCUgZHV0eSBjeWNsZSB3aGVyZQo+PiArCQkgKiBoaV9kdXIg PT0gcHdtX2RpdiArIDEKPj4gKwkJICovCj4+ICsJCWlmIChwd21fZGl2ID4gSVBRX1BXTV9NQVhf RElWIC0gMSkKPj4gKwkJCWNvbnRpbnVlOwo+PiArCj4+ICsJCWRpZmYgPSAoKHVpbnQ2NF90KWZy ZXEgKiAocHJlX2RpdiArIDEpICogKHB3bV9kaXYgKyAxKSkKPj4gKwkJCS0gKHVpbnQ2NF90KXJh dGU7Cj4+ICsKPj4gKwkJaWYgKGRpZmYgPCAwKSAvKiBwZXJpb2QgbGFyZ2VyIHRoYW4gcmVxdWVz dGVkICovCj4+ICsJCQljb250aW51ZTsKPj4gKwkJaWYgKGRpZmYgPT0gMCkgeyAvKiBiaW5nbyAq Lwo+PiArCQkJYmVzdF9wcmVfZGl2ID0gcHJlX2RpdjsKPj4gKwkJCWJlc3RfcHdtX2RpdiA9IHB3 bV9kaXY7Cj4+ICsJCQlicmVhazsKPj4gKwkJfQo+PiArCQlpZiAoZGlmZiA8IG1pbl9kaWZmKSB7 Cj4+ICsJCQltaW5fZGlmZiA9IGRpZmY7Cj4+ICsJCQliZXN0X3ByZV9kaXYgPSBwcmVfZGl2Owo+ PiArCQkJYmVzdF9wd21fZGl2ID0gcHdtX2RpdjsKPj4gKwkJfQo+PiArCX0KPj4gKwo+PiArCS8q IGNvbmZpZyBkaXZpZGVyIHZhbHVlcyBmb3IgdGhlIGNsb3Nlc3QgcG9zc2libGUgZnJlcXVlbmN5 ICovCj4+ICsJY29uZmlnX2Rpdl9hbmRfZHV0eShwd20sIGJlc3RfcHJlX2RpdiwgYmVzdF9wd21f ZGl2LAo+PiArCQkJICAgIHJhdGUsIGR1dHlfbnMsIHN0YXRlLT5lbmFibGVkKTsKPj4gKwo+PiAr CXJldHVybiAwOwo+PiArfQoKLS0gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfi4gLn4gICBUayBPcGVuIFN5c3RlbXMKPX0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1vb08tLVUtLU9vby0tLS0tLS0tLS0t LXs9CiAgIC0gYmFydWNoQHRrb3MuY28uaWwgLSB0ZWw6ICs5NzIuNTIuMzY4LjQ2NTYsIGh0dHA6 Ly93d3cudGtvcy5jby5pbCAtCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVs QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==