<feed xmlns='http://www.w3.org/2005/Atom'>
<title>user/sven/linux.git/drivers/dma/cppi41.c, branch v4.4.29</title>
<subtitle>Linux Kernel
</subtitle>
<id>https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v4.4.29</id>
<link rel='self' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v4.4.29'/>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/'/>
<updated>2015-04-11T15:42:58Z</updated>
<entry>
<title>dmaengine: cppi41: add missing bitfields</title>
<updated>2015-04-11T15:42:58Z</updated>
<author>
<name>Felipe Balbi</name>
<email>balbi@ti.com</email>
</author>
<published>2015-04-08T16:45:42Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=ffeb13aab68e2d0082cbb147dc765beb092f83f4'/>
<id>urn:sha1:ffeb13aab68e2d0082cbb147dc765beb092f83f4</id>
<content type='text'>
Add missing directions, residue_granularity,
srd_addr_widths and dst_addr_widths bitfields.

Without those we will see a kernel WARN()
when loading musb on am335x devices.

Signed-off-by: Felipe Balbi &lt;balbi@ti.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: cppi41: Split device_control</title>
<updated>2014-12-22T06:58:57Z</updated>
<author>
<name>Maxime Ripard</name>
<email>maxime.ripard@free-electrons.com</email>
</author>
<published>2014-11-17T13:42:10Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=3b5a03a6646534f939e3a52c0c6ed1a6546c5104'/>
<id>urn:sha1:3b5a03a6646534f939e3a52c0c6ed1a6546c5104</id>
<content type='text'>
Split the device_control callback of the TI CPPI41 DMA driver to make use
of the newly introduced callbacks, that will eventually be used to retrieve
slave capabilities.

Signed-off-by: Maxime Ripard &lt;maxime.ripard@free-electrons.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dma: cppi41: add a delay while setting the TD bit</title>
<updated>2014-12-09T09:15:41Z</updated>
<author>
<name>Sebastian Andrzej Siewior</name>
<email>bigeasy@linutronix.de</email>
</author>
<published>2014-12-03T14:09:50Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=754416e10beb067e0bb473e00bf210c6f268e666'/>
<id>urn:sha1:754416e10beb067e0bb473e00bf210c6f268e666</id>
<content type='text'>
The manual says that we need to (repeatedly) set the TearDown-bit for
the endpoint in order to get the active transfer descriptor released.
Doing this "real" quick over and over again seems to work but it also
seems that the hardware might not have enough time to breathe. So I
though, hey lets add a udelay() between between the individual sets
of the bit.
This change with the g_zero testcase resulted in a warning about missing
transfer descriptor (we got the tear-down one). It seems that if the
hardware has some time it manages to release the transfer-descriptor on
the completion queue after the teaddown descriptor.
With this change, I observe that the transfer descriptor is released
after 20-30 retry loops.

Signed-off-by: Sebastian Andrzej Siewior &lt;bigeasy@linutronix.de&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dma: cppi41: wait longer for the HW to return the descriptor</title>
<updated>2014-12-09T09:15:41Z</updated>
<author>
<name>Sebastian Andrzej Siewior</name>
<email>bigeasy@linutronix.de</email>
</author>
<published>2014-12-03T14:09:49Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=6f9d70568f3128411c49dd049498d0c13cd3bbc1'/>
<id>urn:sha1:6f9d70568f3128411c49dd049498d0c13cd3bbc1</id>
<content type='text'>
For a "complete" teardown we have to wait until the teardown descriptor
is returned by the hardware. The g_zero testcase "testusb -a -t 9" triggers
the following warning quite reliable:

|------------[ cut here ]------------
|WARNING: CPU: 0 PID: 0 at drivers/dma/cppi41.c:609 cppi41_dma_control+0x198/0x304()
|[&lt;c003f84c&gt;] (warn_slowpath_null) from [&lt;c02be8d8&gt;]
|[&lt;c02be8d8&gt;] (cppi41_dma_control) from [&lt;bf08d25c&gt;]
|[&lt;bf08d25c&gt;] (cppi41_dma_channel_abort [musb_hdrc])
|[&lt;bf08bc38&gt;] (nuke.constprop.10 [musb_hdrc])
|[&lt;bf08bd08&gt;] (musb_gadget_disable [musb_hdrc])
|[&lt;bf252524&gt;] (disable_endpoints [usb_f_ss_lb])
|[&lt;bf2525d8&gt;] (disable_source_sink [usb_f_ss_lb])
|[&lt;bf25260c&gt;] (sourcesink_set_alt [usb_f_ss_lb])
|[&lt;bf23ad24&gt;] (composite_setup [libcomposite])
|[&lt;bf08a2f4&gt;] (musb_g_ep0_irq [musb_hdrc])
|[&lt;bf085ec4&gt;] (musb_interrupt [musb_hdrc])
|[&lt;bf0aeaf4&gt;] (dsps_interrupt [musb_dsps])
|[&lt;c0080ea8&gt;] (handle_irq_event_percpu)
|[&lt;c008112c&gt;] (handle_irq_event)
|[&lt;c008348c&gt;] (handle_level_irq)
|[&lt;c00807a8&gt;] (generic_handle_irq)
|[&lt;c000ee80&gt;] (handle_IRQ)
|[&lt;c00085f0&gt;] (omap3_intc_handle_irq)

