<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/mmc/host/omap.c, branch linux-3.6.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.6.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.6.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2012-09-04T17:58:11Z</updated>
<entry>
<title>mmc: omap: fix broken PIO mode</title>
<updated>2012-09-04T17:58:11Z</updated>
<author>
<name>Paul Walmsley</name>
</author>
<published>2012-08-24T06:00:18Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=75b53aee2f4fe6375c6007226bf68d75b5c4a929'/>
<id>urn:sha1:75b53aee2f4fe6375c6007226bf68d75b5c4a929</id>
<content type='text'>
After commit 26b88520b80695a6fa5fd95b5d97c03f4daf87e0 ("mmc:
omap_hsmmc: remove private DMA API implementation"), the Nokia N800
here stopped booting:

[    2.086181] Waiting for root device /dev/mmcblk0p1...
[    2.324066] Unhandled fault: imprecise external abort (0x406) at 0x00000000
[    2.331451] Internal error: : 406 [#1] ARM
[    2.335784] Modules linked in:
[    2.339050] CPU: 0    Not tainted  (3.6.0-rc3 #60)
[    2.344146] PC is at default_idle+0x28/0x30
[    2.348602] LR is at trace_hardirqs_on_caller+0x15c/0x1b0

...

This turned out to be due to memory corruption caused by long-broken
PIO code in drivers/mmc/host/omap.c.  (Previously, this driver had
been using DMA; but the above commit caused the MMC driver to fall
back to PIO mode with an unmodified Kconfig.)

The PIO code, added with the rest of the driver in commit
730c9b7e6630f786fcec026fb11d2e6f2c90fdcb ("[MMC] Add OMAP MMC host
driver"), confused bytes with 16-bit words.  This bug caused memory
located after the PIO transfer buffer to be corrupted with transfers
larger than 32 bytes.  The driver also did not increment the buffer
pointer after the transfer occurred.  This bug resulted in data
corruption during any transfer larger than 64 bytes.

Signed-off-by: Paul Walmsley &lt;paul@pwsan.com&gt;
Reviewed-by: Felipe Balbi &lt;balbi@ti.com&gt;
Tested-by: Tony Lindgren &lt;tony@atomide.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</content>
</entry>
<entry>
<title>mmc: omap: remove private DMA API implementation</title>
<updated>2012-07-31T11:06:23Z</updated>
<author>
<name>Russell King</name>
</author>
<published>2012-04-21T21:41:10Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4e078fbd581a92fa26ba2def4ac8f2a633cdcb5b'/>
<id>urn:sha1:4e078fbd581a92fa26ba2def4ac8f2a633cdcb5b</id>
<content type='text'>
Remove the private DMA API implementation from omap, making it use
entirely the DMA engine API.

Tested-by: Tony Lindgren &lt;tony@atomide.com&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>mmc: omap: add DMA engine support</title>
<updated>2012-07-31T11:06:23Z</updated>
<author>
<name>Russell King</name>
</author>
<published>2012-04-21T21:35:42Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3451c06754b5777d227aa99f85c35bdfabac3ca0'/>
<id>urn:sha1:3451c06754b5777d227aa99f85c35bdfabac3ca0</id>
<content type='text'>
Add DMA engine support to the OMAP driver.  This supplements the
private DMA API implementation contained within this driver, and the
driver can be switched at build time between using DMA engine and the
private DMA API.

Tested-by: Tony Lindgren &lt;tony@atomide.com&gt;
Acked-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>mmc: omap: Fix broken reg_shift initialization</title>
<updated>2012-06-06T13:47:49Z</updated>
<author>
<name>Tony Lindgren</name>
</author>
<published>2012-06-06T13:47:49Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ebbe6f889f36d35f4d1757ba2ecc0af6150bf12b'/>
<id>urn:sha1:ebbe6f889f36d35f4d1757ba2ecc0af6150bf12b</id>
<content type='text'>
Commit fa550189 (mmc: core: Prevent eMMC VCC supply to be cut from late init)
slightly affected timings for how things are done for the omap MMC driver
causing the MMC cards not getting detected any longer.

Turns out this was caused by buggy reg_shift initialization in the omap
MMC driver that was happening after mmc_add_host() was being called.

Fix this by initializing reg_shift before mmc_add_host() is called.

Signed-off-by: Tony Lindgren &lt;tony@atomide.com&gt;
Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</content>
</entry>
<entry>
<title>mmc: omap: Fix NULL pointer dereference if mmc_omap_new_slot() fails</title>
<updated>2012-06-06T13:45:50Z</updated>
<author>
<name>Tony Lindgren</name>
</author>
<published>2012-06-06T13:45:50Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3caf41406dd67b412abae7df86cc2a09bef9621f'/>
<id>urn:sha1:3caf41406dd67b412abae7df86cc2a09bef9621f</id>
<content type='text'>
Commit b01a4f1c (mmc: omap: convert to per instance workqueue) initializes
the workqueue too late causing the following:

Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c0004000
[00000000] *pgd=00000000
Internal error: Oops: 5 [#1] SMP ARM
Modules linked in:
CPU: 0    Not tainted  (3.4.0-08218-gb48b2c3 #158)
PC is at __queue_work+0x8/0x46c
LR is at queue_work_on+0x38/0x40
pc : [&lt;c005bb4c&gt;]    lr : [&lt;c005c00c&gt;]    psr: 60000193
sp : c0691e1c  ip : 00000000  fp : c07374ac
r10: c7aae400  r9 : c0395700  r8 : 00000100
r7 : c0691e70  r6 : 00000000  r5 : 00000000  r4 : c7aae440
r3 : 00000001  r2 : c7aae440  r1 : 00000000  r0 : 00000000
Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
Control: 00c5387d  Table: 80004000  DAC: 00000017
Process swapper/0 (pid: 0, stack limit = 0xc06902f8)
Stack: (0xc0691e1c to 0xc0692000)

Fix this by initializing the workqueue before mmc_omap_remove_slot()
get called. Tested on n770, looks like n800 at least still has some
other issue with MMC.

Signed-off-by: Tony Lindgren &lt;tony@atomide.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</content>
</entry>
<entry>
<title>mmc: omap: Fix a section warning regression</title>
<updated>2012-06-06T13:44:09Z</updated>
<author>
<name>Tony Lindgren</name>
</author>
<published>2012-06-06T13:44:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4f837791d90bca76384b665eb2649feab169cc13'/>
<id>urn:sha1:4f837791d90bca76384b665eb2649feab169cc13</id>
<content type='text'>
Commit b6e0703b (mmc: omap: make it behave well as a module) made some
__devinit changes but missed one function causing a section warning:

WARNING: vmlinux.o(.devinit.text+0x8604): Section mismatch in reference
from the function mmc_omap_probe)

The function __devinit mmc_omap_probe() references a function
__init mmc_omap_new_slot().

Signed-off-by: Tony Lindgren &lt;tony@atomide.com&gt;
Acked-by: Felipe Balbi &lt;balbi@ti.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</content>
</entry>
<entry>
<title>mmc: omap: convert to module_platform_driver</title>
<updated>2012-05-17T12:26:38Z</updated>
<author>
<name>Venkatraman S</name>
</author>
<published>2012-05-08T11:35:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=680f1b5b216af1ae051bdf237e3ea47ba9124876'/>
<id>urn:sha1:680f1b5b216af1ae051bdf237e3ea47ba9124876</id>
<content type='text'>
Get rid of boilerplate code by using module_platform_driver macro,
no functional changes.

Signed-off-by: Venkatraman S &lt;svenkatr@ti.com&gt;
Acked-by: Balaji T K &lt;balajitk@ti.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</content>
</entry>
<entry>
<title>mmc: omap: make it behave well as a module</title>
<updated>2012-05-17T12:26:15Z</updated>
<author>
<name>Venkatraman S</name>
</author>
<published>2012-05-08T11:35:34Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b6e0703bbf0121cd6440277a0604d860f5734b2c'/>
<id>urn:sha1:b6e0703bbf0121cd6440277a0604d860f5734b2c</id>
<content type='text'>
Use proper __devinit and __devexit annotation for driver functions.
Instantiate the probe function for driver_ops instead of a probe in
the register function.

Signed-off-by: Venkatraman S &lt;svenkatr@ti.com&gt;
Acked-by: Balaji T K &lt;balajitk@ti.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</content>
</entry>
<entry>
<title>mmc: omap: convert to per instance workqueue</title>
<updated>2012-05-17T12:25:41Z</updated>
<author>
<name>Venkatraman S</name>
</author>
<published>2012-05-08T11:35:33Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b01a4f1ce2cde9acd97ce5c06e35bc9c1eacded7'/>
<id>urn:sha1:b01a4f1ce2cde9acd97ce5c06e35bc9c1eacded7</id>
<content type='text'>
Currently, a global mmc_omap_wq is created for all instances of omap
hosts, which can lead to races and doesn't lend itself to unload the
module cleanly.  Instead, create per instance workqueue and remove
 the common workqueue.

Signed-off-by: Venkatraman S &lt;svenkatr@ti.com&gt;
Acked-by: Balaji T K &lt;balajitk@ti.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</content>
</entry>
<entry>
<title>misc latin1 to utf8 conversions</title>
<updated>2012-01-02T12:04:55Z</updated>
<author>
<name>Al Viro</name>
</author>
<published>2011-12-29T22:09:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d36b691077dc59c74efec0d54ed21b86f7a2a21a'/>
<id>urn:sha1:d36b691077dc59c74efec0d54ed21b86f7a2a21a</id>
<content type='text'>
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.cz&gt;
</content>
</entry>
</feed>
