1. 10 1月, 2017 1 次提交
    • P
      dmaengine: omap-dma: Fix the port_window support · 527a2759
      Peter Ujfalusi 提交于
      We do not yet have users of port_window. The following errors were found
      when converting the tusb6010_omap.c musb driver:
      
      - The peripheral side must have SRC_/DST_PACKED disabled
      - when configuring the burst for the peripheral side the memory side
        configuration were overwritten: d->csdp = ... -> d->csdp |= ...
      - The EI and FI were configured for the wrong sides of the transfers.
      
      With these changes and the converted tus6010_omap.c I was able to verify
      that things are working as they expected to work.
      
      Fixes: 201ac486 ("dmaengine: omap-dma: Support for slave devices with data port window")
      Signed-off-by: NPeter Ujfalusi <peter.ujfalusi@ti.com>
      Signed-off-by: NVinod Koul <vinod.koul@intel.com>
      527a2759
  2. 03 1月, 2017 1 次提交
  3. 30 11月, 2016 1 次提交
  4. 19 10月, 2016 1 次提交
  5. 18 10月, 2016 1 次提交
    • S
      dmaengine: omap-dma: add support for pause of non-cyclic transfers · 99340754
      Sebastian Andrzej Siewior 提交于
      This DMA driver is used by 8250-omap on DRA7-evm. There is one
      requirement that is to pause a transfer. This is currently used on the RX
      side. It is possible that the UART HW aborted the RX (UART's RX-timeout)
      but the DMA controller starts the transfer shortly after.
      Before we can manually purge the FIFO we need to pause the transfer,
      check how many bytes it already received and terminate the transfer
      without it making any progress.
      
      From testing on the TX side it seems that it is possible that we invoke
      pause once the transfer has completed which is indicated by the missing
      CCR_ENABLE bit but before the interrupt has been noticed. In that case the
      interrupt will come even after disabling it.
      
      The AM572x manual says that we have to wait for the CCR_RD_ACTIVE &
      CCR_WR_ACTIVE bits to be gone before programming it again here is the
      drain loop. Also it looks like without the drain the TX-transfer makes
      sometimes progress.
      
      One note: The pause + resume combo is broken because after resume the
      the complete transfer will be programmed again. That means the already
      transferred bytes (until the pause event) will be sent again. This is
      currently not important for my UART user because it does only pause +
      terminate.
      
      v3…v4:
       - update subject line.
      
      v2…v3:
        - rephrase the comment based on Russell's information / feedback.
      
      v1…v2:
        - move the drain loop into omap_dma_drain_chan() instead of having it
          twice.
        - allow pause only for DMA_DEV_TO_MEM transfers if non-cyclic. Add a
          comment why DMA_MEM_TO_DEV not allowed.
        - clear pause on terminate_all. Otherwise pause() + terminate_all()
          will keep the pause bit set and we can't pause the following
          transfer.
      Signed-off-by: NSebastian Andrzej Siewior <bigeasy@linutronix.de>
      [vigneshr@ti.com: drain channel only when buffering is on, rebase to v4.8]
      Signed-off-by: NVignesh R <vigneshr@ti.com>
      Acked-by: NPeter Ujfalusi <peter.ujfalusi@ti.com>
      Signed-off-by: NVinod Koul <vinod.koul@intel.com>
      99340754
  6. 01 10月, 2016 1 次提交
  7. 14 9月, 2016 1 次提交
  8. 11 8月, 2016 6 次提交
  9. 24 7月, 2016 1 次提交
  10. 16 7月, 2016 1 次提交
  11. 06 4月, 2016 2 次提交
  12. 22 2月, 2016 1 次提交
  13. 18 12月, 2015 1 次提交
  14. 05 12月, 2015 4 次提交
  15. 05 10月, 2015 1 次提交
    • M
      dmaengine: omap-dma: Enable packed accesses for cyclic transfers · 47fac241
      Misael Lopez Cruz 提交于
      The L3 throughput can be higher than expected when packed access
      is not enabled.  The ratio depends on the number of bytes in a
      transaction and the EMIF interface width.
      
      The throughput was measured for the following settings/cases:
      
      * Case 1: Burst size of 64 bytes, packed access disabled
      * Case 2: Burst size of 64 bytes, packed access enabled
      * Case 3: Burst disabled, packed access disabled
      
      Throughput measurements were done during McASP-based audio
      playback on the Jacinto6 EVM using the omapconf tool [1]:
      $ omapconf trace bw -m sdma_rd
      
       ---------------------------------------------------------
                                        Throughput (MB/s)
        Audio parameters            Case 1    Case 2    Case 3
       ---------------------------------------------------------
        44.1kHz, 16-bits, stereo      1.41      0.18      1.41
        44.1kHz, 32-bits, stereo      1.41      0.35      1.41
        44.1kHz, 16-bits, 4-chan      2.82      0.35      2.82
        44.1kHz, 16-bits, 6-chan      4.23      0.53      4.23
        44.1kHz, 16-bits, 8-chan      5.64      0.71      5.64
       ---------------------------------------------------------
      
      From above measurements, case 2 is the only one that delivers
      the expected throughput for the given audio parameters.  For
      that reason, the packed accesses are now enabled.
      
      It's worth to mention that packed accesses cannot be enabled
      for all addressing modes. In cyclic transfers, it can be
      enabled in the source for MEM_TO_DEV and in dest for DEV_TO_MEM,
      as they use post-increment mode which supports packed accesses.
      
      Peter Ujfalusi:
      From the TRM regarding to this:
      "NOTE: Except in the constant addressing mode, the source or
      destination must be specified as packed for burst transactions
      to occur."
      
      So w/o the packed setting the burst on the MEM side was not
      enabled, this explains the numbers.
      
      [1] https://github.com/omapconf/omapconfSigned-off-by: NMisael Lopez Cruz <misael.lopez@ti.com>
      Signed-off-by: NPeter Ujfalusi <peter.ujfalusi@ti.com>
      Signed-off-by: NVinod Koul <vinod.koul@intel.com>
      47fac241
  16. 09 5月, 2015 4 次提交
  17. 04 5月, 2015 1 次提交
  18. 31 3月, 2015 1 次提交
    • P
      dmaengine: omap-dma: Fix memory leak when terminating running transfer · 02d88b73
      Peter Ujfalusi 提交于
      In omap_dma_start_desc the vdesc->node is removed from the virt-dma
      framework managed lists (to be precise from the desc_issued list).
      If a terminate_all comes before the transfer finishes the omap_desc will
      not be freed up because it is not in any of the lists and we stopped the
      DMA channel so the transfer will not going to complete.
      There is no special sequence for leaking memory when using cyclic (audio)
      transfer: with every start and stop of a cyclic transfer the driver leaks
      struct omap_desc worth of memory.
      
      Free up the allocated memory directly in omap_dma_terminate_all() since the
      framework will not going to do that for us.
      Signed-off-by: NPeter Ujfalusi <peter.ujfalusi@ti.com>
      CC: <stable@vger.kernel.org>
      CC: <linux-omap@vger.kernel.org>
      Signed-off-by: NVinod Koul <vinod.koul@intel.com>
      02d88b73
  19. 22 12月, 2014 4 次提交
  20. 06 11月, 2014 1 次提交
  21. 20 10月, 2014 1 次提交
  22. 23 9月, 2014 2 次提交
  23. 04 8月, 2014 1 次提交
  24. 04 4月, 2014 1 次提交