<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/dma/idma64.c, branch linux-4.9.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.9.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.9.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2019-06-22T06:17:17Z</updated>
<entry>
<title>dmaengine: idma64: Use actual device for DMA transfers</title>
<updated>2019-06-22T06:17:17Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2019-03-18T15:39:30Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e09a5cb80b31b011bcc9748af04fb39e58af107d'/>
<id>urn:sha1:e09a5cb80b31b011bcc9748af04fb39e58af107d</id>
<content type='text'>
[ Upstream commit 5ba846b1ee0792f5a596b9b0b86d6e8cdebfab06 ]

Intel IOMMU, when enabled, tries to find the domain of the device,
assuming it's a PCI one, during DMA operations, such as mapping or
unmapping. Since we are splitting the actual PCI device to couple of
children via MFD framework (see drivers/mfd/intel-lpss.c for details),
the DMA device appears to be a platform one, and thus not an actual one
that performs DMA. In a such situation IOMMU can't find or allocate
a proper domain for its operations. As a result, all DMA operations are
failed.

In order to fix this, supply parent of the platform device
to the DMA engine framework and fix filter functions accordingly.

We may rely on the fact that parent is a real PCI device, because no
other configuration is present in the wild.

Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Acked-by: Mark Brown &lt;broonie@kernel.org&gt;
Acked-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt; [for tty parts]
Signed-off-by: Vinod Koul &lt;vkoul@kernel.org&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>dmaengine: idma64: clear LLP_[SD]_EN bits in last descriptor</title>
<updated>2016-02-15T16:36:45Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2016-01-26T11:43:13Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a2826e662eb13a041078260692b4e023ed5cbf62'/>
<id>urn:sha1:a2826e662eb13a041078260692b4e023ed5cbf62</id>
<content type='text'>
The datasheet requires that the user must clear LLP_[SD]_EN bits whenever
LLP.LOC is zero, i.e. in the last descriptor of a multi-block chain.

Make the driver do this.

Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: idma64: use local variable to index descriptor</title>
<updated>2015-12-05T08:24:28Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2015-11-17T11:37:10Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=390c49f7174a85d88ec080058d8b5c2e301d3f6b'/>
<id>urn:sha1:390c49f7174a85d88ec080058d8b5c2e301d3f6b</id>
<content type='text'>
Since a local variable contains the number of hardware desriptors at the
beginning of idma64_desc_fill() we may use it to index the last descriptor as
well.

Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: idma64: convert idma64_hw_desc_fill() to return void</title>
<updated>2015-12-05T08:24:28Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2015-11-17T11:37:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ac02979413e0310f85bbcc2945d65da7071c08fe'/>
<id>urn:sha1:ac02979413e0310f85bbcc2945d65da7071c08fe</id>
<content type='text'>
Explicitly show in idma64_desc_fill() how we link the hardware
descriptors.

Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: idma64: set maximum allowed segment size for DMA</title>
<updated>2015-12-05T08:24:28Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2015-11-17T11:37:08Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e3fdb1894cfac6dd4a5bb24d3232fd97ddf74c93'/>
<id>urn:sha1:e3fdb1894cfac6dd4a5bb24d3232fd97ddf74c93</id>
<content type='text'>
This tells, for example, IOMMU what the maximum size of a segment
the DMA controller can send.

Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: idma64: drop IRQ enable / disable in handler</title>
<updated>2015-12-05T08:24:28Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2015-11-17T11:37:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=37580559f314bfba0c8bdae002bc5c10088ac457'/>
<id>urn:sha1:37580559f314bfba0c8bdae002bc5c10088ac457</id>
<content type='text'>
There is no need to disable interrupts in the IRQ handler. The driver
guarantess that at one time only one descriptor is active, besides the fact
that each call to the same channel will be serialized in idma64_chan_irq()
handler anyway.

Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>Merge tag 'dmaengine-4.4-rc1' of git://git.infradead.org/users/vkoul/slave-dma</title>
<updated>2015-11-10T18:05:17Z</updated>
<author>
<name>Linus Torvalds</name>
</author>
<published>2015-11-10T18:05:17Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=041c79514af9080c75197078283134f538f46b44'/>
<id>urn:sha1:041c79514af9080c75197078283134f538f46b44</id>
<content type='text'>
Pull dmaengine updates from Vinod Koul:
 "This time we have a very typical update which is mostly fixes and
  updates to drivers and no new drivers.

   - the biggest change is coming from Peter for edma cleanup which even
     caused some last minute regression, things seem settled now
   - idma64 and dw updates
   - iotdma updates
   - module autoload fixes for various drivers
   - scatter gather support for hdmac"

