<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers/dma, branch v3.0.29</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>pch_dma: Support new device LAPIS Semiconductor ML7831 IOH</title>
<updated>2012-04-22T23:21:44+00:00</updated>
<author>
<name>Tomoya MORINAGA</name>
<email>tomoya.rohm@gmail.com</email>
</author>
<published>2011-11-17T07:14:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=127f90d6ff47e9095261f442d1ad511930cd7fd4'/>
<id>127f90d6ff47e9095261f442d1ad511930cd7fd4</id>
<content type='text'>
commit ca7fe2db892dcf91b2c72ee352eda4ff867903a7 upstream.

ML7831 is companion chip for Intel Atom E6xx series.

Signed-off-by: Tomoya MORINAGA &lt;tomoya.rohm@gmail.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit ca7fe2db892dcf91b2c72ee352eda4ff867903a7 upstream.

ML7831 is companion chip for Intel Atom E6xx series.

Signed-off-by: Tomoya MORINAGA &lt;tomoya.rohm@gmail.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>pch_dma: Fix suspend issue</title>
<updated>2012-04-22T23:21:44+00:00</updated>
<author>
<name>Tomoya MORINAGA</name>
<email>tomoya-linux@dsn.lapis-semi.com</email>
</author>
<published>2011-10-11T12:43:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=5e051465ef7ef611bcf6cb83d4dd85483417276f'/>
<id>5e051465ef7ef611bcf6cb83d4dd85483417276f</id>
<content type='text'>
commit c43f1508686e8e4746012bf87995085eeb0f5307 upstream.

Currently, executing suspend/hibernation,
memory access violation occurs.

In pch_dma_save_regs() called by suspend(),
you can see the following code.

static void pch_dma_save_regs(struct pch_dma *pd)
{
snip...
        list_for_each_entry_safe(chan, _c, &amp;pd-&gt;dma.channels, device_node) {
                pd_chan = to_pd_chan(chan);

                pd-&gt;ch_regs[i].dev_addr = channel_readl(pd_chan, DEV_ADDR);
                pd-&gt;ch_regs[i].mem_addr = channel_readl(pd_chan, MEM_ADDR);
                pd-&gt;ch_regs[i].size = channel_readl(pd_chan, SIZE);
                pd-&gt;ch_regs[i].next = channel_readl(pd_chan, NEXT);

                i++;
        }
}

Max loop count is 12 defined at pci_table.
So, this caused memory access violation.

This patch fixes the issue
 - Modify array size (MAX_CHAN_NR)

Signed-off-by: Tomoya MORINAGA &lt;tomoya-linux@dsn.lapis-semi.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
Signed-off-by: Tomoya MORINAGA &lt;tomoya.rohm@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit c43f1508686e8e4746012bf87995085eeb0f5307 upstream.

Currently, executing suspend/hibernation,
memory access violation occurs.

In pch_dma_save_regs() called by suspend(),
you can see the following code.

static void pch_dma_save_regs(struct pch_dma *pd)
{
snip...
        list_for_each_entry_safe(chan, _c, &amp;pd-&gt;dma.channels, device_node) {
                pd_chan = to_pd_chan(chan);

                pd-&gt;ch_regs[i].dev_addr = channel_readl(pd_chan, DEV_ADDR);
                pd-&gt;ch_regs[i].mem_addr = channel_readl(pd_chan, MEM_ADDR);
                pd-&gt;ch_regs[i].size = channel_readl(pd_chan, SIZE);
                pd-&gt;ch_regs[i].next = channel_readl(pd_chan, NEXT);

                i++;
        }
}

Max loop count is 12 defined at pci_table.
So, this caused memory access violation.

This patch fixes the issue
 - Modify array size (MAX_CHAN_NR)

Signed-off-by: Tomoya MORINAGA &lt;tomoya-linux@dsn.lapis-semi.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
Signed-off-by: Tomoya MORINAGA &lt;tomoya.rohm@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>pch_dma: Fix CTL register access issue</title>
<updated>2012-04-22T23:21:44+00:00</updated>
<author>
<name>Tomoya MORINAGA</name>
<email>tomoya-linux@dsn.okisemi.com</email>
</author>
<published>2011-07-14T00:52:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=c9f52d613590b10630ab8bb222ae05c551389425'/>
<id>c9f52d613590b10630ab8bb222ae05c551389425</id>
<content type='text'>
commit 0b052f4a088ddc47a5da23dd733522241314cfb4 upstream.

Currently, Mode-Control register is accessed by read-modify-write.

According to DMA hardware specifications datasheet, prohibits this method.
Because this register resets to 0 by DMA HW after DMA transfer completes.
Thus, current read-modify-write processing can cause unexpected behavior.

The datasheet says in case of writing Mode-Control register, set the value for only target channel, the others must set '11b'.
e.g. Set DMA0=01b  DMA11=10b
CTL0=33333331h
CTL2=00002333h

NOTE:
CTL0 includes DMA0~7 Mode-Control register.
CTL2 includes DMA8~11 Mode-Control register.

This patch modifies the issue.

Signed-off-by: Tomoya MORINAGA &lt;tomoya-linux@dsn.okisemi.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Signed-off-by: Tomoya MORINAGA &lt;tomoya.rohm@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 0b052f4a088ddc47a5da23dd733522241314cfb4 upstream.

Currently, Mode-Control register is accessed by read-modify-write.

According to DMA hardware specifications datasheet, prohibits this method.
Because this register resets to 0 by DMA HW after DMA transfer completes.
Thus, current read-modify-write processing can cause unexpected behavior.

The datasheet says in case of writing Mode-Control register, set the value for only target channel, the others must set '11b'.
e.g. Set DMA0=01b  DMA11=10b
CTL0=33333331h
CTL2=00002333h

NOTE:
CTL0 includes DMA0~7 Mode-Control register.
CTL2 includes DMA8~11 Mode-Control register.

This patch modifies the issue.

Signed-off-by: Tomoya MORINAGA &lt;tomoya-linux@dsn.okisemi.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Signed-off-by: Tomoya MORINAGA &lt;tomoya.rohm@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>pch_dma: Fix channel locking</title>
<updated>2012-04-22T23:21:44+00:00</updated>
<author>
<name>Alexander Stein</name>
<email>alexander.stein@systec-electronic.com</email>
</author>
<published>2011-06-22T15:05:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=724d7ad550fb6ed11ce40425eb0206f90faf665a'/>
<id>724d7ad550fb6ed11ce40425eb0206f90faf665a</id>
<content type='text'>
commit 70f18915846f092e0e1c988f1726a532fa3ab3a1 upstream.

Fix for the following INFO message

=================================
[ INFO: inconsistent lock state ]
2.6.39+ #89
---------------------------------
inconsistent {HARDIRQ-ON-W} -&gt; {IN-HARDIRQ-W} usage.
rs232/822 [HC1[1]:SC0[0]:HE0:SE1] takes:
 (&amp;(&amp;pd_chan-&gt;lock)-&gt;rlock){?.....}, at: [&lt;c123b9a1&gt;] pdc_desc_get+0x16/0xab
{HARDIRQ-ON-W} state was registered at:
  [&lt;c104fe28&gt;] mark_irqflags+0xbd/0x11a
  [&lt;c1050386&gt;] __lock_acquire+0x501/0x6bb
  [&lt;c1050945&gt;] lock_acquire+0x63/0x7b
  [&lt;c131c51d&gt;] _raw_spin_lock_bh+0x43/0x51
  [&lt;c123bee4&gt;] pd_alloc_chan_resources+0x92/0x11e
  [&lt;c123ad62&gt;] dma_chan_get+0x9b/0x107
  [&lt;c123b2d1&gt;] __dma_request_channel+0x61/0xdc
  [&lt;c11ba24b&gt;] pch_request_dma+0x61/0x19e
  [&lt;c11bb3b8&gt;] pch_uart_startup+0x16a/0x1a2
  [&lt;c11b8446&gt;] uart_startup+0x87/0x147
  [&lt;c11b9183&gt;] uart_open+0x117/0x13e
  [&lt;c11a5c7d&gt;] tty_open+0x23c/0x34c
  [&lt;c1097705&gt;] chrdev_open+0x140/0x15f
  [&lt;c10930a6&gt;] __dentry_open.clone.14+0x14a/0x22b
  [&lt;c1093dfb&gt;] nameidata_to_filp+0x36/0x40
  [&lt;c109f28b&gt;] do_last+0x513/0x635
  [&lt;c109f4af&gt;] path_openat+0x9c/0x2aa
  [&lt;c109f6e4&gt;] do_filp_open+0x27/0x69
  [&lt;c1093f02&gt;] do_sys_open+0xfd/0x184
  [&lt;c1093fad&gt;] sys_open+0x24/0x2a
  [&lt;c131d58c&gt;] sysenter_do_call+0x12/0x32
irq event stamp: 2522
hardirqs last  enabled at (2521): [&lt;c131ca3b&gt;] _raw_spin_unlock_irqrestore+0x36/0x52
hardirqs last disabled at (2522): [&lt;c131db27&gt;] common_interrupt+0x27/0x34
softirqs last  enabled at (2354): [&lt;c102fa11&gt;] __do_softirq+0x10a/0x11a
softirqs last disabled at (2299): [&lt;c10041a4&gt;] do_softirq+0x57/0xa4

other info that might help us debug this:
2 locks held by rs232/822:
 #0:  (&amp;tty-&gt;atomic_write_lock){+.+.+.}, at: [&lt;c11a4b7a&gt;] tty_write_lock+0x14/0x3c
 #1:  (&amp;port_lock_key){-.....}, at: [&lt;c11bad72&gt;] pch_uart_interrupt+0x17/0x1e9

stack backtrace:
Pid: 822, comm: rs232 Not tainted 2.6.39+ #89
Call Trace:
 [&lt;c1319f90&gt;] ? printk+0x19/0x1b
 [&lt;c104f893&gt;] print_usage_bug+0x184/0x18f
 [&lt;c104e5b1&gt;] ? print_irq_inversion_bug+0x10e/0x10e
 [&lt;c104f943&gt;] mark_lock_irq+0xa5/0x1f6
 [&lt;c104fc9c&gt;] mark_lock+0x208/0x2d7
 [&lt;c104fdc0&gt;] mark_irqflags+0x55/0x11a
 [&lt;c1050386&gt;] __lock_acquire+0x501/0x6bb
 [&lt;c10042ee&gt;] ? dump_trace+0x92/0xb6
 [&lt;c1050945&gt;] lock_acquire+0x63/0x7b
 [&lt;c123b9a1&gt;] ? pdc_desc_get+0x16/0xab
 [&lt;c131c2d0&gt;] _raw_spin_lock+0x3e/0x4c
 [&lt;c123b9a1&gt;] ? pdc_desc_get+0x16/0xab
 [&lt;c123b9a1&gt;] pdc_desc_get+0x16/0xab
 [&lt;c10504d8&gt;] ? __lock_acquire+0x653/0x6bb
 [&lt;c123bb2c&gt;] pd_prep_slave_sg+0x7c/0x1cb
 [&lt;c1006c3f&gt;] ? nommu_map_sg+0x6e/0x81
 [&lt;c11bace6&gt;] dma_handle_tx+0x2cf/0x344
 [&lt;c11bad72&gt;] ? pch_uart_interrupt+0x17/0x1e9
 [&lt;c11baebb&gt;] pch_uart_interrupt+0x160/0x1e9
 [&lt;c10642fb&gt;] handle_irq_event_percpu+0x25/0x127
 [&lt;c1064429&gt;] handle_irq_event+0x2c/0x43
 [&lt;c1065e0d&gt;] ? handle_fasteoi_irq+0x84/0x84
 [&lt;c1065eb9&gt;] handle_edge_irq+0xac/0xce
 &lt;IRQ&gt;  [&lt;c1003ecb&gt;] ? do_IRQ+0x38/0x9d
 [&lt;c131db2e&gt;] ? common_interrupt+0x2e/0x34
 [&lt;c105007b&gt;] ? __lock_acquire+0x1f6/0x6bb
 [&lt;c131ca3d&gt;] ? _raw_spin_unlock_irqrestore+0x38/0x52
 [&lt;c11b798b&gt;] ? uart_start+0x2d/0x32
 [&lt;c11b7998&gt;] ? uart_flush_chars+0x8/0xa
 [&lt;c11a7962&gt;] ? n_tty_write+0x12c/0x1c6
 [&lt;c1027a73&gt;] ? try_to_wake_up+0x251/0x251
 [&lt;c11a4d0b&gt;] ? tty_write+0x169/0x1dc
 [&lt;c11a7836&gt;] ? n_tty_ioctl+0xb7/0xb7
 [&lt;c1094841&gt;] ? vfs_write+0x91/0x10d
 [&lt;c11a4ba2&gt;] ? tty_write_lock+0x3c/0x3c
 [&lt;c1094a69&gt;] ? sys_write+0x3e/0x63
 [&lt;c131d58c&gt;] ? sysenter_do_call+0x12/0x32

Signed-off-by: Alexander Stein &lt;alexander.stein@systec-electronic.com&gt;
Tested-by: Tomoya MORINAGA &lt;tomoya-linux@dsn.okisemi.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Signed-off-by: Tomoya MORINAGA &lt;tomoya.rohm@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 70f18915846f092e0e1c988f1726a532fa3ab3a1 upstream.

Fix for the following INFO message

=================================
[ INFO: inconsistent lock state ]
2.6.39+ #89
---------------------------------
inconsistent {HARDIRQ-ON-W} -&gt; {IN-HARDIRQ-W} usage.
rs232/822 [HC1[1]:SC0[0]:HE0:SE1] takes:
 (&amp;(&amp;pd_chan-&gt;lock)-&gt;rlock){?.....}, at: [&lt;c123b9a1&gt;] pdc_desc_get+0x16/0xab
{HARDIRQ-ON-W} state was registered at:
  [&lt;c104fe28&gt;] mark_irqflags+0xbd/0x11a
  [&lt;c1050386&gt;] __lock_acquire+0x501/0x6bb
  [&lt;c1050945&gt;] lock_acquire+0x63/0x7b
  [&lt;c131c51d&gt;] _raw_spin_lock_bh+0x43/0x51
  [&lt;c123bee4&gt;] pd_alloc_chan_resources+0x92/0x11e
  [&lt;c123ad62&gt;] dma_chan_get+0x9b/0x107
  [&lt;c123b2d1&gt;] __dma_request_channel+0x61/0xdc
  [&lt;c11ba24b&gt;] pch_request_dma+0x61/0x19e
  [&lt;c11bb3b8&gt;] pch_uart_startup+0x16a/0x1a2
  [&lt;c11b8446&gt;] uart_startup+0x87/0x147
  [&lt;c11b9183&gt;] uart_open+0x117/0x13e
  [&lt;c11a5c7d&gt;] tty_open+0x23c/0x34c
  [&lt;c1097705&gt;] chrdev_open+0x140/0x15f
  [&lt;c10930a6&gt;] __dentry_open.clone.14+0x14a/0x22b
  [&lt;c1093dfb&gt;] nameidata_to_filp+0x36/0x40
  [&lt;c109f28b&gt;] do_last+0x513/0x635
  [&lt;c109f4af&gt;] path_openat+0x9c/0x2aa
  [&lt;c109f6e4&gt;] do_filp_open+0x27/0x69
  [&lt;c1093f02&gt;] do_sys_open+0xfd/0x184
  [&lt;c1093fad&gt;] sys_open+0x24/0x2a
  [&lt;c131d58c&gt;] sysenter_do_call+0x12/0x32
irq event stamp: 2522
hardirqs last  enabled at (2521): [&lt;c131ca3b&gt;] _raw_spin_unlock_irqrestore+0x36/0x52
hardirqs last disabled at (2522): [&lt;c131db27&gt;] common_interrupt+0x27/0x34
softirqs last  enabled at (2354): [&lt;c102fa11&gt;] __do_softirq+0x10a/0x11a
softirqs last disabled at (2299): [&lt;c10041a4&gt;] do_softirq+0x57/0xa4

other info that might help us debug this:
2 locks held by rs232/822:
 #0:  (&amp;tty-&gt;atomic_write_lock){+.+.+.}, at: [&lt;c11a4b7a&gt;] tty_write_lock+0x14/0x3c
 #1:  (&amp;port_lock_key){-.....}, at: [&lt;c11bad72&gt;] pch_uart_interrupt+0x17/0x1e9

