From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753000AbbC0MHq (ORCPT ); Fri, 27 Mar 2015 08:07:46 -0400 Received: from mail-bn1on0148.outbound.protection.outlook.com ([157.56.110.148]:9376 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751779AbbC0MHo (ORCPT ); Fri, 27 Mar 2015 08:07:44 -0400 X-Greylist: delayed 943 seconds by postgrey-1.27 at vger.kernel.org; Fri, 27 Mar 2015 08:07:43 EDT Date: Fri, 27 Mar 2015 19:44:03 +0800 From: Dong Aisheng To: Juergen Borleis CC: , , Chris Ball , Ulf Hansson , Shawn Guo , , Subject: Re: [RFC] i.MX25/35/SDHCI: switch off DMA usage Message-ID: <20150327114400.GA20277@shlinux1.ap.freescale.net> References: <201503271152.04348.jbe@pengutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <201503271152.04348.jbe@pengutronix.de> User-Agent: Mutt/1.5.20 (2009-06-14) X-EOPAttributedMessage: 0 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=b29396@freescale.com; pengutronix.de; dkim=none (message not signed) header.d=none; X-Forefront-Antispam-Report: CIP:192.88.158.2;CTRY:US;IPV:NLI;EFV:NLI;BMV:1;SFV:NSPM;SFS:(10019020)(6009001)(339900001)(51704005)(243025005)(24454002)(189002)(199003)(77156002)(85426001)(62966003)(19580395003)(83506001)(2950100001)(15975445007)(77096005)(92566002)(50466002)(97756001)(46406003)(87936001)(23726002)(46102003)(110136001)(105606002)(106466001)(76176999)(54356999)(50986999)(33656002)(47776003)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:BY2PR03MB028;H:az84smr01.freescale.net;FPR:;SPF:Fail;MLV:sfv;MX:1;A:1;LANG:en; X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR03MB028; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5002010)(5005006);SRVR:BY2PR03MB028;BCL:0;PCL:0;RULEID:;SRVR:BY2PR03MB028; X-Forefront-PRVS: 0528942FD8 X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2015 11:51:55.9476 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d;Ip=[192.88.158.2];Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR03MB028 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Mar 27, 2015 at 11:52:04AM +0100, Juergen Borleis wrote: > DMA and the required overhead on very small data blocks seems an expensive > operation. Due to erratum ENGCM07207 for i.MX25 and i.MX35 SoCs the > support for multiblock transfers is disabled which results into a huge > amount of single 512 byte sector transfers and interrupts. This slows down > the transmission speed to below 500 kiB/s (even at 50 MHz SD card clock). > Using PIO instead of DMA to avoid ENGCM07207 happens and re-enabling > multiblock transfers again improve the transmission capability up to about > 2.5 MiB/s. > > I'm still not sure if ENGCM07207 is related to DMA only and can not happen > when PIO is used instead. Someone out there with experience regarding this > topic? The errata does not state it's related to DMA only. http://cache.freescale.com/files/dsp/doc/errata/IMX35CE.pdf I could double check with our IC guys to confirm it. Regards Dong Aisheng > --- > drivers/mmc/host/sdhci-esdhc-imx.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c > index 10ef8244a239..f5fd569a17c3 100644 > --- a/drivers/mmc/host/sdhci-esdhc-imx.c > +++ b/drivers/mmc/host/sdhci-esdhc-imx.c > @@ -976,8 +976,8 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev) > > if (imx_data->socdata->flags & ESDHC_FLAG_ENGCM07207) > /* Fix errata ENGcm07207 present on i.MX25 and i.MX35 */ > - host->quirks |= SDHCI_QUIRK_NO_MULTIBLOCK > - | SDHCI_QUIRK_BROKEN_ADMA; > + host->quirks |= > + SDHCI_QUIRK_BROKEN_ADMA | SDHCI_QUIRK_BROKEN_DMA; > > /* > * The imx6q ROM code will change the default watermark level setting > -- > 1.7.10.4 > > Juergen