* tag 'dmaengine-4.4-rc1' of git://git.infradead.org/users/vkoul/slave-dma: (77 commits)
  dmaengine: edma: Add dummy driver skeleton for edma3-tptc
  Revert "ARM: DTS: am33xx: Use the new DT bindings for the eDMA3"
  Revert "ARM: DTS: am437x: Use the new DT bindings for the eDMA3"
  dmaengine: dw: some Intel devices has no memcpy support
  dmaengine: dw: platform: provide platform data for Intel
  dmaengine: dw: don't override platform data with autocfg
  dmaengine: hdmac: Add scatter-gathered memset support
  dmaengine: hdmac: factorise memset descriptor allocation
  dmaengine: virt-dma: Fix kernel-doc annotations
  ARM: DTS: am437x: Use the new DT bindings for the eDMA3
  ARM: DTS: am33xx: Use the new DT bindings for the eDMA3
  dmaengine: edma: New device tree binding
  dmaengine: Kconfig: edma: Select TI_DMA_CROSSBAR in case of ARCH_OMAP
  dmaengine: ti-dma-crossbar: Add support for crossbar on AM33xx/AM43xx
  dmaengine: edma: Merge the of parsing functions
  dmaengine: edma: Do not allocate memory for edma_rsv_info in case of DT boot
  dmaengine: edma: Refactor the dma device and channel struct initialization
  dmaengine: edma: Get qDMA channel information from HW also
  dmaengine: edma: Merge map_dmach_to_queue into assign_channel_eventq
  dmaengine: edma: Correct PaRAM access function names (_parm_ to _param_)
  ...
</content>
</entry>
<entry>
<title>dmaengine: idma64: make better performance on pause / resume</title>
<updated>2015-09-25T02:24:05Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2015-09-14T08:55:40Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2e9b55becc905207eb01e24bc282f8062cc497b5'/>
<id>urn:sha1:2e9b55becc905207eb01e24bc282f8062cc497b5</id>
<content type='text'>
Accordingly to the documentation the CH_DRAIN bit enforses single bursts when
channel is going to be suspended. This, in case when channel will be resumed,
makes data to flow in non-optimal mode until DMA returns to full burst mode.
The fix differentiates pause / resume cycle from pause / terminate and sets
CH_DRAIN bit accordingly.

Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: idma64: useless use of min_t()</title>
<updated>2015-09-25T02:24:05Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2015-09-14T08:55:38Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=22b74406c5ac1829cd60f75c8c6a4ed1e0f4da03'/>
<id>urn:sha1:22b74406c5ac1829cd60f75c8c6a4ed1e0f4da03</id>
<content type='text'>
We use a pattern

	x = min_t(u32, &lt;LOG2_CONSTANT&gt;, __ffs(expr));

There is no need to use min_t() since we can replace it by

	x = __ffs(expr | &lt;2^LOG2_CONST&gt;);

and moreover guarantee that argument of __ffs() will be not zero.

Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: idma64: convert to __ffs()</title>
<updated>2015-09-25T02:24:05Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2015-09-14T08:55:37Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=87b045969ad3fe021ccbd1ed88e7cb90adf4ca80'/>
<id>urn:sha1:87b045969ad3fe021ccbd1ed88e7cb90adf4ca80</id>
<content type='text'>
We replace __fls() by __ffs() since we have to find a *minimum* data width that
satisfies both source and destination.

Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
</feed>
