1. 02 6月, 2014 10 次提交
  2. 22 5月, 2014 4 次提交
  3. 21 5月, 2014 1 次提交
  4. 07 5月, 2014 8 次提交
  5. 03 5月, 2014 10 次提交
  6. 02 5月, 2014 3 次提交
  7. 30 4月, 2014 4 次提交
    • J
      dmaengine: edma: update DMA memcpy to use new param element · b0cce4ca
      Joel Fernandes 提交于
      edma param struct is now within an edma_pset struct introduced in Thomas
      Gleixner's edma tx status series. Update memcpy function for the same.
      
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NJoel Fernandes <joelf@ti.com>
      Signed-off-by: NVinod Koul <vinod.koul@intel.com>
      b0cce4ca
    • J
      dmaengine: edma: Document variables used for residue accounting · 04361d88
      Joel Fernandes 提交于
      The granular residue accounting code uses certain variables specifically
      for residue accounting. Document these in the structure declaration.
      Also move around some elements and group them together.
      
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NJoel Fernandes <joelf@ti.com>
      Signed-off-by: NVinod Koul <vinod.koul@intel.com>
      04361d88
    • T
      dmaengine: edma: Provide granular accounting · 740b41f7
      Thomas Gleixner 提交于
      The first slot in the ParamRAM of EDMA holds the current active
      subtransfer. Depending on the direction we read either the source or
      the destination address from there. In the internal psets we have the
      address of the buffer(s).
      
      In the cyclic case we only use the internal pset[0] which holds the
      start address of the circular buffer and calculate the remaining room
      to the end of the buffer.
      
      In the SG case we read the current address and compare it to the
      internal psets address and length.
      
      - If the current address is outside of this range, the pset has been
        processed already and we mark it done, update the residue_stat value
        and process the next set. That avoids that we need to walk all
        processed psets for every invocation of tx_status.
      
      - If its inside the range we know that we look at the current active
        set and stop the walk.
      
      - In case of intermediate transfers we update the stats in the
        interrupt callback function before starting the next batch of
        transfers. The tx_status callback and the interrupt callback are
        serialized via vchan.lock.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      [joelf@ti.com: Hunk #2 in original patch manually applied]
      Signed-off-by: NJoel Fernandes <joelf@ti.com>
      Signed-off-by: NVinod Koul <vinod.koul@intel.com>
      740b41f7
    • T
      dmaengine: edma: Make reading the position of active channels work · cdae05a0
      Thomas Gleixner 提交于
      As Joel pointed out, edma_read_position() uses memcpy_fromio() to read
      the parameter ram. That's not synchronized with the internal update as
      it does a byte by byte copy. We need to do a 32bit read to get a
      consistent value.
      
      Further reading destination and source is pointless. In DEV_TO_MEM
      transfers we are only interested in the destination, in MEM_TO_DEV we
      care about the source. In MEM_TO_MEM it really does not matter which
      one you read.
      
      Simple solution: Remove the pointers, select dest/source via a bool
      and return the read value.
      
      Remove the export of this function while at it. The only potential
      user is the dmaengine and that's always builtin.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Acked-by: NSekhar Nori <nsekhar@ti.com>
      Signed-off-by: NJoel Fernandes <joelf@ti.com>
      Signed-off-by: NVinod Koul <vinod.koul@intel.com>
      cdae05a0