and complains about a TD descriptor which is not returned. I've been
looking at several things and haven't noticed anything unusual that
might lead to this.
The manual says "to try again" until the descriptor comes out. I limited
the amount of retries to 100 retries in order to avoid an infinite number
of retries and so a busy-loop. Back then testing revealed that the
number of retries were around 20-30 so 100 seemed a good upper limit.
This g_zero test reaches without a problem 98 retries and it jumps
sometimes to 101 on am335x-evm and so the WARN_ON() triggers. Same test
run on beaglebone black and the retries start at 122 and my max value so
far was at 128.
So lets rise the limit to 500.

Signed-off-by: Sebastian Andrzej Siewior &lt;bigeasy@linutronix.de&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dmaengine: Remove .owner field for driver</title>
<updated>2014-11-06T06:24:18Z</updated>
<author>
<name>Kiran Padwal</name>
<email>kiran.padwal@smartplayin.com</email>
</author>
<published>2014-09-24T06:39:23Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=cd166280b7a1d74248897b48aea39217015ee8c2'/>
<id>urn:sha1:cd166280b7a1d74248897b48aea39217015ee8c2</id>
<content type='text'>
There is no need to init .owner field.

Based on the patch from Peter Griffin &lt;peter.griffin@linaro.org&gt;
"mmc: remove .owner field for drivers using module_platform_driver"

This patch removes the superflous .owner field for drivers which
use the module_platform_driver API, as this is overriden in
platform_driver_register anyway."

Signed-off-by: Kiran Padwal &lt;kiran.padwal@smartplayin.com&gt;
[for nvidia]
Acked-by: Thierry Reding &lt;treding@nvidia.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dma: cppi41: Switch to using managed resource in probe</title>
<updated>2014-10-15T14:56:45Z</updated>
<author>
<name>Kiran Padwal</name>
<email>kiran.padwal@smartplayin.com</email>
</author>
<published>2014-09-24T10:23:46Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=f0f3b5fa7537e13dfd20b4cd399f00545f9fc0e7'/>
<id>urn:sha1:f0f3b5fa7537e13dfd20b4cd399f00545f9fc0e7</id>
<content type='text'>
This change uses managed resource APIs to allocate resources such as,
mem, irq in order to simplify the driver unload or failure cases

Signed-off-by: Kiran Padwal &lt;kiran.padwal@smartplayin.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dma: cppi41: handle 0-length packets</title>
<updated>2014-07-01T06:45:48Z</updated>
<author>
<name>Daniel Mack</name>
<email>zonque@gmail.com</email>
</author>
<published>2014-05-26T12:52:34Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=13bbfb5c4eb4fc85bf977245f9b3624df0187184'/>
<id>urn:sha1:13bbfb5c4eb4fc85bf977245f9b3624df0187184</id>
<content type='text'>
When a 0-length packet is received on the bus, desc-&gt;pd0 yields 1,
which confuses the driver's users. This information is clearly wrong
and not in accordance to the datasheet, but it's been observed on an
AM335x board, very reproducible.

Fix this by looking at bit 19 in PD2 of the completed packet. This bit
will tell us if a zero-length packet was received on a queue. If it's
set, ignore the value in PD0 and report a total length of 0 instead.

Signed-off-by: Daniel Mack &lt;zonque@gmail.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dma: cppi41: start tear down only if channel is busy</title>
<updated>2014-03-11T10:52:43Z</updated>
<author>
<name>George Cherian</name>
<email>george.cherian@ti.com</email>
</author>
<published>2014-02-27T05:14:40Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=975faaeb9985af9774007277fdb36b3dc897f4c3'/>
<id>urn:sha1:975faaeb9985af9774007277fdb36b3dc897f4c3</id>
<content type='text'>
Start the channel tear down only if the channel is busy, else just
bail out. In some cases its seen that by the time the tear down is
initiated the cppi completes the DMA, especially in ISOCH transfers.

Signed-off-by: George Cherian &lt;george.cherian@ti.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>drivers/dma: fix error return code</title>
<updated>2014-01-20T09:28:03Z</updated>
<author>
<name>Julia Lawall</name>
<email>Julia.Lawall@lip6.fr</email>
</author>
<published>2013-12-29T22:47:23Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=f3b77727e82722fafb1940b3fc15bfdddd9aab4a'/>
<id>urn:sha1:f3b77727e82722fafb1940b3fc15bfdddd9aab4a</id>
<content type='text'>
Set the return variable to an error code as done elsewhere in the function.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// &lt;smpl&gt;
(
if@p1 (\(ret &lt; 0\|ret != 0\))
 { ... return ret; }
|
ret@p1 = 0
)
... when != ret = e1
    when != &amp;ret
*if(...)
{
  ... when != ret = e2
      when forall
 return ret;
}

// &lt;/smpl&gt;

Signed-off-by: Julia Lawall &lt;Julia.Lawall@lip6.fr&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
<entry>
<title>dma: cppi41: return code &gt; 0 of pm_runtime_get_sync() is not an error</title>
<updated>2013-11-12T08:58:25Z</updated>
<author>
<name>Sebastian Andrzej Siewior</name>
<email>bigeasy@linutronix.de</email>
</author>
<published>2013-10-22T10:14:06Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=cbf1e56e6aa2fc116a9995d457e8f3cf2be20442'/>
<id>urn:sha1:cbf1e56e6aa2fc116a9995d457e8f3cf2be20442</id>
<content type='text'>
Return code of pm_runtime_get_sync() &gt; 0 is not an error and may happen.
Noticed during rmmod &amp; modprobe testing.

Signed-off-by: Sebastian Andrzej Siewior &lt;bigeasy@linutronix.de&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
</content>
</entry>
</feed>
