Adds support for parsing the TI EDMA DT data into the required EDMA
private API platform data. Enables runtime PM support to initialize
the EDMA hwmod. Enables build on OMAP.

Changes by Joel:
* Setup default one-to-one mapping for queue_priority and queue_tc
mapping as discussed in [1].
* Split out xbar stuff to separate patch. [1]

[1] https://patchwork.kernel.org/patch/2226761/

Signed-off-by: Matt Porter <mporter@ti.com>
Acked-by: Sekhar Nori <nsekhar@ti.com>
Signed-off-by: Joel A Fernandes <joelagnel@ti.com>
Adds AM33XX EDMA crossbar event mux support.

Changes by Joel: Split EDMA xbar support out of original EDMA DT parsing patch
to keep it easier for review.

Signed-off-by: Joel A Fernandes <joelagnel@ti.com>
Adds AM33XX EDMA support to the am33xx.dtsi as documented in Documentation/devicetree/bindings/dma/ti-edma.txt

Joel: Drop DT entries that are non-hardware-description for now as discussed in [1]

[1] https://patchwork.kernel.org/patch/2226761/

Signed-off-by: Matt Porter <mporter@ti.com>
Signed-off-by: Joel A Fernandes <joelagnel@ti.com>
dmaengine: edma: enable build for AM33XX

Enable TI EDMA option on OMAP.

Signed-off-by: Matt Porter <mporter@ti.com>
dmaengine: edma: Add TI EDMA device tree binding

The binding definition is based on the generic DMA controller
binding.

Joel: Droped reserved and queue DT entries from Documentation
for now from the original patch series.

Signed-off-by: Matt Porter <mporter@ti.com>
Signed-off-by: Joel A Fernandes <joelagnel@ti.com>
dmaengine: add dma_get_slave_sg_limits()

Add a dmaengine API to retrieve slave SG transfer limits.

The API is optionally implemented by dmaengine drivers and when
unimplemented will return a NULL pointer. A client driver using
this API provides the required dma channel, address width, and
burst size of the transfer. dma_get_slave_sg_limits() returns an
SG limits structure with the maximum number and size of SG segments
that the given channel can handle.

Signed-off-by: Matt Porter <mporter@ti.com>
spi: omap2-mcspi: add generic DMA request support to the DT binding

The binding definition is based on the generic DMA request binding

Signed-off-by: Matt Porter <mporter@ti.com>
dma: edma: add device_slave_sg_limits() support

Implement device_slave_sg_limits().

EDMA has a finite set of PaRAM slots available for linking a
multi-segment SG transfer. In order to prevent any one channel
from consuming all PaRAM slots to fulfill a large SG transfer,
the driver reports a static per-channel max number of SG segments
it will handle.

The maximum size of an SG segment is limited by the addr_width
and maxburst of a given transfer request. These values are
provided by the client driver and used to calculate and return
the maximum segment length.

Signed-off-by: Matt Porter <mporter@ti.com>
TI EDMA: Enable Kconfig options for Davinci

* Share CONFIG option for TI_EDMA between TI_PRIV_EDMA, since they
are coupled, build both of them with single config option- TI_EDMA

* Select DMADEVICES for building drivers/dma for Davinci which is
required for building TI EDMA driver.

* Further, build TI_EDMA by default if DMADEVICES is selected by
DAVINCI or OMAP ARCHs. One might argue that EDMA is being built by
default for all mach-omap2plus, but it is require for atleast some
platforms with EDMA to boot (mount rootfs) so we enable it.

* Add MMC and EXT4 options to da8xx_omapl_defconfig

The idea is to give one an out-of-the-box experience when building
omap2plus_defconfig or other Davinci defconfig.

Signed-off-by: Joel A Fernandes <joelagnel@ti.com>
mmc: davinci_mmc: Drop include for EDMA private API header

davinci_mmc has been converted to use the DMAengine, drop the header
include which is no longer needed. All edma declarations are in linux/edma.h
which is included.

Signed-off-by: Joel A Fernandes <joelagnel@ti.com>
davinci: spi: Remove dependency on Private DMA header

Davinci SPI driver has already been converted to use DMA Engine, we include
the DMA Engine edma.h instead of the platform one and provide for the Event
datastructre spi-davinci needs in linux/edma.h.

Since there are drivers that include both old and new edma.h headers, we
carefully replicate the dma_event_q structure and conditionally declare them
so that these drivers don't break due to redeclaration.
Ultimately the dma_event_q structure will _only_ be in include/linux/edma.h
and include/linux/platform_data/edma.h will be deleted.

This is in preparation for moving the private EDMA API from arch/arm/common/
to DMA Engine EDMA driver.

Signed-off-by: Joel A Fernandes <joelagnel@ti.com>