stack backtrace:
Pid: 822, comm: rs232 Not tainted 2.6.39+ #89
Call Trace:
 [&lt;c1319f90&gt;] ? printk+0x19/0x1b
 [&lt;c104f893&gt;] print_usage_bug+0x184/0x18f
 [&lt;c104e5b1&gt;] ? print_irq_inversion_bug+0x10e/0x10e
 [&lt;c104f943&gt;] mark_lock_irq+0xa5/0x1f6
 [&lt;c104fc9c&gt;] mark_lock+0x208/0x2d7
 [&lt;c104fdc0&gt;] mark_irqflags+0x55/0x11a
 [&lt;c1050386&gt;] __lock_acquire+0x501/0x6bb
 [&lt;c10042ee&gt;] ? dump_trace+0x92/0xb6
 [&lt;c1050945&gt;] lock_acquire+0x63/0x7b
 [&lt;c123b9a1&gt;] ? pdc_desc_get+0x16/0xab
 [&lt;c131c2d0&gt;] _raw_spin_lock+0x3e/0x4c
 [&lt;c123b9a1&gt;] ? pdc_desc_get+0x16/0xab
 [&lt;c123b9a1&gt;] pdc_desc_get+0x16/0xab
 [&lt;c10504d8&gt;] ? __lock_acquire+0x653/0x6bb
 [&lt;c123bb2c&gt;] pd_prep_slave_sg+0x7c/0x1cb
 [&lt;c1006c3f&gt;] ? nommu_map_sg+0x6e/0x81
 [&lt;c11bace6&gt;] dma_handle_tx+0x2cf/0x344
 [&lt;c11bad72&gt;] ? pch_uart_interrupt+0x17/0x1e9
 [&lt;c11baebb&gt;] pch_uart_interrupt+0x160/0x1e9
 [&lt;c10642fb&gt;] handle_irq_event_percpu+0x25/0x127
 [&lt;c1064429&gt;] handle_irq_event+0x2c/0x43
 [&lt;c1065e0d&gt;] ? handle_fasteoi_irq+0x84/0x84
 [&lt;c1065eb9&gt;] handle_edge_irq+0xac/0xce
 &lt;IRQ&gt;  [&lt;c1003ecb&gt;] ? do_IRQ+0x38/0x9d
 [&lt;c131db2e&gt;] ? common_interrupt+0x2e/0x34
 [&lt;c105007b&gt;] ? __lock_acquire+0x1f6/0x6bb
 [&lt;c131ca3d&gt;] ? _raw_spin_unlock_irqrestore+0x38/0x52
 [&lt;c11b798b&gt;] ? uart_start+0x2d/0x32
 [&lt;c11b7998&gt;] ? uart_flush_chars+0x8/0xa
 [&lt;c11a7962&gt;] ? n_tty_write+0x12c/0x1c6
 [&lt;c1027a73&gt;] ? try_to_wake_up+0x251/0x251
 [&lt;c11a4d0b&gt;] ? tty_write+0x169/0x1dc
 [&lt;c11a7836&gt;] ? n_tty_ioctl+0xb7/0xb7
 [&lt;c1094841&gt;] ? vfs_write+0x91/0x10d
 [&lt;c11a4ba2&gt;] ? tty_write_lock+0x3c/0x3c
 [&lt;c1094a69&gt;] ? sys_write+0x3e/0x63
 [&lt;c131d58c&gt;] ? sysenter_do_call+0x12/0x32

Signed-off-by: Alexander Stein &lt;alexander.stein@systec-electronic.com&gt;
Tested-by: Tomoya MORINAGA &lt;tomoya-linux@dsn.okisemi.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Signed-off-by: Tomoya MORINAGA &lt;tomoya.rohm@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>pch_dma: fix DMA issue(ch8-ch11)</title>
<updated>2012-04-22T23:21:44+00:00</updated>
<author>
<name>Tomoya MORINAGA</name>
<email>tomoya-linux@dsn.okisemi.com</email>
</author>
<published>2011-05-31T01:34:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=e65f3a58ad648c5b33c97ef5861b590d0dd8f74c'/>
<id>e65f3a58ad648c5b33c97ef5861b590d0dd8f74c</id>
<content type='text'>
commit c3d4913cd4cd469cbf29d411293e937729e83f3a upstream.

ISSUE: In case PCH_DMA with I2S communications with ch8~ch11, sometimes I2S data
is not send correctly.
CAUSE: The following patch I submitted before was not enough modification for
supporting DMA ch8~ch11. The modification for status register of ch8~11 was not
enough.

pch_dma: Support I2S for ML7213 IOH
author	Tomoya MORINAGA &lt;tomoya-linux@dsn.okisemi.com&gt;
	Mon, 9 May 2011 07:09:38 +0000 (16:09 +0900)
committer	Vinod Koul &lt;vinod.koul@intel.com&gt;
	Mon, 9 May 2011 11:42:23 +0000 (16:42 +0530)
commit	194f5f2706c7472f9c6bb2d17fa788993606581f
tree	c9d4903ea02b18939a4f390956a48be1a3734517
parent	60092d0bde4c8741198da4a69b693d3709385bf1

This patch fixes the issue.
We can confirm PCH_DMA with I2S communications with ch8~ch11 works well.

Signed-off-by: Tomoya MORINAGA &lt;tomoya-linux@dsn.okisemi.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Signed-off-by: Tomoya MORINAGA &lt;tomoya.rohm@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit c3d4913cd4cd469cbf29d411293e937729e83f3a upstream.

ISSUE: In case PCH_DMA with I2S communications with ch8~ch11, sometimes I2S data
is not send correctly.
CAUSE: The following patch I submitted before was not enough modification for
supporting DMA ch8~ch11. The modification for status register of ch8~11 was not
enough.

pch_dma: Support I2S for ML7213 IOH
author	Tomoya MORINAGA &lt;tomoya-linux@dsn.okisemi.com&gt;
	Mon, 9 May 2011 07:09:38 +0000 (16:09 +0900)
