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=-7.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS autolearn=ham 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 94380C43381 for ; Sun, 10 Mar 2019 10:09:49 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 6445420870 for ; Sun, 10 Mar 2019 10:09:49 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Bsc6iG89"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="bUjZyLI9" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6445420870 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=apcd5INCTTaqQok0NFR4++bL1wCGiWbj2p/0yl/qbhA=; b=Bsc6iG89h8Jf6Z l2rkt+m2nvxZe9yxqa7luWnRJBFDpan1GZGEr9QKcOGqR9EVmJ5sMlM+j2D5EdX2BMQrdolLe3uvT Wk1Ybp0q30ZEHQzorhv5OMzw6+D+DjpQ5q9StXxW+vJdimbdcYu67lfTcsRnYszYDKHy0150sJjdK +YctjQQPpGj/SzuuR3qnFt6RtNzDtpPmgG2bFYE92ButWI9Fbtl20dQkQ5RBz2Yp/GIlql+WZPb/4 KngIg+hxBFzjg5lXAbL+GhtjthgcPXydWpAJQFw4g1Rwne4sva4wRExBtNgv22P1uSPhmN6dK3e1s keu7i6fLmjHFEAdpKWuw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1h2vOp-0001Xe-Ag; Sun, 10 Mar 2019 10:09:43 +0000 Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1h2vOl-0001XI-As for linux-arm-kernel@lists.infradead.org; Sun, 10 Mar 2019 10:09:41 +0000 Received: from archlinux (cpc91196-cmbg18-2-0-cust659.5-4.cable.virginm.net [81.96.234.148]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 6C1E0207E0; Sun, 10 Mar 2019 10:09:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1552212578; bh=eCdM6jdCcVcbvvmuBC3cUHjyHNsrk1CsMDk6B8cH+m4=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=bUjZyLI9/UjPtzh7AJlzyoKnDouerg8cohIY9E9kDufMJcxWFARPpDUDXkI5QY6JG otKFVId4TFjkDdjoMARVU5AFGb57h32MSrRwoUcEYCoY32aH5Kc9I6kdFLwi3JSVJT o2MD56vhZZOwhhtKyGksK3/1qW0qiJeTsLMXBpcg= Date: Sun, 10 Mar 2019 10:09:32 +0000 From: Jonathan Cameron To: Fabrice Gasnier Subject: Re: [PATCH 1/8] iio: adc: stm32-dfsdm: make spi_master_freq more accurate Message-ID: <20190310100932.71fd1af1@archlinux> In-Reply-To: <1551862524-25098-2-git-send-email-fabrice.gasnier@st.com> References: <1551862524-25098-1-git-send-email-fabrice.gasnier@st.com> <1551862524-25098-2-git-send-email-fabrice.gasnier@st.com> X-Mailer: Claws Mail 3.17.3 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190310_030939_393202_FDDEFF28 X-CRM114-Status: GOOD ( 16.74 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: lars@metafoo.de, olivier.moysan@st.com, alexandre.torgue@st.com, linux-iio@vger.kernel.org, pmeerw@pmeerw.net, arnaud.pouliquen@st.com, linux-kernel@vger.kernel.org, mcoquelin.stm32@gmail.com, knaack.h@gmx.de, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Wed, 6 Mar 2019 09:55:17 +0100 Fabrice Gasnier wrote: > When SPI clock isn't accurate, 'spi_master_freq' is filled in with > expected frequency. Use computed value instead: > - e.g. source clock / (CKOUTDIV + 1) > Also, current divider may be set to value that makes CKOUT to exceed > spi-max-frequency. Rather use lower value (e.g. round up divider when > ckout isn't accurate). > > Signed-off-by: Fabrice Gasnier > --- > drivers/iio/adc/stm32-dfsdm-core.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/drivers/iio/adc/stm32-dfsdm-core.c b/drivers/iio/adc/stm32-dfsdm-core.c > index bf089f5..65b7556 100644 > --- a/drivers/iio/adc/stm32-dfsdm-core.c > +++ b/drivers/iio/adc/stm32-dfsdm-core.c > @@ -243,13 +243,18 @@ static int stm32_dfsdm_parse_of(struct platform_device *pdev, > return 0; > } > > - priv->spi_clk_out_div = div_u64_rem(clk_freq, spi_freq, &rem) - 1; > + priv->spi_clk_out_div = div_u64_rem(clk_freq, spi_freq, &rem); > + > + /* round up divider when clkout isn't accurate (e.g. !rem) */ > + if (priv->spi_clk_out_div && !rem) > + priv->spi_clk_out_div--; > + This comment perhaps needs adjusting because at the moment it looks like it decrements when it is accurate. With the old code in place in the patch it's obvious that's because you actually want one less. Might even be worth the dance of /* round up if not precise */ if (priv->spi_clk_out_div && rem) priv->spi_clk_out_div++; /* subtract one because.... */ priv->spi_clk_out_div--; > if (!priv->spi_clk_out_div) { > /* spi_clk_out_div == 0 means ckout is OFF */ > dev_err(&pdev->dev, "spi-max-frequency not achievable\n"); > return -EINVAL; > } > - priv->dfsdm.spi_master_freq = spi_freq; > + priv->dfsdm.spi_master_freq = clk_freq / (priv->spi_clk_out_div + 1); And we increment it again here? That needs an explanation as well. > > if (rem) { > dev_warn(&pdev->dev, "SPI clock not accurate\n"); _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel