Thread (52 messages) 52 messages, 9 authors, 2012-10-09

Re: [RFC PATCH 00/13] DMA Engine support for AM33xx

From: Matt Porter <hidden>
Date: 2012-09-24 12:03:22
Also in: linux-arm-kernel, linux-devicetree, linux-omap, linux-spi, lkml

On Mon, Sep 24, 2012 at 11:26:55AM +0000, Hebbar, Gururaja wrote:
On Fri, Sep 21, 2012 at 23:52:11, Porter, Matt wrote:
quoted
On Fri, Sep 21, 2012 at 08:27:07AM +0000, Hebbar, Gururaja wrote:
quoted
On Thu, Sep 20, 2012 at 20:13:33, Porter, Matt wrote:
quoted
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
Thanks for the link. However, I was looking for the mainline kernel repo/branch
That you first used as baseline. 
Linus 3.6-rc6 is the baseline. This inital version was created before any
of the am33xx base support patches got pulled to linux-next. v2 is being
rebased against that to slim down the stack of patches necessary for
testing.
quoted
quoted
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.

-Matt
quoted
quoted
Matt Porter (13):
  ARM: davinci: move private EDMA API to arm/common
  ARM: edma: remove unused transfer controller handlers
  ARM: edma: add DT and runtime PM support for AM335x
  dmaengine: edma: enable build for AM335x
  dma: Add TI EDMA device tree binding
  ARM: omap: add hsmmc am33xx specific init
  mmc: omap_hsmmc: dma_request_slave_channel() support for DT platforms
  mmc: omap_hsmmc: limit max_segs with the EDMA DMAC
  mmc: omap_hsmmc: add generic DMA request support to the DT binding
  spi: omap2-mcspi: dma_request_slave_channel() support for DT
    platforms
  spi: omap2-mcspi: add generic DMA request support to the DT binding
  ARM: dts: add am33xx EDMA support
  Documentation: add schedule for removing private EDMA API

 Documentation/devicetree/bindings/dma/ti-edma.txt  |   49 +
 .../devicetree/bindings/mmc/ti-omap-hsmmc.txt      |   25 +-
 Documentation/devicetree/bindings/spi/omap-spi.txt |   27 +-
 Documentation/feature-removal-schedule.txt         |   10 +
 arch/arm/Kconfig                                   |    1 +
 arch/arm/boot/dts/am33xx.dtsi                      |   46 +
 arch/arm/common/Kconfig                            |    3 +
 arch/arm/common/Makefile                           |    1 +
 arch/arm/common/edma.c                             | 1779 ++++++++++++++++++++
 arch/arm/include/asm/mach/edma.h                   |  267 +++
 arch/arm/mach-davinci/Makefile                     |    2 +-
 arch/arm/mach-davinci/devices.c                    |    3 +-
 arch/arm/mach-davinci/dm355.c                      |    2 +-
 arch/arm/mach-davinci/dm365.c                      |    2 +-
 arch/arm/mach-davinci/dm644x.c                     |    2 +-
 arch/arm/mach-davinci/dm646x.c                     |    2 +-
 arch/arm/mach-davinci/dma.c                        | 1588 -----------------
 arch/arm/mach-davinci/include/mach/asp.h           |    2 +-
 arch/arm/mach-davinci/include/mach/da8xx.h         |    3 +-
 arch/arm/mach-davinci/include/mach/edma.h          |  267 ---
 arch/arm/mach-davinci/include/mach/spi.h           |    2 +-
 arch/arm/mach-omap2/hsmmc.c                        |    7 +-
 arch/arm/plat-omap/Kconfig                         |    1 +
 drivers/dma/Kconfig                                |    2 +-
 drivers/dma/edma.c                                 |    2 +-
 drivers/mmc/host/omap_hsmmc.c                      |   26 +-
 drivers/spi/spi-omap2-mcspi.c                      |   68 +-
 27 files changed, 2296 insertions(+), 1893 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/dma/ti-edma.txt
 create mode 100644 arch/arm/common/edma.c
 create mode 100644 arch/arm/include/asm/mach/edma.h
 delete mode 100644 arch/arm/mach-davinci/dma.c
 delete mode 100644 arch/arm/mach-davinci/include/mach/edma.h

-- 
1.7.9.5

_______________________________________________
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Regards, 
Gururaja
_______________________________________________
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Regards, 
Gururaja
_______________________________________________
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help