All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC 0/8] DMA engine conversion for omap_hsmmc
@ 2012-04-18 10:09 ` Russell King - ARM Linux
  0 siblings, 0 replies; 120+ messages in thread
From: Russell King - ARM Linux @ 2012-04-18 10:09 UTC (permalink / raw)
  To: linux-arm-kernel, linux-omap, linux-mmc

This series is the preliminary conversion of OMAPs private DMA API to
DMAengine.  It focuses on the OMAP HSMMC driver, as I believe that is
the only DMA-capable driver which is used on the platforms I have
available (3430LDP and 4430SDP).

For the OMAP DMAengine driver, there's a few short-comings:

1. pause/resume support is not implemented; it's not clear whether the
   OMAP hardware is capable of supporting this sanely.

2. status function does not return DMA residue.

3. DMAengine holds on to physical DMA channels while the driver maintains
   a reference to the virtual DMA engine channel.  This is not an issue
   with drivers; drivers should be able to hold a DMA channel for their
   lifetime.  DMAengine code could be improved to dynamically allocate
   physical channels, but this should happen when more drivers have been
   converted.

I took the approach with omap_hsmmc to add DMAengine support to the driver
along side the existing DMA support, so that I had a stage where I could
switch between the two implementations for comparisons - and also to allow
me to run with read using DMAengine support, and write using the private
API.  This allowed a progressive switch over to using DMAengine, and
allowed debugging without destroying the contents of the MMC card.

A point about DMAengine and DMA API for anyone who contemplates converting
other drivers: the struct device to be used for mapping/unmapping/coherent
memory is the DMAengine's device structure (channel->device->dev) not the
peripheral (eg, MMC) device structure.  It's the DMAengine which is
performing the DMA to memory, not the peripheral device.  The peripheral
device is merely receiving the data from the DMAengine, and does not care
where that data has come from.  So, dma masks for peripheral devices are
meaningless (and wrong.)

^ permalink raw reply	[flat|nested] 120+ messages in thread

end of thread, other threads:[~2012-04-27 21:41 UTC | newest]

Thread overview: 120+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-04-18 10:09 [RFC 0/8] DMA engine conversion for omap_hsmmc Russell King - ARM Linux
2012-04-18 10:09 ` Russell King - ARM Linux
2012-04-18 10:10 ` [PATCH 1/8] ARM: OMAP: fix DMA vs memory ordering Russell King
2012-04-18 10:10   ` Russell King
2012-04-18 10:15   ` Felipe Balbi
2012-04-18 10:15     ` Felipe Balbi
2012-04-18 10:17     ` Russell King - ARM Linux
2012-04-18 10:17       ` Russell King - ARM Linux
2012-04-18 10:18       ` Felipe Balbi
2012-04-18 10:18         ` Felipe Balbi
2012-04-18 10:26         ` Russell King - ARM Linux
2012-04-18 10:26           ` Russell King - ARM Linux
2012-04-20 22:22   ` Tony Lindgren
2012-04-20 22:22     ` Tony Lindgren
2012-04-23 14:19     ` Russell King - ARM Linux
2012-04-23 14:19       ` Russell King - ARM Linux
2012-04-23 14:27       ` Tony Lindgren
2012-04-23 14:27         ` Tony Lindgren
2012-04-23 14:35         ` Shilimkar, Santosh
2012-04-23 14:35           ` Shilimkar, Santosh
2012-04-18 10:10 ` [PATCH 2/8] dmaengine: amba-pl08x: ensure physical channels are properly held Russell King
2012-04-18 10:10   ` Russell King
2012-04-18 10:19   ` Russell King - ARM Linux
2012-04-18 10:19     ` Russell King - ARM Linux
2012-04-27 20:38     ` Linus Walleij
2012-04-27 20:38       ` Linus Walleij
2012-04-27 21:41       ` Russell King - ARM Linux
2012-04-27 21:41         ` Russell King - ARM Linux
2012-04-18 10:11 ` [PATCH 3/8] dmaengine: split out virtual channel DMA support from sa11x0 driver Russell King
2012-04-18 10:11   ` Russell King
2012-04-24 10:35   ` Laxman Dewangan
2012-04-24 10:35     ` Laxman Dewangan
2012-04-24 10:50     ` Russell King - ARM Linux
2012-04-24 10:50       ` Russell King - ARM Linux
2012-04-24 10:57       ` Laxman Dewangan
2012-04-24 10:57         ` Laxman Dewangan
2012-04-18 10:11 ` [PATCH 4/8] dmaengine: add OMAP DMA engine driver Russell King
2012-04-18 10:11   ` Russell King
2012-04-18 10:11 ` [PATCH 5/8] mmc: omap_hsmmc: release correct resource Russell King
2012-04-18 10:11   ` Russell King
2012-04-20 22:23   ` Tony Lindgren
2012-04-20 22:23     ` Tony Lindgren
2012-04-20 22:59     ` Chris Ball
2012-04-20 22:59       ` Chris Ball
2012-04-21  2:35       ` Chris Ball
2012-04-21  2:35         ` Chris Ball
2012-04-21  9:48         ` Russell King - ARM Linux
2012-04-21  9:48           ` Russell King - ARM Linux
2012-04-22 15:20           ` Chris Ball
2012-04-22 15:20             ` Chris Ball
2012-04-18 10:12 ` [PATCH 6/8] mmc: omap_hsmmc: add DMA engine support Russell King
2012-04-18 10:12   ` Russell King
2012-04-18 18:11   ` Tony Lindgren
2012-04-18 18:11     ` Tony Lindgren
2012-04-18 19:09     ` Russell King - ARM Linux
2012-04-18 19:09       ` Russell King - ARM Linux
2012-04-18 19:53       ` Tony Lindgren
2012-04-18 19:53         ` Tony Lindgren
2012-04-18 10:12 ` [PATCH 7/8] mmc: omap_hsmmc: remove private DMA API implementation Russell King
2012-04-18 10:12   ` Russell King
2012-04-18 10:12 ` [PATCH 8/8] ARM: omap_hsmmc: remove platform data dma_mask and initialization Russell King
2012-04-18 10:12   ` Russell King
2012-04-18 15:23   ` T Krishnamoorthy, Balaji
2012-04-18 15:23     ` T Krishnamoorthy, Balaji
2012-04-18 15:29     ` Russell King - ARM Linux
2012-04-18 15:29       ` Russell King - ARM Linux
2012-04-18 15:35       ` T Krishnamoorthy, Balaji
2012-04-18 15:35         ` T Krishnamoorthy, Balaji
2012-04-18 18:19         ` Tony Lindgren
2012-04-18 18:19           ` Tony Lindgren
2012-04-18 19:10           ` Russell King - ARM Linux
2012-04-18 19:10             ` Russell King - ARM Linux
2012-04-18 19:55             ` Tony Lindgren
2012-04-18 19:55               ` Tony Lindgren
2012-04-18 19:42         ` Russell King - ARM Linux
2012-04-18 19:42           ` Russell King - ARM Linux
2012-04-18 20:02           ` Tony Lindgren
2012-04-18 20:02             ` Tony Lindgren
2012-04-18 20:24             ` Russell King - ARM Linux
2012-04-18 20:24               ` Russell King - ARM Linux
2012-04-18 21:01               ` Tony Lindgren
2012-04-18 21:01                 ` Tony Lindgren
2012-04-18 21:16                 ` Russell King - ARM Linux
2012-04-18 21:16                   ` Russell King - ARM Linux
2012-04-18 21:34                   ` Tony Lindgren
2012-04-18 21:34                     ` Tony Lindgren
2012-04-18 21:36                   ` Russell King - ARM Linux
2012-04-18 21:36                     ` Russell King - ARM Linux
2012-04-19  1:39                     ` Tony Lindgren
2012-04-19  1:39                       ` Tony Lindgren
2012-04-19 17:43                       ` Russell King - ARM Linux
2012-04-19 17:43                         ` Russell King - ARM Linux
2012-04-19 18:07                         ` Tony Lindgren
2012-04-19 18:07                           ` Tony Lindgren
2012-04-20 15:10                           ` Russell King - ARM Linux
2012-04-20 15:10                             ` Russell King - ARM Linux
2012-04-20 15:26                             ` Tony Lindgren
2012-04-20 15:26                               ` Tony Lindgren
2012-04-20 15:37                               ` Russell King - ARM Linux
2012-04-20 15:37                                 ` Russell King - ARM Linux
2012-04-20 16:43                                 ` Tony Lindgren
2012-04-20 16:43                                   ` Tony Lindgren
2012-04-20 22:09                                   ` Russell King - ARM Linux
2012-04-20 22:09                                     ` Russell King - ARM Linux
2012-04-20 22:21                                     ` Tony Lindgren
2012-04-20 22:21                                       ` Tony Lindgren
2012-04-20 16:50                                 ` Tony Lindgren
2012-04-20 16:50                                   ` Tony Lindgren
2012-04-23 14:14                                   ` Russell King - ARM Linux
2012-04-23 14:14                                     ` Russell King - ARM Linux
2012-04-23 14:30                                     ` Tony Lindgren
2012-04-23 14:30                                       ` Tony Lindgren
2012-04-23 14:34                                       ` Russell King - ARM Linux
2012-04-23 14:34                                         ` Russell King - ARM Linux
2012-04-23 11:46 ` [RFC 0/8] DMA engine conversion Russell King - ARM Linux
2012-04-23 11:46   ` Russell King - ARM Linux
2012-04-23 12:32   ` Shilimkar, Santosh
2012-04-23 12:32     ` Shilimkar, Santosh
2012-04-23 15:27     ` Shubhrajyoti
2012-04-23 15:27       ` Shubhrajyoti

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.