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 4AD7AC43217 for ; Tue, 25 Jan 2022 16:33:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354100AbiAYQc6 (ORCPT ); Tue, 25 Jan 2022 11:32:58 -0500 Received: from guitar.tcltek.co.il ([84.110.109.230]:35343 "EHLO mx.tkos.co.il" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1351814AbiAYQ1w (ORCPT ); Tue, 25 Jan 2022 11:27:52 -0500 Received: from tarshish (unknown [10.0.8.3]) (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 3C10244054B; Tue, 25 Jan 2022 18:27:32 +0200 (IST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tkos.co.il; s=default; t=1643128052; bh=365wbsZ+slH2WT/1BiDeRvDFqeAyANMTS5QZ1uk8BG0=; h=References:From:To:Cc:Subject:Date:In-reply-to:From; b=M0ufAGtM9x63kvTpequ0qLOIGlgJZPfzPyBMjA+FBNJcvvVscLlQmI0CB0bGxcsWO BOKALsKf1bxozGcK74Qw8eja/x2TPgVcic/x9fz6E3aURvImP61GSC7ybQA1MGZ7gr BxYJH1klo9/OxGs25sQ/7JeSmZUCIDEiLSg1ceGDrTSl1BZxTKAfBG8UoY1OVF5l4w 6dVwX+D5KZyYcaGbM4bu2D+LDkRr+rwbsHbsovS682LE+C3zvkTN7HGpAx4clneTlR w1pDqMLn+wpAMVWmxEkuIwqeAV9JWbcMjWGibooQitCS1MNk8Nol2sNIfKq7vOBvFg sd72CyJdQe5Qg== References: <20220119172439.be4xpaqgwzdy26oh@pengutronix.de> <87tuds7y09.fsf@tarshish> <20220125161204.hx5foivny6iupjke@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 , 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 Subject: Re: [PATCH v10 1/3] pwm: driver for qualcomm ipq6018 pwm block Date: Tue, 25 Jan 2022 18:22:45 +0200 In-reply-to: <20220125161204.hx5foivny6iupjke@pengutronix.de> Message-ID: <87pmof93wf.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, Jan 25 2022, Uwe Kleine-K=C3=B6nig wrote: > On Tue, Jan 25, 2022 at 03:03:08PM +0200, Baruch Siach wrote: >> On Wed, Jan 19 2022, Uwe Kleine-K=C3=B6nig wrote: >> > The task here is to calculate the biggest pwm_div for a given pre_div >> > such that >> > >> > >> > (pre_div + 1) * (pwm_div + 1) * NSEC_PER_SEC >> > -------------------------------------------- <=3D period_ns >> > rate >> > >> > right? >> > >> > This is equivalent to: >> > >> > period_ns * rate >> > pre_div <=3D ---------------------------- - 1 >> > (pre_div + 1) * NSEC_PER_SEC >> > >> > As pre_div is integer, rounding down should be fine?! >>=20 >> I can't follow. With round down (as in v8) the result is always: >>=20 >> NSEC_PER_SEC * (pre_div + 1) * (pwm_div + 1) <=3D period_rate > > Yes, that's the condition that a valid configuration should fulfill > because then the configured period is never bigger than the requested > period. >=20=20 >> As a result, 'diff' calculation below will always produce diff <=3D 0. W= hen >> there is no diff =3D=3D 0 result (bingo) we get IPQ_PWM_MAX_DIV in both = best_ >> values at the end of the loop. > > Looking again, your check is wrong. I think you need: > > diff =3D period_rate - NSEC_PER_SEC * (pre_div + 1) * (pwm_div + 1) > > . Given the calculations for pre_div and pwm_div this should never be > negative and you should pick values that minimize diff. So, if I understand correctly, you suggest to leave round up as in v10, and invert the diff calculation. Is that correct? Thanks, baruch --=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 3560DC433F5 for ; Tue, 25 Jan 2022 16:29:27 +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=1lEKV/NiR9xo4NIyDInI7I5JsHvJvMvScedzPgQhXlE=; b=m2y4N8Z1ApbroM BBuxmZGECx8MT4HwGimQssmi28x2IT39CQUYoWWcyfNykWf2s8AEL+OQoc5ZtmqaVqAYMSoeVDR+a 7Wd0ajvDAPlrku43pOTX42NGkhdoXVzx24lW4ACVVeE4dmXQuV7ZVdP0L2qNFYxSiHvgMB101Hnhm RMcJUSbrYb+R3aD1VETWEG+Fz4MBeZJMJ49HOUv4QTckmn348NJNaUC4Vrw6M0lhqpVYCPb+JyMZ4 X7av7348iNQhThfMn8ebJugPAOoMOZGv9dlQS3SEbu5dLTtF9aqPYZSGwwPax3OHTNN0ld6ipc/B1 +wIQa3uwkL1JpeHhXTqg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nCOfl-008g15-Jq; Tue, 25 Jan 2022 16:27:57 +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 1nCOfc-008fz4-GW for linux-arm-kernel@lists.infradead.org; Tue, 25 Jan 2022 16:27:50 +0000 Received: from tarshish (unknown [10.0.8.3]) (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 3C10244054B; Tue, 25 Jan 2022 18:27:32 +0200 (IST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tkos.co.il; s=default; t=1643128052; bh=365wbsZ+slH2WT/1BiDeRvDFqeAyANMTS5QZ1uk8BG0=; h=References:From:To:Cc:Subject:Date:In-reply-to:From; b=M0ufAGtM9x63kvTpequ0qLOIGlgJZPfzPyBMjA+FBNJcvvVscLlQmI0CB0bGxcsWO BOKALsKf1bxozGcK74Qw8eja/x2TPgVcic/x9fz6E3aURvImP61GSC7ybQA1MGZ7gr BxYJH1klo9/OxGs25sQ/7JeSmZUCIDEiLSg1ceGDrTSl1BZxTKAfBG8UoY1OVF5l4w 6dVwX+D5KZyYcaGbM4bu2D+LDkRr+rwbsHbsovS682LE+C3zvkTN7HGpAx4clneTlR w1pDqMLn+wpAMVWmxEkuIwqeAV9JWbcMjWGibooQitCS1MNk8Nol2sNIfKq7vOBvFg sd72CyJdQe5Qg== References: <20220119172439.be4xpaqgwzdy26oh@pengutronix.de> <87tuds7y09.fsf@tarshish> <20220125161204.hx5foivny6iupjke@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 , 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 Subject: Re: [PATCH v10 1/3] pwm: driver for qualcomm ipq6018 pwm block Date: Tue, 25 Jan 2022 18:22:45 +0200 In-reply-to: <20220125161204.hx5foivny6iupjke@pengutronix.de> Message-ID: <87pmof93wf.fsf@tarshish> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220125_082748_940886_0095802A X-CRM114-Status: GOOD ( 19.18 ) 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 SGkgVXdlLAoKT24gVHVlLCBKYW4gMjUgMjAyMiwgVXdlIEtsZWluZS1Lw7ZuaWcgd3JvdGU6Cj4g T24gVHVlLCBKYW4gMjUsIDIwMjIgYXQgMDM6MDM6MDhQTSArMDIwMCwgQmFydWNoIFNpYWNoIHdy b3RlOgo+PiBPbiBXZWQsIEphbiAxOSAyMDIyLCBVd2UgS2xlaW5lLUvDtm5pZyB3cm90ZToKPj4g PiBUaGUgdGFzayBoZXJlIGlzIHRvIGNhbGN1bGF0ZSB0aGUgYmlnZ2VzdCBwd21fZGl2IGZvciBh IGdpdmVuIHByZV9kaXYKPj4gPiBzdWNoIHRoYXQKPj4gPgo+PiA+Cj4+ID4gCShwcmVfZGl2ICsg MSkgKiAocHdtX2RpdiArIDEpICogTlNFQ19QRVJfU0VDCj4+ID4gCS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIDw9IHBlcmlvZF9ucwo+PiA+IAkgICAgICAgICAg ICAgICAgICAgcmF0ZQo+PiA+Cj4+ID4gcmlnaHQ/Cj4+ID4KPj4gPiBUaGlzIGlzIGVxdWl2YWxl bnQgdG86Cj4+ID4KPj4gPiAJICAgICAgICAgICAgICAgICAgcGVyaW9kX25zICogcmF0ZQo+PiA+ IAlwcmVfZGl2IDw9IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLSAxCj4+ID4gCSAgICAg ICAgICAgKHByZV9kaXYgKyAxKSAqIE5TRUNfUEVSX1NFQwo+PiA+Cj4+ID4gQXMgcHJlX2RpdiBp cyBpbnRlZ2VyLCByb3VuZGluZyBkb3duIHNob3VsZCBiZSBmaW5lPyEKPj4gCj4+IEkgY2FuJ3Qg Zm9sbG93LiBXaXRoIHJvdW5kIGRvd24gKGFzIGluIHY4KSB0aGUgcmVzdWx0IGlzIGFsd2F5czoK Pj4gCj4+ICAgTlNFQ19QRVJfU0VDICogKHByZV9kaXYgKyAxKSAqIChwd21fZGl2ICsgMSkgPD0g cGVyaW9kX3JhdGUKPgo+IFllcywgdGhhdCdzIHRoZSBjb25kaXRpb24gdGhhdCBhIHZhbGlkIGNv bmZpZ3VyYXRpb24gc2hvdWxkIGZ1bGZpbGwKPiBiZWNhdXNlIHRoZW4gdGhlIGNvbmZpZ3VyZWQg cGVyaW9kIGlzIG5ldmVyIGJpZ2dlciB0aGFuIHRoZSByZXF1ZXN0ZWQKPiBwZXJpb2QuCj4gIAo+ PiBBcyBhIHJlc3VsdCwgJ2RpZmYnIGNhbGN1bGF0aW9uIGJlbG93IHdpbGwgYWx3YXlzIHByb2R1 Y2UgZGlmZiA8PSAwLiBXaGVuCj4+IHRoZXJlIGlzIG5vIGRpZmYgPT0gMCByZXN1bHQgKGJpbmdv KSB3ZSBnZXQgSVBRX1BXTV9NQVhfRElWIGluIGJvdGggYmVzdF8KPj4gdmFsdWVzIGF0IHRoZSBl bmQgb2YgdGhlIGxvb3AuCj4KPiBMb29raW5nIGFnYWluLCB5b3VyIGNoZWNrIGlzIHdyb25nLiBJ IHRoaW5rIHlvdSBuZWVkOgo+Cj4gCWRpZmYgPSBwZXJpb2RfcmF0ZSAtIE5TRUNfUEVSX1NFQyAq IChwcmVfZGl2ICsgMSkgKiAocHdtX2RpdiArIDEpCj4KPiAuIEdpdmVuIHRoZSBjYWxjdWxhdGlv bnMgZm9yIHByZV9kaXYgYW5kIHB3bV9kaXYgdGhpcyBzaG91bGQgbmV2ZXIgYmUKPiBuZWdhdGl2 ZSBhbmQgeW91IHNob3VsZCBwaWNrIHZhbHVlcyB0aGF0IG1pbmltaXplIGRpZmYuCgpTbywgaWYg SSB1bmRlcnN0YW5kIGNvcnJlY3RseSwgeW91IHN1Z2dlc3QgdG8gbGVhdmUgcm91bmQgdXAgYXMg aW4gdjEwLAphbmQgaW52ZXJ0IHRoZSBkaWZmIGNhbGN1bGF0aW9uLiBJcyB0aGF0IGNvcnJlY3Q/ CgpUaGFua3MsCmJhcnVjaAoKLS0gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfi4gLn4gICBUayBPcGVuIFN5c3RlbXMKPX0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1vb08tLVUtLU9vby0tLS0tLS0tLS0t LXs9CiAgIC0gYmFydWNoQHRrb3MuY28uaWwgLSB0ZWw6ICs5NzIuNTIuMzY4LjQ2NTYsIGh0dHA6 Ly93d3cudGtvcy5jby5pbCAtCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVs QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==