1. 20 8月, 2015 5 次提交
    • E
      dmaengine: sun4i: Add support for the DMA engine on sun[457]i SoCs · b096c137
      Emilio López 提交于
      This patch adds support for the DMA engine present on Allwinner A10,
      A13, A10S and A20 SoCs. This engine has two kinds of channels: normal
      and dedicated. The main difference is in the mode of operation;
      while a single normal channel may be operating at any given time,
      dedicated channels may operate simultaneously provided there is no
      overlap of source or destination.
      
      Hardware documentation can be found on A10 User Manual (section 12), A13
      User Manual (section 14) and A20 User Manual (section 1.12)
      Signed-off-by: NEmilio López <emilio@elopez.com.ar>
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Signed-off-by: NMaxime Ripard <maxime.ripard@free-electrons.com>
      Signed-off-by: NVinod Koul <vinod.koul@intel.com>
      b096c137
    • T
      dmaengine: mv_xor: optimize performance by using a subset of the XOR channels · 77757291
      Thomas Petazzoni 提交于
      Due to how async_tx behaves internally, having more XOR channels than
      CPUs is actually hurting performance more than it improves it, because
      memcpy requests get scheduled on a different channel than the XOR
      requests, but async_tx will still wait for the completion of the
      memcpy requests before scheduling the XOR requests.
      
      It is in fact more efficient to have at most one channel per CPU,
      which this patch implements by limiting the number of channels per
      engine, and the number of engines registered depending on the number
      of availables CPUs.
      
      Marvell platforms are currently available in one CPU, two CPUs and
      four CPUs configurations:
      
       - in the configurations with one CPU, only one channel from one
         engine is used.
      
       - in the configurations with two CPUs, only one channel from each
         engine is used (they are two XOR engines)
      
       - in the configurations with four CPUs, both channels of both engines
         are used.
      Signed-off-by: NThomas Petazzoni <thomas.petazzoni@free-electrons.com>
      Signed-off-by: NVinod Koul <vinod.koul@intel.com>
      77757291
    • T
      dmaengine: mv_xor: remove support for dmacap,* DT properties · 6d8f7abd
      Thomas Petazzoni 提交于
      The only reason why we had dmacap,* properties is because back when
      DMA_MEMSET was supported, only one out of the two channels per engine
      could do a memset operation. But this is something that the driver
      already knows anyway, and since then, the DMA_MEMSET support has been
      removed.
      
      The driver is already well aware of what each channel supports and the
      one to one mapping between Linux specific implementation details (such
      as dmacap,interrupt enabling DMA_INTERRUPT) and DT properties is a
      good indication that these DT properties are wrong.
      
      Therefore, this commit simply gets rid of these dmacap,* properties,
      they are now ignored, and the driver is responsible for knowing the
      capabilities of the hardware with regard to the dmaengine subsystem
      expectations.
      Signed-off-by: NThomas Petazzoni <thomas.petazzoni@free-electrons.com>
      Reviewed-by: NMaxime Ripard <maxime.ripard@free-electrons.com>
      Signed-off-by: NVinod Koul <vinod.koul@intel.com>
      6d8f7abd
    • M
      dmaengine: pl330: do not emit loop for 1 byte transfer. · 31495d60
      Michal Suchanek 提交于
      When there is only one burst required do not emit loop instructions to
      loop exactly once. Emit just the body of the loop.
      Signed-off-by: NMichal Suchanek <hramrach@gmail.com>
      Signed-off-by: NVinod Koul <vinod.koul@intel.com>
      31495d60
    • R
      dmaengine: kill off set_irq_flags usage · 2f27b81c
      Rob Herring 提交于
      set_irq_flags is ARM specific with custom flags which have genirq
      equivalents. Convert drivers to use the genirq interfaces directly, so we
      can kill off set_irq_flags. The translation of flags is as follows:
      
      IRQF_VALID -> !IRQ_NOREQUEST
      IRQF_PROBE -> !IRQ_NOPROBE
      IRQF_NOAUTOEN -> IRQ_NOAUTOEN
      
      For IRQs managed by an irqdomain, the irqdomain core code handles clearing
      and setting IRQ_NOREQUEST already, so there is no need to do this in
      .map() functions and we can simply remove the set_irq_flags calls. Some
      users also modify IRQ_NOPROBE and this has been maintained although it
      is not clear that is really needed. There appears to be a great deal of
      blind copy and paste of this code.
      Signed-off-by: NRob Herring <robh@kernel.org>
      Cc: Dan Williams <dan.j.williams@intel.com>
      Cc: Vinod Koul <vinod.koul@intel.com>
      Cc: dmaengine@vger.kernel.org
      Signed-off-by: NVinod Koul <vinod.koul@intel.com>
      2f27b81c
  2. 19 8月, 2015 16 次提交
  3. 17 8月, 2015 19 次提交