From patchwork Wed Sep 26 08:26:19 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Hebbar, Gururaja" X-Patchwork-Id: 1508171 Return-Path: X-Original-To: patchwork-spi-devel-general@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from lists.sourceforge.net (lists.sourceforge.net [216.34.181.88]) by patchwork2.kernel.org (Postfix) with ESMTP id BEEA8DF238 for ; Wed, 26 Sep 2012 08:27:08 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=sfs-ml-3.b.ch3.sourceforge.com) by sfs-ml-3.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1TGmxW-0006S0-5D; Wed, 26 Sep 2012 08:27:06 +0000 Received: from sog-mx-1.v43.ch3.sourceforge.com ([172.29.43.191] helo=mx.sourceforge.net) by sfs-ml-3.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1TGmxU-0006Rs-R6 for spi-devel-general@lists.sourceforge.net; Wed, 26 Sep 2012 08:27:04 +0000 Received-SPF: pass (sog-mx-1.v43.ch3.sourceforge.com: domain of ti.com designates 192.94.94.41 as permitted sender) client-ip=192.94.94.41; envelope-from=gururaja.hebbar@ti.com; helo=bear.ext.ti.com; Received: from bear.ext.ti.com ([192.94.94.41]) by sog-mx-1.v43.ch3.sourceforge.com with esmtps (TLSv1:AES256-SHA:256) (Exim 4.76) id 1TGmxQ-0003G3-Mv for spi-devel-general@lists.sourceforge.net; Wed, 26 Sep 2012 08:27:04 +0000 Received: from dbdp20.itg.ti.com ([172.24.170.38]) by bear.ext.ti.com (8.13.7/8.13.7) with ESMTP id q8Q8QWCO018018; Wed, 26 Sep 2012 03:26:33 -0500 Received: from DBDE70.ent.ti.com (localhost [127.0.0.1]) by dbdp20.itg.ti.com (8.13.8/8.13.8) with ESMTP id q8Q8QKej016712; Wed, 26 Sep 2012 13:56:21 +0530 (IST) Received: from DBDE01.ent.ti.com ([fe80::d5df:c4b5:9919:4e10]) by DBDE70.ent.ti.com ([fe80::2141:513f:409:315a%21]) with mapi id 14.01.0323.003; Wed, 26 Sep 2012 13:56:20 +0530 From: "Hebbar, Gururaja" To: "Porter, Matt" Subject: RE: [RFC PATCH 00/13] DMA Engine support for AM33xx Thread-Topic: [RFC PATCH 00/13] DMA Engine support for AM33xx Thread-Index: AQHNlz4pAMb10R6XBUK0URnxVtmz6ZeUdpuwgABKvYCAB3kFcA== Date: Wed, 26 Sep 2012 08:26:19 +0000 Message-ID: <1BAFE6F6C881BF42822005164F1491C33EA8FDA9@DBDE01.ent.ti.com> References: <1348152226-13588-1-git-send-email-mporter@ti.com> <1BAFE6F6C881BF42822005164F1491C33EA8A79D@DBDE01.ent.ti.com> <20120921182211.GE16522@beef> In-Reply-To: <20120921182211.GE16522@beef> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.24.162.25] MIME-Version: 1.0 X-Spam-Score: -1.4 (-) X-Spam-Report: Spam Filtering performed by mx.sourceforge.net. See http://spamassassin.org/tag/ for more details. -1.5 SPF_CHECK_PASS SPF reports sender host as permitted sender for sender-domain -0.0 SPF_PASS SPF: sender matches SPF record -0.8 RP_MATCHES_RCVD Envelope sender domain matches handover relay domain 0.9 AWL AWL: From: address is in the auto white-list X-Headers-End: 1TGmxQ-0003G3-Mv Cc: Grant, Tony Lindgren , "Nori, Sekhar" , Russell King , Vinod Koul , Dan, Linux Documentation List , Chris Ball , Arnd Bergmann , Devicetree Discuss , Williams , Rob Herring , Linux OMAP List , Linux ARM Kernel List , List , "Cousson, Benoit" , Rob, Mark Brown , Linux MMC List , Linux Kernel Mailing List , Landley , Linux, Linux SPI Devel List X-BeenThere: spi-devel-general@lists.sourceforge.net X-Mailman-Version: 2.1.9 Precedence: list List-Id: Linux SPI core/device drivers discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: spi-devel-general-bounces@lists.sourceforge.net On Fri, Sep 21, 2012 at 23:52:11, Porter, Matt wrote: > On Fri, Sep 21, 2012 at 08:27:07AM +0000, Hebbar, Gururaja wrote: > > On Thu, Sep 20, 2012 at 20:13:33, Porter, Matt wrote: > > > This series adds DMA Engine support for AM33xx, which uses > > > an EDMA DMAC. The EDMA DMAC has been previously supported by only > > > a private API implementation (much like the situation with OMAP > > > DMA) found on the DaVinci family of SoCs. > > > > > > There are a mind-boggling number of dependencies for this series: > > > > > > - Jon Hunter's OF DMA helpers series > > > https://patchwork.kernel.org/patch/1461061/ > > > https://patchwork.kernel.org/patch/1461051/ > > > - Patch to address OF DMA helpers naming issues: > > > https://patchwork.kernel.org/patch/1477921/ > > > - EDMA DMA Engine wrapper driver in linux-next > > > c2dde5f8f2095d7c623ff3565c1462e190272273 > > > - EDMA DMA Engine wrapper driver bug fix: > > > https://patchwork.kernel.org/patch/1474411/ > > > - A huge number of patches in linux-next for AM33xx boot > > > (too numerous to list) > > > > > > The approach taken is similar to how OMAP DMA is being converted to > > > DMA Engine support. With the functional EDMA private API already > > > existing in mach-davinci/dma.c, we first move that to an ARM common > > > area so it can be shared. Adding DT and runtime PM support to the > > > private EDMA API implementation allows it to run on AM33xx. AM33xx > > > *only* boots using DT so we leverage Jon's generic DT DMA helpers to > > > register EDMA DMAC with the of_dma framework and then add support > > > for calling the dma_request_slave_channel() API to both the mmc > > > and spi drivers. > > > > > > What works? Well, with this series we now have MMC and SPI support > > > on AM33xx. The only caveat for MMC is that the mmc3 controller has > > > its events on the crossbar and is not usable right now. > > > > > > This is tested on BeagleBone with a SPI framebuffer driver and SD > > > card. > > > > > > After this series, the plan is to convert the last in-tree user > > > of the private EDMA API (davinci-pcm/mcasp) and then eliminate > > > the private EDMA API by folding its functionality into > > > drivers/dma/edma.c. > > > > > > TODO: > > > add AM33xx crossbar support to the private EDMA API > > > (any EDMA events on the crossbar are not supported) > > > > > > > > > Can you please mention the base repo you have taken as starting point. > > (repo + extra patches ...). > > It's mainline 3.6-rc6 and you can see the complete set of patches > at https://github.com/ohporter/linux/tree/edma-dmaengine-am33xx-rfc-v1 > after commit 5698bd757d55b1bb87edd1a9744ab09c142abfc2 > > > This will help us to test the code. > > > > This is because I looked at the patch 12/13 and I see that mmc > > device-node is modified. But in mainline I don’t see device > > node for mmc (yet). > > Oops. You'll need e62a3333ae450bcdefbe22229d7bc277ae0ef645 and > fe97304557d2c6f7d0aaf1ea028ea48ffca366a9 which I forgot to include > in this series. I'll have them in for v2. Yesterday I tested edma patches on latest linux-next/master + merge of linux-omap/for_3.7/dts_part2. Below are my observations 1. baseline = linux-next/master + merge of linux-omap/for_3.7/dts_part2 2. on top of above branch, I applied patches [1-9]/13 of your edma patches 3. few patches required trivial changes before applying 4. Applied dma of patches as you mentioned 5. add custom patch (ARM: CUSTOM: Build a uImage with dtb already appended) From https://github.com/hvaibhav/am335x-linux/commit/ 7e72f5ed4b702c9373d19f7626f07ae31a381d53#arch/arm/Makefile 6. Modified 9/13 patch to apply properly on latest am33xx.dtsi. a. Edma portion as it is b. mmc portion as below mmc1: mmc@48060000 { compatible = "ti,omap3-hsmmc"; ti,hwmods = "mmc1"; ti,dual-volt; ti,needs-special-reset; bus-width = <4>; vmmc-supply = <&vmmc_reg>; dmas = <&edma 24 &edma 25>; dma-names = "tx", "rx"; }; c. added mmc pinmux as-well 7. make CROSS_COMPILE=arm-arago-linux-gnueabi- ARCH=arm distclean make CROSS_COMPILE=arm-arago-linux-gnueabi- ARCH=arm omap2plus_defconfig 8. enabled TI_EDMA from menuconfig (since it was not enabled for omap2plus_defconfig 9. make CROSS_COMPILE=arm-arago-linux-gnueabi- ARCH=arm uImage make CROSS_COMPILE=arm-arago-linux-gnueabi- ARCH=arm uImage-dtb.am335x-evm With above changes, edma probe was failing at request_mem_region() Inside linux-next/arch/arm/common/edma.c --> edma_probe() I had to modify edma_probe as below With this I was able to boot on am335x-evm and do a successful MMC copy-md5sum-compare test. I believe you are looking into above issue in your v2 version. > > -Matt > ...snip... ...snip... ...snip... Regards, Gururaja ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ diff --git a/arch/arm/common/edma.c b/arch/arm/common/edma.c index f337f81..efe2673 100644 --- a/arch/arm/common/edma.c +++ b/arch/arm/common/edma.c @@ -1589,11 +1589,11 @@ static int __init edma_probe(struct platform_device *pdev) for (j = 0; j < EDMA_MAX_CC; j++) { if (node) { int err; - err = of_address_to_resource(node, 0, &res[j]); + err = of_address_to_resource(node, j, &res[j]); if (err) { dev_err(dev, "unable to find 'reg' property\n"); - return -EIO; + //return -EIO; } r[j] = &res[j];