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 X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CF702C433DB for ; Wed, 13 Jan 2021 06:36:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9C72423120 for ; Wed, 13 Jan 2021 06:36:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726244AbhAMGg5 convert rfc822-to-8bit (ORCPT ); Wed, 13 Jan 2021 01:36:57 -0500 Received: from guitar.tcltek.co.il ([192.115.133.116]:45552 "EHLO mx.tkos.co.il" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725924AbhAMGg5 (ORCPT ); Wed, 13 Jan 2021 01:36:57 -0500 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 B346E440045; Wed, 13 Jan 2021 08:36:12 +0200 (IST) References: <20210111201711.ym46w7dy62ux66zb@pengutronix.de> User-agent: mu4e 1.4.13; emacs 27.1 From: Baruch Siach To: Uwe =?utf-8?Q?Kleine-K=C3=B6nig?= Cc: g@pengutronix.de, Thierry Reding , Lee Jones , Linus Walleij , Bartosz Golaszewski , Russell King , Andrew Lunn , Gregory Clement , Sebastian Hesselbarth , Thomas Petazzoni , Chris Packham , Sascha Hauer , Ralph Sennhauser , linux-pwm@vger.kernel.org, linux-gpio@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH 1/5] gpio: mvebu: fix pwm get_state period calculation In-reply-to: <20210111201711.ym46w7dy62ux66zb@pengutronix.de> Date: Wed, 13 Jan 2021 08:36:12 +0200 Message-ID: <87ft35xs0z.fsf@tarshish> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8BIT Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org Hi Uwe, On Mon, Jan 11 2021, Uwe Kleine-König wrote: > $Subject ~= s/get_state/.get_state/ ? Ack. > On Mon, Jan 11, 2021 at 01:17:02PM +0200, Baruch Siach wrote: >> The period is the sum of on and off values. >> >> Reported-by: Russell King >> Fixes: 757642f9a584e ("gpio: mvebu: Add limited PWM support") >> Signed-off-by: Baruch Siach >> --- >> drivers/gpio/gpio-mvebu.c | 19 ++++++++----------- >> 1 file changed, 8 insertions(+), 11 deletions(-) >> >> diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c >> index 672681a976f5..a912a8fed197 100644 >> --- a/drivers/gpio/gpio-mvebu.c >> +++ b/drivers/gpio/gpio-mvebu.c >> @@ -676,20 +676,17 @@ static void mvebu_pwm_get_state(struct pwm_chip *chip, >> else >> state->duty_cycle = 1; >> >> + val = (unsigned long long) u; /* on duration */ >> regmap_read(mvpwm->regs, mvebu_pwmreg_blink_off_duration(mvpwm), &u); >> - val = (unsigned long long) u * NSEC_PER_SEC; >> + val += (unsigned long long) u; /* period = on + off duration */ >> + val *= NSEC_PER_SEC; >> do_div(val, mvpwm->clk_rate); >> - if (val < state->duty_cycle) { >> + if (val > UINT_MAX) >> + state->period = UINT_MAX; >> + else if (val) >> + state->period = val; >> + else >> state->period = 1; >> - } else { >> - val -= state->duty_cycle; >> - if (val > UINT_MAX) >> - state->period = UINT_MAX; >> - else if (val) >> - state->period = val; >> - else >> - state->period = 1; >> - } > > The patch looks good, the patch description could be a bit more verbose. > Something like: > > Calculate the period as > > ($on + $off) / clkrate > > instead of > > $off / clkrate - $on / clkrate > > . I take this to refer to the next patch (2/5). This patch changes from buggy $on / clkrate to ($on + $off) / clkrate baruch -- ~. .~ Tk Open Systems =}------------------------------------------------ooO--U--Ooo------------{= - baruch@tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -