From mboxrd@z Thu Jan 1 00:00:00 1970 From: Flavio Suligoi Subject: RE: [PATCH 1/2] spi: pxa2xx: fix SCR (divisor) calculation Date: Thu, 11 Apr 2019 13:10:04 +0000 Message-ID: <3ceba8bc20f8496a9c72653fd450d729@asem.it> References: <1554900696-28858-1-git-send-email-f.suligoi@asem.it> <34b8442a-15ac-dea2-a088-fde8b1966e1e@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "linux-arm-kernel@lists.infradead.org" , "linux-spi@vger.kernel.org" , "linux-kernel@vger.kernel.org" To: Jarkko Nikula , Daniel Mack , Haojian Zhuang , "Robert Jarzmik" , Mark Brown Return-path: In-Reply-To: <34b8442a-15ac-dea2-a088-fde8b1966e1e@linux.intel.com> Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-spi.vger.kernel.org SGkgSmFya2tvLA0KDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3BpL3NwaS1weGEyeHguYyBi L2RyaXZlcnMvc3BpL3NwaS1weGEyeHguYw0KPiA+IGluZGV4IGY3MDY4Y2MuLmM5NTYwYTEgMTAw NjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9zcGkvc3BpLXB4YTJ4eC5jDQo+ID4gKysrIGIvZHJpdmVy cy9zcGkvc3BpLXB4YTJ4eC5jDQo+ID4gQEAgLTg4NCwxMCArODg0LDE1IEBAIHN0YXRpYyB1bnNp Z25lZCBpbnQgc3NwX2dldF9jbGtfZGl2KHN0cnVjdA0KPiBkcml2ZXJfZGF0YSAqZHJ2X2RhdGEs IGludCByYXRlKQ0KPiA+DQo+ID4gICAJcmF0ZSA9IG1pbl90KGludCwgc3NwX2NsaywgcmF0ZSk7 DQo+ID4NCj4gPiArCS8qDQo+ID4gKwkgKiBDYWxjdWxhdGUgdGhlIGRpdmlzb3IgZm9yIHRoZSBT Q1IgKFNlcmlhbCBDbG9jayBSYXRlKSwgYXZvaWRpbmcNCj4gPiArCSAqIHRoYXQgdGhlIFNTUCB0 cmFuc21pc3Npb24gcmF0ZSBjYW4gYmUgZ3JlYXRlciB0aGFuIHRoZSBkZXZpY2UNCj4gcmF0ZQ0K PiA+ICsJICovDQo+ID4gICAJaWYgKHNzcC0+dHlwZSA9PSBQWEEyNXhfU1NQIHx8IHNzcC0+dHlw ZSA9PSBDRTQxMDBfU1NQKQ0KPiA+IC0JCXJldHVybiAoc3NwX2NsayAvICgyICogcmF0ZSkgLSAx KSAmIDB4ZmY7DQo+ID4gKwkJcmV0dXJuIChzc3BfY2xrIC8gKDIgKiByYXRlKSAtIDEgKw0KPiA+ ICsJCQkoc3NwX2NsayAlICgyICogcmF0ZSkgPyAxIDogMCkpICYgMHhmZjsNCj4gPiAgIAllbHNl DQo+ID4gLQkJcmV0dXJuIChzc3BfY2xrIC8gcmF0ZSAtIDEpICYgMHhmZmY7DQo+ID4gKwkJcmV0 dXJuIChzc3BfY2xrIC8gcmF0ZSAtIDEgKyAoc3NwX2NsayAlIHJhdGUgPyAxIDogMCkpICYNCj4g MHhmZmY7DQo+ID4gICB9DQo+ID4NCj4gSSB0aGluayBESVZfUk9VTkRfVVAoKSAtIDEgd291bGQg YWxzbyBmaXggdGhpcz8NCj4gDQo+IEkgcmVhbGl6ZWQgd2UgaGF2ZSBhbHNvIGFub3RoZXIgaXNz dWUgaGVyZSB3aXRoIHRoZSBsb3cgcmF0ZXMuDQo+IENhbGN1bGF0ZWQgZGl2aWRlciB3aWxsIHVu ZGVyZmxvdyBkdWUgbWFza2luZyB3aXRoIDB4ZmYgb3IgMHhmZmYgd2hlbg0KPiB0aGUgcmF0ZSBp cyBsb3cgZW5vdWdoLg0KPiANCj4gV291bGQgeW91IHdhbnQgdG8gZml4IHRoYXQgYnkgc2V0dGlu ZyB0aGUgY3Rsci0+bWluX3NwZWVkX2h6IHNvIHRoYXQgc3BpDQo+IGNvcmUgY2FuIHZhbGlkYXRl IHRoZSByYXRlPyBJJ20gYXNraW5nIHNpbmNlIGl0IGdvZXMgd2VsbCB0b2dldGhlciB3aXRoDQo+ IHlvdXIgZml4LiBNYXliZSBvbmUgcGF0Y2ggc2V0dGluZyB0aGUgbWluX3NwZWVkX2h6IGFuZCBn ZXR0aW5nIG1hc2tpbmcNCj4gb2ZmIGZyb20gaGVyZSBhbmQgdGhlbiBhbm90aGVyIGZpeGluZyB0 aGUgcmF0ZSBjYWxjdWxhdGlvbi4NCg0KT2sgZm9yIHRoZSB0d28gc2VwYXJhdGUgcGF0Y2hlcywg SSBwcmVwYXJlIHRoZW0gYXMgc29vbiBhcyBJIGNhbi4NCg0KVGhhbmtzLA0KDQpGbGF2aW8NCg== 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=-4.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, 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 28C04C10F13 for ; Thu, 11 Apr 2019 13:10:18 +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 EA95221872 for ; Thu, 11 Apr 2019 13:10:17 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="SkBZYnFD" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EA95221872 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=asem.it 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:In-Reply-To:References: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=7caszB5iuFErjkVx/Apm9rcCo953HXnsFqO5IHplWKU=; b=SkBZYnFDGDWV1H 17vJ1+i3U850JgC9K6B105eYTR6C9f6dd4qK2wPc5qW60AtX20LZCi0Rb2Hp4ij58NfDsfITwZFKf B2vYawHixcySQCQfe2ClrJ+ha801/IkvKTcbl0Ap7oTkDkVzgB2n9OvUnwhIN+GKg1bY1/jAL23pi IAOFt45doB/CRxNd98Dvyfm4e0WniauNVmNh/3yYjFk+7//fFC+zGjyFER4cAZhC54+32oUA2dX4p OIvonrexR2UD2ybhtj7fgloJega98nySzO4rqw/3M0Df1X68BlNsj0sJwcjANrRNxXeP+Hp0WWJ60 OFLGCTDa4eXy+Nix357Q==; 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 1hEZT5-00066t-AY; Thu, 11 Apr 2019 13:10:15 +0000 Received: from smtp.asem.it ([151.1.184.197]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1hEZT1-000660-B9 for linux-arm-kernel@lists.infradead.org; Thu, 11 Apr 2019 13:10:13 +0000 Received: from webmail.asem.it by asem.it (smtp.asem.it) (SecurityGateway 5.5.0) with ESMTP id SG003807555.MSG for ; Thu, 11 Apr 2019 15:10:07 +0200S Received: from ASAS044.asem.intra (172.16.16.44) by ASAS044.asem.intra (172.16.16.44) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1261.35; Thu, 11 Apr 2019 15:10:05 +0200 Received: from ASAS044.asem.intra ([::1]) by ASAS044.asem.intra ([::1]) with mapi id 15.01.1261.035; Thu, 11 Apr 2019 15:10:05 +0200 From: Flavio Suligoi To: Jarkko Nikula , Daniel Mack , Haojian Zhuang , "Robert Jarzmik" , Mark Brown Subject: RE: [PATCH 1/2] spi: pxa2xx: fix SCR (divisor) calculation Thread-Topic: [PATCH 1/2] spi: pxa2xx: fix SCR (divisor) calculation Thread-Index: AQHU75yNrNIZZVaFvEqq7UBMv/VqLKY2ukaAgAA1bGA= Date: Thu, 11 Apr 2019 13:10:04 +0000 Message-ID: <3ceba8bc20f8496a9c72653fd450d729@asem.it> References: <1554900696-28858-1-git-send-email-f.suligoi@asem.it> <34b8442a-15ac-dea2-a088-fde8b1966e1e@linux.intel.com> In-Reply-To: <34b8442a-15ac-dea2-a088-fde8b1966e1e@linux.intel.com> Accept-Language: it-IT, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.16.17.208] MIME-Version: 1.0 X-SGHeloLookup-Result: hardfail smtp.helo=webmail.asem.it (does not match 172.16.16.44) X-SGSPF-Result: none (smtp.asem.it) X-SGOP-RefID: str=0001.0A0B020A.5CAF3CAD.0078, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0 (_st=1 _vt=0 _iwf=0) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190411_061011_750939_A3F04FF8 X-CRM114-Status: GOOD ( 13.55 ) 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: "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-spi@vger.kernel.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 Hi Jarkko, > > diff --git a/drivers/spi/spi-pxa2xx.c b/drivers/spi/spi-pxa2xx.c > > index f7068cc..c9560a1 100644 > > --- a/drivers/spi/spi-pxa2xx.c > > +++ b/drivers/spi/spi-pxa2xx.c > > @@ -884,10 +884,15 @@ static unsigned int ssp_get_clk_div(struct > driver_data *drv_data, int rate) > > > > rate = min_t(int, ssp_clk, rate); > > > > + /* > > + * Calculate the divisor for the SCR (Serial Clock Rate), avoiding > > + * that the SSP transmission rate can be greater than the device > rate > > + */ > > if (ssp->type == PXA25x_SSP || ssp->type == CE4100_SSP) > > - return (ssp_clk / (2 * rate) - 1) & 0xff; > > + return (ssp_clk / (2 * rate) - 1 + > > + (ssp_clk % (2 * rate) ? 1 : 0)) & 0xff; > > else > > - return (ssp_clk / rate - 1) & 0xfff; > > + return (ssp_clk / rate - 1 + (ssp_clk % rate ? 1 : 0)) & > 0xfff; > > } > > > I think DIV_ROUND_UP() - 1 would also fix this? > > I realized we have also another issue here with the low rates. > Calculated divider will underflow due masking with 0xff or 0xfff when > the rate is low enough. > > Would you want to fix that by setting the ctlr->min_speed_hz so that spi > core can validate the rate? I'm asking since it goes well together with > your fix. Maybe one patch setting the min_speed_hz and getting masking > off from here and then another fixing the rate calculation. Ok for the two separate patches, I prepare them as soon as I can. Thanks, Flavio _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel