<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers/dma, branch imx-android-r13.2.1</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>ENGR00177235-1 SDMA: add p2p dma mode</title>
<updated>2012-04-06T11:01:28+00:00</updated>
<author>
<name>Chen Liangjun</name>
<email>b36089@freescale.com</email>
</author>
<published>2012-03-20T05:18:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=2747d79c08cd0ca3c097d0ecb39a15f70c483286'/>
<id>2747d79c08cd0ca3c097d0ecb39a15f70c483286</id>
<content type='text'>
Add support for p2p(peripheral to peripheral) dma mode in SDMA
module.
1 Add p2p script membership in struct sdma_channel to support
  device to device tranfer.
2 P2P dma script need more configure information then memory to
  peripheral or peripheral to memory script. we configure these
  information into watermark_level.

Signed-off-by: Chen Liangjun &lt;b36089@freescale.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add support for p2p(peripheral to peripheral) dma mode in SDMA
module.
1 Add p2p script membership in struct sdma_channel to support
  device to device tranfer.
2 P2P dma script need more configure information then memory to
  peripheral or peripheral to memory script. we configure these
  information into watermark_level.

Signed-off-by: Chen Liangjun &lt;b36089@freescale.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ENGR00177046: Add the platform dependency for PXP in Kconfig</title>
<updated>2012-03-19T01:57:27+00:00</updated>
<author>
<name>Robby Cai</name>
<email>R63905@freescale.com</email>
</author>
<published>2012-03-16T03:40:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=37ce829985b338d3bd31a641f8d9242a1ce4a354'/>
<id>37ce829985b338d3bd31a641f8d9242a1ce4a354</id>
<content type='text'>
If there's no dependency, build will be broken when do
`make ARCH=arm CROSS_COMPILE=&lt;cross-compiler path&gt; allmodconfig'
`make'
because PXP module will be turned on. This patch fixed it.

Signed-off-by: Robby Cai &lt;R63905@freescale.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If there's no dependency, build will be broken when do
`make ARCH=arm CROSS_COMPILE=&lt;cross-compiler path&gt; allmodconfig'
`make'
because PXP module will be turned on. This patch fixed it.

Signed-off-by: Robby Cai &lt;R63905@freescale.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ENGR00174299-1: driver part: Add ePxP v2 DMAENGINE driver</title>
<updated>2012-02-14T15:32:27+00:00</updated>
<author>
<name>Robby Cai</name>
<email>R63905@freescale.com</email>
</author>
<published>2012-02-13T06:36:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=322e0ae4bff56cbde45fea9ce0728018e9fa2292'/>
<id>322e0ae4bff56cbde45fea9ce0728018e9fa2292</id>
<content type='text'>
add ePxP v2 DMAENGINE driver

Signed-off-by: Robby Cai &lt;R63905@freescale.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
add ePxP v2 DMAENGINE driver

Signed-off-by: Robby Cai &lt;R63905@freescale.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ENGR00173731-6 MX6Q/DMA : enable the mxs-dma for mx6q</title>
<updated>2012-02-07T08:13:07+00:00</updated>
<author>
<name>Huang Shijie</name>
<email>b32955@freescale.com</email>
</author>
<published>2012-02-01T08:14:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=c6b68823da6a0598c4ea8727623a84c4f93b9f0a'/>
<id>c6b68823da6a0598c4ea8727623a84c4f93b9f0a</id>
<content type='text'>
enable the mxs-dma for mx6q.

Signed-off-by: Huang Shijie &lt;b32955@freescale.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
enable the mxs-dma for mx6q.

Signed-off-by: Huang Shijie &lt;b32955@freescale.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ENGR00173731-3 mxs-dma : rewrite the last parameter of mxs_dma_prep_slave_sg()</title>
<updated>2012-02-07T08:13:06+00:00</updated>
<author>
<name>Huang Shijie</name>
<email>b32955@freescale.com</email>
</author>
<published>2012-01-18T02:51:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=1d25b364131f8208e34b5dcb38e44ed02962a16b'/>
<id>1d25b364131f8208e34b5dcb38e44ed02962a16b</id>
<content type='text'>
[1] Background :
    The GPMI does ECC read page operation with a DMA chain consist of three DMA
    Command Structures. The middle one of the chain is used to enable the BCH,
    and read out the NAND page.

    The WAIT4END(wait for command end) is a comunication signal between
    the GPMI and MXS-DMA.

