1. 31 Jan, 2014 7 commits
  2. 27 Jan, 2014 2 commits
  3. 20 Jan, 2014 5 commits
  4. 17 Jan, 2014 3 commits
  5. 16 Jan, 2014 12 commits
  6. 15 Jan, 2014 3 commits
  7. 14 Jan, 2014 8 commits
    • Lars-Peter Clausen's avatar
      ASoC: samsung: Remove SND_DMAENGINE_PCM_FLAG_NO_RESIDUE flag · d70e861a
      Lars-Peter Clausen authored
      The Samsung dmaengine ASoC driver is used with two different dmaengine drivers.
      The pl80x, which properly supports residue reporting and the pl330, which
      reports that it does not support residue reporting. So there is no need to
      manually set the NO_RESIDUE flag. This has the advantage that a proper (race
      condition free) PCM pointer() implementation is used when the pl80x driver is
      used. Also once the pl330 driver supports residue reporting the ASoC PCM driver
      will automatically start using it.
      Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: default avatarMark Brown <broonie@linaro.org>
      d70e861a
    • Lars-Peter Clausen's avatar
      ASoC: axi-{spdif,i2s}: Remove SND_DMAENGINE_PCM_FLAG_NO_RESIDUE flag · 153e66f5
      Lars-Peter Clausen authored
      The pl330 driver properly reports that it does not have residue reporting
      support, which means the PCM dmanegine driver is able to figure this out on its
      own. So there is no need to set the flag manually. Removing the flag has the
      advantage that once the pl330 driver gains support for residue reporting it will
      automatically be used by the generic dmaengine PCM driver.
      Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: default avatarMark Brown <broonie@linaro.org>
      153e66f5
    • Lars-Peter Clausen's avatar
      ASoC: generic-dmaengine-pcm: Check DMA residue granularity · 478028e0
      Lars-Peter Clausen authored
      The dmaengine framework now exposes the granularity with which it is able to
      report the transfer residue for a certain DMA channel. Check the granularity in
      the generic dmaengine PCM driver and
      	a) Set the SNDRV_PCM_INFO_BATCH if the granularity is per period or worse.
      	b) Fallback to the (race condition prone) period counting if the driver does
      	not support any residue reporting.
      Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: default avatarMark Brown <broonie@linaro.org>
      478028e0
    • Lars-Peter Clausen's avatar
      ASoC: generic-dmaengine-pcm: Check NO_RESIDUE flag at runtime · 93b943ed
      Lars-Peter Clausen authored
      Currently we have two different snd_soc_platform_driver structs in the generic
      dmaengine PCM driver. One for dmaengine drivers that support residue reporting
      and one for those which do not. When registering the PCM component we check
      whether the NO_RESIDUE flag is set or not and use the corresponding
      snd_soc_platform_driver. This patch modifies the driver to only have one
      snd_soc_platform_driver struct where the pointer() callback checks the
      NO_RESIDUE flag at runtime. This allows us to set the NO_RESIDUE flag after the
      PCM component has been registered. This becomes necessary when querying whether
      the dmaengine driver supports residue reporting from the dmaengine driver itself
      since the DMA channel might only be requested after the PCM component has been
      registered.
      Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: default avatarMark Brown <broonie@linaro.org>
      93b943ed
    • Lars-Peter Clausen's avatar
      dma: pl330: Set residue_granularity · bfb9bb42
      Lars-Peter Clausen authored
      The pl330 driver currently does not support residue reporting, so set the
      residue granularity to DMA_RESIDUE_GRANULARITY_DESCRIPTOR.
      Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
      Acked-by: default avatarVinod Koul <vinod.koul@intel.com>
      Signed-off-by: default avatarMark Brown <broonie@linaro.org>
      bfb9bb42
    • Lars-Peter Clausen's avatar
      dma: Indicate residue granularity in dma_slave_caps · 50720563
      Lars-Peter Clausen authored
      This patch adds a new field to the dma_slave_caps struct which indicates the
      granularity with which the driver is able to update the residue field of the
      dma_tx_state struct. Making this information available to dmaengine users allows
      them to make better decisions on how to operate. E.g. for audio certain features
      like wakeup less operation or timer based scheduling only make sense and work
      correctly if the reported residue is fine-grained enough.
      
      Right now four different levels of granularity are supported:
      	* DESCRIPTOR: The DMA channel is only able to tell whether a descriptor has
      	  been completed or not, which means residue reporting is not supported by
      	  this channel. The residue field of the dma_tx_state field will always be
      	  0.
      	* SEGMENT: The DMA channel updates the residue field after each successfully
      	  completed segment of the transfer (For cyclic transfers this is after each
      	  period). This is typically implemented by having the hardware generate an
      	  interrupt after each transferred segment and then the drivers updates the
      	  outstanding residue by the size of the segment. Another possibility is if
      	  the hardware supports SG and the segment descriptor has a field which gets
      	  set after the segment has been completed. The driver then counts the
      	  number of segments without the flag set to compute the residue.
      	* BURST: The DMA channel updates the residue field after each transferred
      	  burst. This is typically only supported if the hardware has a progress
      	  register of some sort (E.g. a register with the current read/write address
      	  or a register with the amount of bursts/beats/bytes that have been
      	  transferred or still need to be transferred).
      Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
      Acked-by: default avatarVinod Koul <vinod.koul@intel.com>
      Signed-off-by: default avatarMark Brown <broonie@linaro.org>
      50720563
    • Mark Brown's avatar
      Merge branch 'topic/samsung' of... · 8e6714ac
      Mark Brown authored
      Merge branch 'topic/samsung' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-dma
      8e6714ac
    • Mark Brown's avatar
      Merge branch 'topic/axi' of... · 67c2fe2f
      Mark Brown authored
      Merge branch 'topic/axi' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-dma
      67c2fe2f