committer	Vinod Koul &lt;vinod.koul@intel.com&gt;
	Mon, 9 May 2011 11:42:23 +0000 (16:42 +0530)
commit	194f5f2706c7472f9c6bb2d17fa788993606581f
tree	c9d4903ea02b18939a4f390956a48be1a3734517
parent	60092d0bde4c8741198da4a69b693d3709385bf1

This patch fixes the issue.
We can confirm PCH_DMA with I2S communications with ch8~ch11 works well.

Signed-off-by: Tomoya MORINAGA &lt;tomoya-linux@dsn.okisemi.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Signed-off-by: Tomoya MORINAGA &lt;tomoya.rohm@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>at_hdmac: bugfix for enabling channel irq</title>
<updated>2012-02-13T19:06:07+00:00</updated>
<author>
<name>Nikolaus Voss</name>
<email>n.voss@weinmann.de</email>
</author>
<published>2012-01-17T09:28:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=73632d80356dcadfcacc8e20a319850b112abb9b'/>
<id>73632d80356dcadfcacc8e20a319850b112abb9b</id>
<content type='text'>
commit bda3a47c886664e86ee14eb79e9072b9e341f575 upstream.

commit 463894705e4089d0ff69e7d877312d496ac70e5b deleted redundant
chan_id and chancnt initialization in dma drivers as this is done
in dma_async_device_register().

However, atc_enable_irq() relied on chan_id set before registering
the device, what left only channel 0 functional for this driver.

This patch introduces atc_enable/disable_chan_irq() as a variant
of atc_enable/disable_irq() with the channel as explicit argument.

Signed-off-by: Nikolaus Voss &lt;n.voss@weinmann.de&gt;
Signed-off-by: Nicolas Ferre &lt;nicolas.ferre@atmel.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit bda3a47c886664e86ee14eb79e9072b9e341f575 upstream.

commit 463894705e4089d0ff69e7d877312d496ac70e5b deleted redundant
chan_id and chancnt initialization in dma drivers as this is done
in dma_async_device_register().

However, atc_enable_irq() relied on chan_id set before registering
the device, what left only channel 0 functional for this driver.

This patch introduces atc_enable/disable_chan_irq() as a variant
of atc_enable/disable_irq() with the channel as explicit argument.

Signed-off-by: Nikolaus Voss &lt;n.voss@weinmann.de&gt;
Signed-off-by: Nicolas Ferre &lt;nicolas.ferre@atmel.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>dmaengine: shdma: SH_DMAC_MAX_CHANNELS message fix</title>
<updated>2011-06-14T06:03:07+00:00</updated>
<author>
<name>Magnus Damm</name>
<email>damm@opensource.se</email>
</author>
<published>2011-06-09T06:35:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=dcee0bb713d0ba0d32c5ce6fe0c5aa22e6fc274a'/>
<id>dcee0bb713d0ba0d32c5ce6fe0c5aa22e6fc274a</id>
<content type='text'>
Fix the recently added SH_DMAC_MAX_CHANNELS handling code in
300e5f9 dmaengine: shdma: Fix SH_DMAC_MAX_CHANNELS handling

Without this fix the shdma driver outputs silly messages in
case SH_DMAC_MAX_CHANNELS happens to match the platform data:

sh-dma-engine sh-dma-engine.0: Attempting to register 20 DMA channels when a max
imum of 20 are supported.

Signed-off-by: Magnus Damm &lt;damm@opensource.se&gt;
Signed-off-by: Paul Mundt &lt;lethal@linux-sh.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix the recently added SH_DMAC_MAX_CHANNELS handling code in
300e5f9 dmaengine: shdma: Fix SH_DMAC_MAX_CHANNELS handling

Without this fix the shdma driver outputs silly messages in
case SH_DMAC_MAX_CHANNELS happens to match the platform data:

sh-dma-engine sh-dma-engine.0: Attempting to register 20 DMA channels when a max
imum of 20 are supported.

Signed-off-by: Magnus Damm &lt;damm@opensource.se&gt;
Signed-off-by: Paul Mundt &lt;lethal@linux-sh.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>dmaengine: shdma: fix a regression: initialise DMA channels for memcpy</title>
<updated>2011-06-02T05:40:43+00:00</updated>
<author>
<name>Guennadi Liakhovetski</name>
<email>g.liakhovetski@gmx.de</email>
</author>
<published>2011-05-31T09:25:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=a1b2cc50679c1d2eed44e2885f6178ce907498b7'/>
<id>a1b2cc50679c1d2eed44e2885f6178ce907498b7</id>
<content type='text'>
A recent patch has introduced a regression, where repeating a memcpy
DMA test with shdma module unloading between them skips the DMA channel
configuration. Fix this regression by always configuring the channel
during its allocation.