[2] The current DMA code sets the WAIT4END bit at the last one, such as:

    +-----+               +-----+                      +-----+
    | cmd | ------------&gt; | cmd | ------------------&gt;  | cmd |
    +-----+               +-----+                      +-----+
                                                          ^
                                                          |
                                                          |
                                                     set WAIT4END here

    This chain works fine in the mx23/mx28.

[3] But in the new GPMI version (used in MX50/MX60), the WAIT4END bit should
    be set not only at the last DMA Command Structure,
    but also at the middle one, such as:

    +-----+               +-----+                      +-----+
    | cmd | ------------&gt; | cmd | ------------------&gt;  | cmd |
    +-----+               +-----+                      +-----+
                             ^                            ^
                             |                            |
                             |                            |
                        set WAIT4END here too        set WAIT4END here

    If we do not set WAIT4END, the BCH maybe stalls in "ECC reading page" state.
    In the next ECC write page operation, a DMA-timeout occurs.
    This has been catched in the MX6Q board.

[4] In order to fix the bug, rewrite the last parameter of
    mxs_dma_prep_slave_sg(), and use the dma_ctrl_flags:
    ---------------------------------------------------------
      DMA_PREP_INTERRUPT : append a new DMA Command Structrue.
      DMA_CTRL_ACK       : set the WAIT4END bit for this DMA Command Structure.
    ---------------------------------------------------------

[5] changes to the relative drivers:
    For gpmi-nand driver: use the new flags.

Signed-off-by: Huang Shijie &lt;b32955@freescale.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[1] Background :
    The GPMI does ECC read page operation with a DMA chain consist of three DMA
    Command Structures. The middle one of the chain is used to enable the BCH,
    and read out the NAND page.

    The WAIT4END(wait for command end) is a comunication signal between
    the GPMI and MXS-DMA.

[2] The current DMA code sets the WAIT4END bit at the last one, such as:

    +-----+               +-----+                      +-----+
    | cmd | ------------&gt; | cmd | ------------------&gt;  | cmd |
    +-----+               +-----+                      +-----+
                                                          ^
                                                          |
                                                          |
                                                     set WAIT4END here

    This chain works fine in the mx23/mx28.

[3] But in the new GPMI version (used in MX50/MX60), the WAIT4END bit should
    be set not only at the last DMA Command Structure,
    but also at the middle one, such as:

    +-----+               +-----+                      +-----+
    | cmd | ------------&gt; | cmd | ------------------&gt;  | cmd |
    +-----+               +-----+                      +-----+
                             ^                            ^
                             |                            |
                             |                            |
                        set WAIT4END here too        set WAIT4END here

    If we do not set WAIT4END, the BCH maybe stalls in "ECC reading page" state.
    In the next ECC write page operation, a DMA-timeout occurs.
    This has been catched in the MX6Q board.

[4] In order to fix the bug, rewrite the last parameter of
    mxs_dma_prep_slave_sg(), and use the dma_ctrl_flags:
    ---------------------------------------------------------
      DMA_PREP_INTERRUPT : append a new DMA Command Structrue.
      DMA_CTRL_ACK       : set the WAIT4END bit for this DMA Command Structure.
    ---------------------------------------------------------

[5] changes to the relative drivers:
    For gpmi-nand driver: use the new flags.

Signed-off-by: Huang Shijie &lt;b32955@freescale.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ENGR00173731-2 mxs-dma : use the new mxs-dma.h</title>
<updated>2012-02-07T08:13:06+00:00</updated>
<author>
<name>Huang Shijie</name>
<email>b32955@freescale.com</email>
</author>
<published>2012-02-01T07:26:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=85d9a42075c9a9b05a5c65c8433d3b3b6757bb01'/>
<id>85d9a42075c9a9b05a5c65c8433d3b3b6757bb01</id>
<content type='text'>
use the new header : mxs-dma.h.

Signed-off-by: Huang Shijie &lt;b32955@freescale.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
use the new header : mxs-dma.h.

Signed-off-by: Huang Shijie &lt;b32955@freescale.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>dma: mxs-dma: convert to clk_prepare/clk_unprepare</title>
<updated>2012-01-31T07:30:47+00:00</updated>
<author>
<name>Shawn Guo</name>
<email>shawn.guo@linaro.org</email>
</author>
<published>2011-12-20T05:54:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=35b7bc8417c8a1bc6ed8e7bad2c1ea7607fc89b0'/>
<id>35b7bc8417c8a1bc6ed8e7bad2c1ea7607fc89b0</id>
<content type='text'>
The patch converts mxs-dma driver to clk_prepare/clk_unprepare by
using helper functions clk_prepare_enable/clk_disable_unprepare.

