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: 1508211 Return-Path: X-Original-To: patchwork-davinci@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from bear.ext.ti.com (bear.ext.ti.com [192.94.94.41]) by patchwork1.kernel.org (Postfix) with ESMTP id B736F3FDAE for ; Wed, 26 Sep 2012 08:28:09 +0000 (UTC) Received: from dlelxv30.itg.ti.com ([172.17.2.17]) by bear.ext.ti.com (8.13.7/8.13.7) with ESMTP id q8Q8QcL7018026; Wed, 26 Sep 2012 03:26:38 -0500 Received: from DLEE74.ent.ti.com (dlee74.ent.ti.com [157.170.170.8]) by dlelxv30.itg.ti.com (8.13.8/8.13.8) with ESMTP id q8Q8Qcpa008610; Wed, 26 Sep 2012 03:26:38 -0500 Received: from dlelxv23.itg.ti.com (172.17.1.198) by DLEE74.ent.ti.com (157.170.170.8) with Microsoft SMTP Server id 14.1.323.3; Wed, 26 Sep 2012 03:26:38 -0500 Received: from linux.omap.com (dlelxs01.itg.ti.com [157.170.227.31]) by dlelxv23.itg.ti.com (8.13.8/8.13.8) with ESMTP id q8Q8Qc1x023443; Wed, 26 Sep 2012 03:26:38 -0500 Received: from linux.omap.com (localhost [127.0.0.1]) by linux.omap.com (Postfix) with ESMTP id A547980627; Wed, 26 Sep 2012 03:26:37 -0500 (CDT) X-Original-To: davinci-linux-open-source@linux.davincidsp.com Delivered-To: davinci-linux-open-source@linux.davincidsp.com Received: from dbdp20.itg.ti.com (dbdp20.itg.ti.com [172.24.170.38]) by linux.omap.com (Postfix) with ESMTP id 254D680626 for ; Wed, 26 Sep 2012 03:26:35 -0500 (CDT) 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 CC: Linux DaVinci Kernel List , Linux OMAP List , Russell King , "Cousson, Benoit" , Arnd Bergmann , Linux Documentation List , Tony Lindgren , Linux MMC List , Devicetree Discuss , Mark Brown , Linux Kernel Mailing List , Rob Herring , Grant Likely , Vinod Koul , Rob Landley , Dan Williams , Linux SPI Devel List , Chris Ball , Linux ARM Kernel List X-BeenThere: davinci-linux-open-source@linux.davincidsp.com X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: Errors-To: davinci-linux-open-source-bounces@linux.davincidsp.com 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 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];