An error occurred fetching the project authors.
  1. 08 Jan, 2018 3 commits
  2. 18 Dec, 2017 7 commits
  3. 17 Sep, 2017 1 commit
  4. 05 Sep, 2017 1 commit
  5. 14 Mar, 2017 2 commits
    • Akinobu Mita's avatar
      dmaengine: xilinx: avoid memory corruption for device_prep_dma_memcpy() · db6a3d03
      Akinobu Mita authored
      The device_prep_dma_memcpy() callback for this driver allocates a new
      xilinx_dma_tx_descriptor whose TX segments list is initialized as empty,
      but then gets invalid TX segment pointer by list_last_entry() from the
      empty TX segments list and memory corruption happens by the attempt to
      update the next descriptor in invalid TX segment pointer.
      
      This removes unnecessary memory access for nonexistent tail TX segment
      which causes memory corruption.
      
      Cc: Vinod Koul <vinod.koul@intel.com>
      Cc: Kedareswara rao Appana <appana.durga.rao@xilinx.com>
      Cc: Michal Simek <monstr@monstr.eu>
      Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
      Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
      db6a3d03
    • Akinobu Mita's avatar
      dmaengine: xilinx: fix device_terminate_all() callback for AXI CDMA · 676f9c26
      Akinobu Mita authored
      The device_terminate_all() callback for this driver stops current DMA
      operations by clearing RUNSTOP bit in the control register and waiting
      HALTED bit set in the status register.
      
      But AXI CDMA which is one of the supported DMA engine by this driver
      does not provide the run / stop controls and those bits in the control
      and status registers are reserved.  So when device_terminate_all() is
      called, the error message is printed and the channel is marked as having
      errors in xilinx_dma_halt().
      
      This change adds stop_transfer() callback which differentiates CDMA and
      other DMA engine.  The CDMA's one avoids the unsupported operations and
      instead polls the status register to check if the DMA operations are in
      progress for AXI CDMA.
      
      Cc: Vinod Koul <vinod.koul@intel.com>
      Cc: Kedareswara rao Appana <appana.durga.rao@xilinx.com>
      Cc: Michal Simek <monstr@monstr.eu>
      Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
      Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
      676f9c26
  6. 08 Aug, 2016 1 commit
  7. 12 Jul, 2016 1 commit
  8. 08 Jul, 2016 3 commits
  9. 21 Jun, 2016 2 commits
    • Kedareswara rao Appana's avatar
      dmaengine: vdma: Add 64 bit addressing support for the axi cdma · 9791e71a
      Kedareswara rao Appana authored
      The AXI CDMA is a soft ip, which can be programmed to support
      32 bit addressing or greater than 32 bit addressing.
      
      When the AXI CDMA ip is configured for 32 bit address space
      in simple dma mode the source/destination buffer address is
      specified by a single register(18h for Source buffer address and
      20h for Destination buffer address). When configured in SG mode
      the current descriptor and tail descriptor are specified by a
      Single register(08h for curdesc 10h for tail desc).
      
      When the  AXI CDMA core is configured for an address space greater
      than 32 then each buffer address or descriptor address is specified by
      a combination of two registers.
      
      The first register specifies the LSB 32 bits of address,
      while the next register specifies the MSB 32 bits of address.
      
      For example, 08h will specify the LSB 32 bits while 0Ch will
      specify the MSB 32 bits of the first start address.
      So we need to program two registers at a time.
      
      This patch adds the 64 bit addressing support to the axicdma
      IP in the driver.
      Signed-off-by: default avatarKedareswara rao Appana <appanad@xilinx.com>
      Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
      9791e71a
    • Kedareswara rao Appana's avatar
      dmaengine: vdma: Add 64 bit addressing support for the axi dma · f0cba685
      Kedareswara rao Appana authored
      The AXI DMA is a soft ip, which can be programmed to support
      32 bit addressing or greater than 32 bit addressing.
      
      When the AXI DMA ip is configured for 32 bit address space
      in simple dma mode the buffer address is specified by a single register
      (18h for MM2S channel and 48h for S2MM channel). When configured in SG mode
      The current descriptor and tail descriptor are specified by a single
      Register(08h for curdesc 10h for tail desc for MM2S channel and 38h for
      Curdesc and 40h for tail desc for S2MM).
      
      When the  AXI DMA core is configured for an address space greater
      than 32 then each buffer address or descriptor address is specified by
      a combination of two registers.
      
      The first register specifies the LSB 32 bits of address,
      while the next register specifies the MSB 32 bits of address.
      
      For example, 48h will specify the LSB 32 bits while 4Ch will
      specify the MSB 32 bits of the first start address.
      So we need to program two registers at a time.
      
      This patch adds the 64 bit addressing support for the axidma
      IP in the driver.
      Signed-off-by: default avatarKedareswara rao Appana <appanad@xilinx.com>
      Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
      f0cba685
  10. 13 Jun, 2016 2 commits
    • Arnd Bergmann's avatar
      dmaengine: xilinx-vdma: add some sanity checks · f67c3bda
      Arnd Bergmann authored
      The newly added xilinx_dma_prep_dma_cyclic function sometimes causes
      a gcc warning about the use of the segment function in case
      we never run into the inner loop of the function:
      
      dma/xilinx/xilinx_vdma.c: In function 'xilinx_dma_prep_dma_cyclic':
      dma/xilinx/xilinx_vdma.c:1808:23: error: 'segment' may be used uninitialized in this function [-Werror=maybe-uninitialized]
         segment->hw.control |= XILINX_DMA_BD_SOP;
      
      This can only happen if the period len is zero (which would cause other
      problems earlier), or if the buffer is shorter than a period. Neither
      of them should ever happen, but by adding an explicit check for these two
      cases, we can abort in a more controlled way, and the compiler is
      able to see that we never use uninitialized data.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
      f67c3bda
    • Kedareswara rao Appana's avatar
      dmaengine: vdma: Fix compilation warning in cyclic dma mode · e167a0b6
      Kedareswara rao Appana authored
      This patch fixes the below compilation warining.
      drivers/dma/xilinx/xilinx_vdma.c: In function 'xilinx_dma_prep_dma_cyclic':
      drivers/dma/xilinx/xilinx_vdma.c:1808:23: warning: 'segment' may be used
      uninitialized in this function [-Wmaybe-uninitialized]
         segment->hw.control |= XILINX_DMA_BD_SOP;
      
      The start of packet (SOP) should be set to the first segment in the desc
      chain not for the last segment of the desc chain.
      Signed-off-by: default avatarKedareswara rao Appana <appanad@xilinx.com>
      Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
      e167a0b6
  11. 07 Jun, 2016 2 commits
  12. 13 May, 2016 2 commits
  13. 12 May, 2016 3 commits
  14. 03 May, 2016 1 commit
  15. 06 Apr, 2016 3 commits
  16. 05 Apr, 2016 1 commit
  17. 04 Mar, 2016 1 commit
  18. 03 Mar, 2016 4 commits