Subject: [RFC PATCH 2/3] mmc: host: omap_hsmmc: Enable ADMA2

From: [email-masked] (Tony Lindgren)
Date: Wed, 18 May 2016 12:30:28 -0700

* Peter Ujfalusi <[email-masked]> [160518 03:26]:
> On 05/18/16 11:45, Kishon Vijay Abraham I wrote:
> > omap hsmmc host controller has ADMA2 feature. Enable it here
> > for better read and write throughput. Add a new dt binding
> > "ti,use_adma" to enable ADMA2.
> > 
> > Signed-off-by: Kishon Vijay Abraham I <[email-masked]>
> > ---
> >  .../devicetree/bindings/mmc/ti-omap-hsmmc.txt      |    1 +
> >  drivers/mmc/host/omap_hsmmc.c                      |  320 ++++++++++++++++----
> >  include/linux/platform_data/hsmmc-omap.h           |    1 +
> >  3 files changed, 256 insertions(+), 66 deletions(-)
> > 
> > diff --git a/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt b/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
> > index 74166a0..eb5ceec2 100644
> > --- a/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
> > +++ b/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
> > @@ -28,6 +28,7 @@ specifier is required.
> >  dma-names: List of DMA request names. These strings correspond
> >  1:1 with the DMA specifiers listed in dmas. The string naming is
> >  to be "rx" and "tx" for RX and TX DMA requests, respectively.
> > +ti,use_adma: enable adma2 feature
> 
> Do we have use case when you want to fall back to generic DMA instead of aDMA2?

Yes my guess is that PM runtime breaks with these currently..

> IMHO if the driver supports aDMA2, it is going to use it instead of the
> generic s/eDMA.
> What I mean is:
> the driver implements the aDMA2 support.
> if the IP has support for aDMA2, then it is going to use it, otherwise it will
> use the generic DMA.

Ideally the adma support would be a separate loadable module,
similar how the cppi41dma is a child of the OTG controller.

That way the systems wanting to use adma can just specify it
in the binding, and adma PM runtime support can be added later
on.

Of course this won't work if the adma registers are sprinkled
within the MMC controller registers..

Regards,

Tony