Signed-off-by: Guennadi Liakhovetski &lt;g.liakhovetski@gmx.de&gt;
Signed-off-by: Paul Mundt &lt;lethal@linux-sh.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A recent patch has introduced a regression, where repeating a memcpy
DMA test with shdma module unloading between them skips the DMA channel
configuration. Fix this regression by always configuring the channel
during its allocation.

Signed-off-by: Guennadi Liakhovetski &lt;g.liakhovetski@gmx.de&gt;
Signed-off-by: Paul Mundt &lt;lethal@linux-sh.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>dmaengine: shdma: Fix up fallout from runtime PM changes.</title>
<updated>2011-05-31T06:53:03+00:00</updated>
<author>
<name>Paul Mundt</name>
<email>lethal@linux-sh.org</email>
</author>
<published>2011-05-31T06:53:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=5c2de44417523385010b529599a2b30f290831a3'/>
<id>5c2de44417523385010b529599a2b30f290831a3</id>
<content type='text'>
The runtime PM changes introduce sh_dmae_rst() wrapping via the
runtime_resume helper, depending on dev_get_drvdata() to fetch the
platform data needed for the DMAOR initialization default at a time
where drvdata hasn't yet been established by the probe path, resulting
in general probe misery:

        Unable to handle kernel NULL pointer dereference at virtual address 000000c4
        pc = 8025adee
        *pde = 00000000
        Oops: 0000 [#1]
        Modules linked in:

        Pid : 1, Comm:           swapper
        CPU : 0                  Not tainted  (3.0.0-rc1-00012-g9436b4a-dirty #1456)

        PC is at sh_dmae_rst+0x28/0x86
        PR is at sh_dmae_rst+0x22/0x86
        PC  : 8025adee SP  : 9e803d10 SR  : 400080f1 TEA : 000000c4
        R0  : 000000c4 R1  : 0000fff8 R2  : 00000000 R3  : 00000040
        R4  : 000000f0 R5  : 00000000 R6  : 00000000 R7  : 804f184c
        R8  : 00000000 R9  : 804dd0e8 R10 : 80283204 R11 : ffffffda
        R12 : 000000a0 R13 : 804dd18c R14 : 9e803d10
        MACH: 00000000 MACL: 00008f20 GBR : 00000000 PR  : 8025ade8

        Call trace:
        [&lt;8025ae70&gt;] sh_dmae_runtime_resume+0x24/0x34
        [&lt;80283238&gt;] pm_generic_runtime_resume+0x34/0x3c
        [&lt;80283370&gt;] rpm_callback+0x4a/0x7e
        [&lt;80283efc&gt;] rpm_resume+0x240/0x384
        [&lt;80283f54&gt;] rpm_resume+0x298/0x384
        [&lt;8028428c&gt;] __pm_runtime_resume+0x44/0x7c
        [&lt;8038a358&gt;] __ioremap_caller+0x0/0xec
        [&lt;80284296&gt;] __pm_runtime_resume+0x4e/0x7c
        [&lt;8038a358&gt;] __ioremap_caller+0x0/0xec
        [&lt;80666254&gt;] sh_dmae_probe+0x180/0x6a0
        [&lt;802803ae&gt;] platform_drv_probe+0x26/0x2e

Fix up the ordering accordingly.

Signed-off-by: Paul Mundt &lt;lethal@linux-sh.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The runtime PM changes introduce sh_dmae_rst() wrapping via the
runtime_resume helper, depending on dev_get_drvdata() to fetch the
platform data needed for the DMAOR initialization default at a time
where drvdata hasn't yet been established by the probe path, resulting
in general probe misery:

        Unable to handle kernel NULL pointer dereference at virtual address 000000c4
        pc = 8025adee
        *pde = 00000000
        Oops: 0000 [#1]
        Modules linked in:

        Pid : 1, Comm:           swapper
        CPU : 0                  Not tainted  (3.0.0-rc1-00012-g9436b4a-dirty #1456)

        PC is at sh_dmae_rst+0x28/0x86
        PR is at sh_dmae_rst+0x22/0x86
        PC  : 8025adee SP  : 9e803d10 SR  : 400080f1 TEA : 000000c4
        R0  : 000000c4 R1  : 0000fff8 R2  : 00000000 R3  : 00000040
        R4  : 000000f0 R5  : 00000000 R6  : 00000000 R7  : 804f184c
        R8  : 00000000 R9  : 804dd0e8 R10 : 80283204 R11 : ffffffda
        R12 : 000000a0 R13 : 804dd18c R14 : 9e803d10
        MACH: 00000000 MACL: 00008f20 GBR : 00000000 PR  : 8025ade8

        Call trace:
        [&lt;8025ae70&gt;] sh_dmae_runtime_resume+0x24/0x34
        [&lt;80283238&gt;] pm_generic_runtime_resume+0x34/0x3c
        [&lt;80283370&gt;] rpm_callback+0x4a/0x7e
        [&lt;80283efc&gt;] rpm_resume+0x240/0x384
        [&lt;80283f54&gt;] rpm_resume+0x298/0x384
        [&lt;8028428c&gt;] __pm_runtime_resume+0x44/0x7c
        [&lt;8038a358&gt;] __ioremap_caller+0x0/0xec
        [&lt;80284296&gt;] __pm_runtime_resume+0x4e/0x7c
        [&lt;8038a358&gt;] __ioremap_caller+0x0/0xec
        [&lt;80666254&gt;] sh_dmae_probe+0x180/0x6a0
        [&lt;802803ae&gt;] platform_drv_probe+0x26/0x2e

Fix up the ordering accordingly.

Signed-off-by: Paul Mundt &lt;lethal@linux-sh.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx</title>
<updated>2011-05-28T19:35:15+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2011-05-28T19:35:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=4cb865deec59ef31d966622d1ec87411ae32dfab'/>
<id>4cb865deec59ef31d966622d1ec87411ae32dfab</id>
<content type='text'>
* 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx: (33 commits)
  x86: poll waiting for I/OAT DMA channel status
  maintainers: add dma engine tree details
  dmaengine: add TODO items for future work on dma drivers
  dmaengine: Add API documentation for slave dma usage
  dmaengine/dw_dmac: Update maintainer-ship
  dmaengine: move link order
  dmaengine/dw_dmac: implement pause and resume in dwc_control
  dmaengine/dw_dmac: Replace spin_lock* with irqsave variants and enable submission from callback
  dmaengine/dw_dmac: Divide one sg to many desc, if sg len is greater than DWC_MAX_COUNT
  dmaengine/dw_dmac: set residue as total len in dwc_tx_status if status is !DMA_SUCCESS
  dmaengine/dw_dmac: don't call callback routine in case dmaengine_terminate_all() is called
  dmaengine: at_hdmac: pause: no need to wait for FIFO empty
  pch_dma: modify pci device table definition
  pch_dma: Support new device ML7223 IOH
  pch_dma: Support I2S for ML7213 IOH
  pch_dma: Fix DMA setting issue
  pch_dma: modify for checkpatch
  pch_dma: fix dma direction issue for ML7213 IOH video-in
  dmaengine: at_hdmac: use descriptor chaining help function
  dmaengine: at_hdmac: implement pause and resume in atc_control
  ...

Fix up trivial conflict in drivers/dma/dw_dmac.c
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx: (33 commits)
  x86: poll waiting for I/OAT DMA channel status
  maintainers: add dma engine tree details
  dmaengine: add TODO items for future work on dma drivers
  dmaengine: Add API documentation for slave dma usage
  dmaengine/dw_dmac: Update maintainer-ship
  dmaengine: move link order
  dmaengine/dw_dmac: implement pause and resume in dwc_control
  dmaengine/dw_dmac: Replace spin_lock* with irqsave variants and enable submission from callback
  dmaengine/dw_dmac: Divide one sg to many desc, if sg len is greater than DWC_MAX_COUNT
  dmaengine/dw_dmac: set residue as total len in dwc_tx_status if status is !DMA_SUCCESS
  dmaengine/dw_dmac: don't call callback routine in case dmaengine_terminate_all() is called
  dmaengine: at_hdmac: pause: no need to wait for FIFO empty
  pch_dma: modify pci device table definition
  pch_dma: Support new device ML7223 IOH
  pch_dma: Support I2S for ML7213 IOH
  pch_dma: Fix DMA setting issue
  pch_dma: modify for checkpatch
  pch_dma: fix dma direction issue for ML7213 IOH video-in
  dmaengine: at_hdmac: use descriptor chaining help function
  dmaengine: at_hdmac: implement pause and resume in atc_control
  ...

Fix up trivial conflict in drivers/dma/dw_dmac.c
</pre>
</div>
</content>
</entry>
</feed>
