1. 03 Feb, 2021 1 commit
  2. 02 Feb, 2021 2 commits
  3. 22 Dec, 2020 1 commit
  4. 21 Dec, 2020 3 commits
  5. 31 Oct, 2020 2 commits
  6. 30 Oct, 2020 1 commit
  7. 29 Oct, 2020 2 commits
  8. 27 Oct, 2020 3 commits
  9. 23 Oct, 2020 3 commits
  10. 09 Oct, 2020 2 commits
  11. 07 Oct, 2020 4 commits
  12. 28 Sep, 2020 1 commit
  13. 22 Sep, 2020 4 commits
  14. 15 Sep, 2020 1 commit
    • Julien's avatar
      libxdma: fix next adjacent descriptors · f1e834be
      Julien authored
      Fix the setting of the next adjacent fields in descriptors.
      
      Following commit 5faf23ec the next_adj field of all descriptors is set
      according to the index of the descriptor rather than its address which
      causes issues when dma_alloc_coherent doesn't return an address which is
      page aligned (which happens).
      Moreover, in the case of a transfer which number of descriptors is
      bigger than a full page, the next_adj field is set to the maximum (63)
      for all descriptors untill the last page of descriptors where it starts
      decreasing.
      Last, even before this commit, the next_adj field inside a block of
      adjacent descriptors is not decreasing untill coming near page end,
      which is not compliant with what the documentation says :
      
      "Every descriptor in the descriptor list must accurately describe the descriptor
      or block ofdescriptors that follows. In a block of adjacent descriptors, the
      Nxt_adj value decrements from the first descriptor to the second to last
      descriptor which has a value of zero. Likewise, eachdescriptor in the block
      points to the next descriptor in the block, except for the last descriptor
      which might point to a new block or might terminate the list."
      
      This commit aligns the blocks of adjacent descriptors to
      XDMA_MAX_ADJ_BLOCK_SIZE and makes the next_adj field decrease inside
      each block untill the second to last descriptor in the block or in the
      full transfer. The size of the page being a multiple of the size of the
      block (4096 = sizeof(xdma_desc) * 128 =
      sizeof(xdma_desc) * 2 * XDMA_MAX_ADJ_BLOCK_SIZE
      f1e834be
  15. 08 Sep, 2020 1 commit
  16. 01 Sep, 2020 2 commits
  17. 25 Aug, 2020 5 commits
  18. 19 Aug, 2020 1 commit
    • Jessica Clarke's avatar
      XDMA: Mark engine as not running when stopping after timeouts · cf3611e0
      Jessica Clarke authored
      Unlike engine_start, which sets the engine's running field itself,
      engine_stop instead requires its callers to clear the field. However,
      not all of them do, and notably the timeout handlers do not, meaning
      that after a request times out and we stop the engine we never start it
      again, causing all future transfers on the channel to hit the software
      timeout.
      
      Instead, set running to 0 inside xdma_engine_stop to mirror engine_start
      to both fix the bug and prevent future ones creeping in.
      cf3611e0
  19. 18 Aug, 2020 1 commit