ASoC: dmaengine: add custom DMA config to snd_dmaengine_pcm_config
authorStephen Warren <swarren@nvidia.com>
Tue, 3 Dec 2013 21:26:34 +0000 (14:26 -0700)
committerMark Brown <broonie@linaro.org>
Mon, 9 Dec 2013 18:45:01 +0000 (18:45 +0000)
commit194c7dea00c68c1b1f8ff26304fa937a006f66dd
tree5490b3298d3db2ae76ba2dbdc0ca8c7ffaefd3f4
parenta715d01e9c8177634bd7c22e67c9088282744569
ASoC: dmaengine: add custom DMA config to snd_dmaengine_pcm_config

Add fields to struct snd_dmaengine_pcm_config to allow custom:

- DMA channel names.

  This is useful when the default "tx" and "rx" channel names don't
  apply, for example if a HW module supports multiple channels, each
  having different DMA channel names. This is the case with the FIFOs
  in Tegra's AHUB. This new facility can replace
  SND_DMAENGINE_PCM_FLAG_CUSTOM_CHANNEL_NAME.

- DMA device

  This allows requesting DMA channels for a device other than the device
  which is registering the "PCM" driver. This is quite unusual, but is
  currently useful on Tegra. In much HW, and in Tegra20, each DAI HW
  module contains its own FIFOs which DMA writes to. However, in Tegra30,
  the DMA FIFOs were split out AHUB HW module, which then routes the data
  through a cross-bar, and into the DAI HW modules. However, the current
  ASoC driver structure does not expose this detail, and acts as if the
  FIFOs are still part of the DAI HW modules. Consequently, the "PCM"
  driver is registered with the DAI HW module, yet the DMA channels must
  be looked up in the AHUB HW module's device tree node. This new config
  field allows that to happen. Eventually, the Tegra drivers will be
  reworked to fully expose the AHUB, and this config field can be
  removed.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
include/sound/dmaengine_pcm.h
sound/soc/soc-generic-dmaengine-pcm.c