Signed-off-by: Shawn Guo &lt;shawn.guo@linaro.org&gt;
Acked-by: Marek Vasut &lt;marek.vasut@gmail.com&gt;
Acked-by: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The patch converts mxs-dma driver to clk_prepare/clk_unprepare by
using helper functions clk_prepare_enable/clk_disable_unprepare.

Signed-off-by: Shawn Guo &lt;shawn.guo@linaro.org&gt;
Acked-by: Marek Vasut &lt;marek.vasut@gmail.com&gt;
Acked-by: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>dma: mxs-dma: Don't use CLKGATE bits in CTRL0 to disable DMA channels</title>
<updated>2012-01-31T07:20:17+00:00</updated>
<author>
<name>Lothar Waßmann</name>
<email>LW@KARO-electronics.de</email>
</author>
<published>2011-12-08T08:15:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=578053916236e1fa1b74f3f79ea16b5144800488'/>
<id>578053916236e1fa1b74f3f79ea16b5144800488</id>
<content type='text'>
This is how the original Freescale code (unintentionally) worked,
because the code path which would have asserted the CLKGATE bit was
never actually reached in their code.
This fixes the nefarious "DMA timout" bug when multiple DMA channels
(e.g. GPMI NAND and MMC) are used at the same time.
If a better fix for this problem should be found, the clkgate handling
could be reinstated.
See http://lists.infradead.org/pipermail/linux-arm-kernel/2011-September/065228.html

Also reverse the order of mxs_dma_disable_chan() and
mxs_dma_reset_chan() in mxs_dma_control() because mxs_dma_reset_chan()
can only work when the DMA channel is enabled.

Signed-off-by: Lothar Waßmann &lt;LW@KARO-electronics.de&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is how the original Freescale code (unintentionally) worked,
because the code path which would have asserted the CLKGATE bit was
never actually reached in their code.
This fixes the nefarious "DMA timout" bug when multiple DMA channels
(e.g. GPMI NAND and MMC) are used at the same time.
If a better fix for this problem should be found, the clkgate handling
could be reinstated.
See http://lists.infradead.org/pipermail/linux-arm-kernel/2011-September/065228.html

Also reverse the order of mxs_dma_disable_chan() and
mxs_dma_reset_chan() in mxs_dma_control() because mxs_dma_reset_chan()
can only work when the DMA channel is enabled.

Signed-off-by: Lothar Waßmann &lt;LW@KARO-electronics.de&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>dma: mxs-dma: make mxs_dma_prep_slave_sg() multi user safe</title>
<updated>2012-01-31T07:19:51+00:00</updated>
<author>
<name>Lothar Waßmann</name>
<email>LW@KARO-electronics.de</email>
</author>
<published>2011-12-08T08:15:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=c4db2348d118d97205471c3aabe23146115c612c'/>
<id>c4db2348d118d97205471c3aabe23146115c612c</id>
<content type='text'>
Using a static variable for counting the number of CCWs attached to
a DMA channel when appending a new descriptor is not multi user safe.

Signed-off-by: Lothar Waßmann &lt;LW@KARO-electronics.de&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Using a static variable for counting the number of CCWs attached to
a DMA channel when appending a new descriptor is not multi user safe.

Signed-off-by: Lothar Waßmann &lt;LW@KARO-electronics.de&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>dma: mxs-dma: Always leave mxs_dma_init() with the clock disabled.</title>
<updated>2012-01-31T07:19:30+00:00</updated>
<author>
<name>Lothar Waßmann</name>
<email>LW@KARO-electronics.de</email>
</author>
<published>2011-12-08T08:15:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=0a42b8a447c7e2a4562d0e63b7d9297e8262f7bd'/>
<id>0a42b8a447c7e2a4562d0e63b7d9297e8262f7bd</id>
<content type='text'>
There is no need to have the clock enabled all the time the driver is
loaded.
It will be enabled anyway in mxs_dma_alloc_chan_resources() when a
channel is actually going to be used.

Signed-off-by: Lothar Waßmann &lt;LW@KARO-electronics.de&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There is no need to have the clock enabled all the time the driver is
loaded.
It will be enabled anyway in mxs_dma_alloc_chan_resources() when a
channel is actually going to be used.

Signed-off-by: Lothar Waßmann &lt;LW@KARO-electronics.de&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
