<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/dma/dw/core.c, branch linux-3.16.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.16.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.16.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2016-03-04T10:26:40Z</updated>
<entry>
<title>dmaengine: dw: disable BLOCK IRQs for non-cyclic xfer</title>
<updated>2016-03-04T10:26:40Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2016-02-10T13:59:42Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c36ff8e839eb974cc406a6a023b8c8457191ae72'/>
<id>urn:sha1:c36ff8e839eb974cc406a6a023b8c8457191ae72</id>
<content type='text'>
commit ee1cdcdae59563535485a5f56ee72c894ab7d7ad upstream.

The commit 2895b2cad6e7 ("dmaengine: dw: fix cyclic transfer callbacks")
re-enabled BLOCK interrupts with regard to make cyclic transfers work. However,
this change becomes a regression for non-cyclic transfers as interrupt counters
under stress test had been grown enormously (approximately per 4-5 bytes in the
UART loop back test).

Taking into consideration above enable BLOCK interrupts if and only if channel
is programmed to perform cyclic transfer.

Fixes: 2895b2cad6e7 ("dmaengine: dw: fix cyclic transfer callbacks")
Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Acked-by: Mans Rullgard &lt;mans@mansr.com&gt;
Tested-by: Mans Rullgard &lt;mans@mansr.com&gt;
Acked-by: Viresh Kumar &lt;viresh.kumar@linaro.org&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Signed-off-by: Luis Henriques &lt;luis.henriques@canonical.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: dw: fix cyclic transfer callbacks</title>
<updated>2016-02-02T19:09:38Z</updated>
<author>
<name>Mans Rullgard</name>
</author>
<published>2016-01-11T13:04:29Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=14e23fa47b8c8c2bd4da56bccd511ffa817849d5'/>
<id>urn:sha1:14e23fa47b8c8c2bd4da56bccd511ffa817849d5</id>
<content type='text'>
commit 2895b2cad6e7a95104cf396e5330054453382ae1 upstream.

Cyclic transfer callbacks rely on block completion interrupts which were
disabled in commit ff7b05f29fd4 ("dmaengine/dw_dmac: Don't handle block
interrupts").  This re-enables block interrupts so the cyclic callbacks
can work.  Other transfer types are not affected as they set the INT_EN
bit only on the last block.

Fixes: ff7b05f29fd4 ("dmaengine/dw_dmac: Don't handle block interrupts")
Signed-off-by: Mans Rullgard &lt;mans@mansr.com&gt;
Reviewed-by: Viresh Kumar &lt;viresh.kumar@linaro.org&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Signed-off-by: Luis Henriques &lt;luis.henriques@canonical.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: dw: fix cyclic transfer setup</title>
<updated>2016-02-02T19:09:37Z</updated>
<author>
<name>Mans Rullgard</name>
</author>
<published>2016-01-11T13:04:28Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e1f8b2094e225ca458fca9cacb76703bc5684526'/>
<id>urn:sha1:e1f8b2094e225ca458fca9cacb76703bc5684526</id>
<content type='text'>
commit df3bb8a0e619d501cd13334c3e0586edcdcbc716 upstream.

Commit 61e183f83069 ("dmaengine/dw_dmac: Reconfigure interrupt and
chan_cfg register on resume") moved some channel initialisation to
a new function which must be called before starting a transfer.

This updates dw_dma_cyclic_start() to use dwc_dostart() like the other
modes, thus ensuring dwc_initialize() gets called and removing some code
duplication.

Fixes: 61e183f83069 ("dmaengine/dw_dmac: Reconfigure interrupt and chan_cfg register on resume")
Signed-off-by: Mans Rullgard &lt;mans@mansr.com&gt;
Reviewed-by: Viresh Kumar &lt;viresh.kumar@linaro.org&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Signed-off-by: Luis Henriques &lt;luis.henriques@canonical.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: dw: convert to __ffs()</title>
<updated>2015-12-13T17:49:28Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2015-09-28T15:57:04Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b50915b3d7844162728828bef80603cec4ffee15'/>
<id>urn:sha1:b50915b3d7844162728828bef80603cec4ffee15</id>
<content type='text'>
commit 39416677b95bf1ab8bbfa229ec7e511c96ad5d0c upstream.

We replace __fls() by __ffs() since we have to find a *minimum* data width that
satisfies both source and destination.

While here, rename dwc_fast_fls() to dwc_fast_ffs() which it really is.

Fixes: 4c2d56c574db (dw_dmac: introduce dwc_fast_fls())
Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Signed-off-by: Luis Henriques &lt;luis.henriques@canonical.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: dw: properly read DWC_PARAMS register</title>
<updated>2015-10-28T10:33:11Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2015-09-28T15:57:03Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f92cf18e97a8f58ca7caf2f9983df823691b828d'/>
<id>urn:sha1:f92cf18e97a8f58ca7caf2f9983df823691b828d</id>
<content type='text'>
commit 6bea0f6d1c47b07be88dfd93f013ae05fcb3d8bf upstream.

In case we have less than maximum allowed channels (8) and autoconfiguration is
enabled the DWC_PARAMS read is wrong because it uses different arithmetic to
what is needed for channel priority setup.

Re-do the caclulations properly. This now works on AVR32 board well.

Fixes: fed2574b3c9f (dw_dmac: introduce software emulation of LLP transfers)
Cc: yitian.bu@tangramtek.com
Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Signed-off-by: Luis Henriques &lt;luis.henriques@canonical.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: dw: don't perform DMA when dmaengine_submit is called</title>
<updated>2014-10-05T20:41:11Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2014-06-18T09:15:38Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=65862be0ad074568447ec9939f79f553e1ac84da'/>
<id>urn:sha1:65862be0ad074568447ec9939f79f553e1ac84da</id>
<content type='text'>
commit dd8ecfcac66b4485416b2d1df0ec4798b198d7d6 upstream.

Accordingly to discussion [1] and followed up documentation the DMA controller
driver shouldn't start any DMA operations when dmaengine_submit() is called.

This patch fixes the workflow in dw_dmac driver to follow the documentation.

[1] http://www.spinics.net/lists/arm-kernel/msg125987.html

Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Cc: "Petallo, MauriceX R" &lt;mauricex.r.petallo@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>dmaengine: dw: introduce dwc_dostart_first_queued() helper</title>
<updated>2014-10-05T20:41:11Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2014-06-18T09:15:36Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=491f27a0c192d8a553dc69b30eeb21b544587c7d'/>
<id>urn:sha1:491f27a0c192d8a553dc69b30eeb21b544587c7d</id>
<content type='text'>
commit e7637c6c0382485f4d2e20715d058dae6f2b6a7c upstream.

We have a duplicate code which starts first descriptor in the queue. Let's make
this as a separate helper that can be used in future 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;
Cc: "Petallo, MauriceX R" &lt;mauricex.r.petallo@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>dmaengine: dw: check return code of dma_async_device_register()</title>
<updated>2014-05-22T10:07:25Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2014-05-08T09:01:50Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1222934e54b63752b4b1ad305d6a7f632a3ae46d'/>
<id>urn:sha1:1222934e54b63752b4b1ad305d6a7f632a3ae46d</id>
<content type='text'>
dma_async_device_register() may return non-zero error code. In such case we
have to follow error path.

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: dw: fix regression in dw_probe() function</title>
<updated>2014-05-22T10:07:24Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2014-05-08T09:01:49Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8be4f523b48087765defd18483c66b268b3286e5'/>
<id>urn:sha1:8be4f523b48087765defd18483c66b268b3286e5</id>
<content type='text'>
The commit dbde5c29 "dw_dmac: use devm_* functions to simplify code" turns
probe function to use devm_* helpers and simultaneously brings a regression.

We have to 1) call clk_disable_unprepare() on error path, and 2) check error
code of clk_enable_prepare(). First part was done in the original code, second
one is an update.

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: dw: enable clock before access</title>
<updated>2014-05-22T10:07:24Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2014-05-08T09:01:48Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d2f78e95e42a9130002c76f1a1f76e657a4b4004'/>
<id>urn:sha1:d2f78e95e42a9130002c76f1a1f76e657a4b4004</id>
<content type='text'>
hclk signal is a bus clock. So, it means we have to have it enabled during
access to the DMA controller. This patch makes sure that we enable clock before
access to the device, though it currently works on Intel hardware.

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>
