<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/mmc, branch v3.6.5</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/drivers/mmc?h=v3.6.5</id>
<link rel='self' href='https://git.amat.us/linux/atom/drivers/mmc?h=v3.6.5'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2012-10-12T20:50:34Z</updated>
<entry>
<title>mmc: sh-mmcif: avoid oops on spurious interrupts</title>
<updated>2012-10-12T20:50:34Z</updated>
<author>
<name>Guennadi Liakhovetski</name>
<email>g.liakhovetski@gmx.de</email>
</author>
<published>2012-09-18T06:42:42Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=8c63c3bf3e32a13c22edff2a9cc7310a46092e70'/>
<id>urn:sha1:8c63c3bf3e32a13c22edff2a9cc7310a46092e70</id>
<content type='text'>
commit 8464dd52d3198dd05cafb005371d76e5339eb842 upstream.

On some systems, e.g., kzm9g, MMCIF interfaces can produce spurious
interrupts without any active request. To prevent the Oops, that results
in such cases, don't dereference the mmc request pointer until we make
sure, that we are indeed processing such a request.

Reported-by: Tetsuyuki Kobayashi &lt;koba@kmckk.co.jp&gt;
Signed-off-by: Guennadi Liakhovetski &lt;g.liakhovetski@gmx.de&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>mmc: slot-gpio: Fix missing assignment to ctx-&gt;ro_gpio</title>
<updated>2012-10-12T20:50:34Z</updated>
<author>
<name>Chris Ball</name>
<email>cjb@laptop.org</email>
</author>
<published>2012-09-10T02:56:48Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=25356be596603e72329799728cbe494652ccdaab'/>
<id>urn:sha1:25356be596603e72329799728cbe494652ccdaab</id>
<content type='text'>
commit 15e8a8e42966162c207bb97ed55c803bc437eeae upstream.

mmc_gpio_request_ro() doesn't store the requested gpio in ctx-&gt;ro_gpio.
As a result, subsequent calls to mmc_gpio_get_ro() will always fail
with -ENOSYS because the gpio number isn't available to that function.

Acked-by: Guennadi Liakhovetski &lt;g.liakhovetski@gmx.de&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>mmc: omap_hsmmc: Pass on the suspend failure to the PM core</title>
<updated>2012-10-12T20:50:34Z</updated>
<author>
<name>Vaibhav Bedia</name>
<email>vaibhav.bedia@ti.com</email>
</author>
<published>2012-09-13T06:31:03Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=07c0544659b0d75a7b649b37ab5641fa0a3eec2c'/>
<id>urn:sha1:07c0544659b0d75a7b649b37ab5641fa0a3eec2c</id>
<content type='text'>
commit c4c8eeb4df00aabb641553d6fbcd46f458e56cd9 upstream.

In some cases mmc_suspend_host() is not able to claim the
host and proceed with the suspend process. The core returns
-EBUSY to the host controller driver. Unfortunately, the
host controller driver does not pass on this information
to the PM core and hence the system suspend process continues.

	ret = mmc_suspend_host(host-&gt;mmc);
	if (ret) {
		host-&gt;suspended = 0;
		if (host-&gt;pdata-&gt;resume) {
			ret = host-&gt;pdata-&gt;resume(dev, host-&gt;slot_id);

The return status from mmc_suspend_host() is overwritten by return
status from host-&gt;pdata-&gt;resume. So the original return status is lost.

In these cases the MMC core gets to an unexpected state
during resume and multiple issues related to MMC crop up.
1. Host controller driver starts accessing the device registers
before the clocks are enabled which leads to a prefetch abort.
2. A file copy thread which was launched before suspend gets
stuck due to the host not being reclaimed during resume.

To avoid such problems pass on the -EBUSY status to the PM core
from the host controller driver. With this change, MMC core
suspend might still fail but it does not end up making the
system unusable. Suspend gets aborted and the user can try
suspending the system again.

Signed-off-by: Vaibhav Bedia &lt;vaibhav.bedia@ti.com&gt;
Signed-off-by: Hebbar, Gururaja &lt;gururaja.hebbar@ti.com&gt;
Acked-by: Venkatraman S &lt;svenkatr@ti.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>mmc: omap: fix broken PIO mode</title>
<updated>2012-09-04T17:58:11Z</updated>
<author>
<name>Paul Walmsley</name>
<email>paul@pwsan.com</email>
</author>
<published>2012-08-24T06:00:18Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/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: card: Skip secure erase on MoviNAND; causes unrecoverable corruption.</title>
<updated>2012-09-04T17:58:10Z</updated>
<author>
<name>Ian Chen</name>
<email>ian.cy.chen@samsung.com</email>
</author>
<published>2012-08-29T06:05:36Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=3550ccdb9d8d350e526b809bf3dd92b550a74fe1'/>
<id>urn:sha1:3550ccdb9d8d350e526b809bf3dd92b550a74fe1</id>
<content type='text'>
For several MoviNAND eMMC parts, there are known issues with secure
erase and secure trim.  For these specific MoviNAND devices, we skip
these operations.

Specifically, there is a bug in the eMMC firmware that causes
unrecoverable corruption when the MMC is erased with MMC_CAP_ERASE
enabled.

References:

http://forum.xda-developers.com/showthread.php?t=1644364
https://plus.google.com/111398485184813224730/posts/21pTYfTsCkB#111398485184813224730/posts/21pTYfTsCkB

Signed-off-by: Ian Chen &lt;ian.cy.chen@samsung.com&gt;
Reviewed-by: Namjae Jeon &lt;linkinjeon@gmail.com&gt;
Acked-by: Jaehoon Chung &lt;jh80.chung@samsung.com&gt;
Reviewed-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Cc: stable &lt;stable@vger.kernel.org&gt; [3.0+]
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</content>
</entry>
<entry>
<title>mmc: dw_mmc: Disable low power mode if SDIO interrupts are used</title>
<updated>2012-09-04T17:58:10Z</updated>
<author>
<name>Doug Anderson</name>
<email>dianders@chromium.org</email>
</author>
<published>2012-07-25T15:33:17Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=9623b5b9192b349bcadb31cce159072a78ac6972'/>
<id>urn:sha1:9623b5b9192b349bcadb31cce159072a78ac6972</id>
<content type='text'>
The documentation for the dw_mmc part says that the low power
mode should normally only be set for MMC and SD memory and should
be turned off for SDIO cards that need interrupts detected.

The best place I could find to do this is when the SDIO interrupt
was first enabled.  I rely on the fact that dw_mci_setup_bus()
will be called when it's time to reenable.

Signed-off-by: Doug Anderson &lt;dianders@chromium.org&gt;
Acked-by: Seungwon Jeon &lt;tgih.jun@samsung.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</content>
</entry>
<entry>
<title>mmc: dw_mmc: fix error handling in PIO mode</title>
<updated>2012-09-04T17:58:09Z</updated>
<author>
<name>Seungwon Jeon</name>
<email>tgih.jun@samsung.com</email>
</author>
<published>2012-08-01T00:30:46Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=e74f3a9c993a088f0a067e13941075e4acb7300a'/>
<id>urn:sha1:e74f3a9c993a088f0a067e13941075e4acb7300a</id>
<content type='text'>
Data transfer will be continued until all the bytes are transmitted,
even if data crc error occurs during a multiple-block data transfer.
This means RXDR/TXDR interrupts will occurs until data transfer is
terminated. Early setting of host-&gt;sg to NULL prevents going into
xxx_data_pio functions, hence permanent unhandled RXDR/TXDR interrupts
occurs. And checking error interrupt status in the xxx_data_pio functions
is no need because dw_mci_interrupt does do the same. This patch also
removes it.

Signed-off-by: Seungwon Jeon &lt;tgih.jun@samsung.com&gt;
Acked-by: Jaehoon Chung &lt;jh80.chung@samsung.com&gt;
Acked-by: Will Newton &lt;will.newton@imgtec.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</content>
</entry>
<entry>
<title>mmc: dw_mmc: correct mishandling error interrupt</title>
<updated>2012-09-04T17:58:08Z</updated>
<author>
<name>Seungwon Jeon</name>
<email>tgih.jun@samsung.com</email>
</author>
<published>2012-08-01T00:30:40Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=9b2026a12511439d906a5d8d302ae285ebe7378a'/>
<id>urn:sha1:9b2026a12511439d906a5d8d302ae285ebe7378a</id>
<content type='text'>
Datasheet of SYNOPSYS mentions that DTO(Data Transfer Over) interrupt
will be raised even if some error interrupts, however it is actually
found that DTO does not occur. SYNOPSYS has confirmed this issue.
Current implementation defers the call of tasklet_schedule until DTO
when the error interrupts is happened. This patch fixes error handling.

Signed-off-by: Seungwon Jeon &lt;tgih.jun@samsung.com&gt;
Acked-by: Jaehoon Chung &lt;jh80.chung@samsung.com&gt;
Acked-by: Will Newton &lt;will.newton@imgtec.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</content>
</entry>
<entry>
<title>mmc: dw_mmc: amend using error interrupt status</title>
<updated>2012-09-04T17:58:08Z</updated>
<author>
<name>Seungwon Jeon</name>
<email>tgih.jun@samsung.com</email>
</author>
<published>2012-08-01T00:30:30Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=182c90815993452f1902837cc342ac2c05ef13f5'/>
<id>urn:sha1:182c90815993452f1902837cc342ac2c05ef13f5</id>
<content type='text'>
RINTSTS status includes masked interrupts as well as unmasked.
data_status and cmd_status are set by value of RINTSTS in interrupt handler
and tasklet finally uses it to decide whether error is happened or not.
In addition, MINTSTS status is used for setting data_status in PIO.
Masked error interrupt will not be handled and that status can be considered
non-error case.

Signed-off-by: Seungwon Jeon &lt;tgih.jun@samsung.com&gt;
Reviewed By: Girish K S &lt;girish.shivananjappa@linaro.org&gt;
Acked-by: Jaehoon Chung &lt;jh80.chung@samsung.com&gt;
Acked-by: Will Newton &lt;will.newton@imgtec.com&gt;
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</content>
</entry>
<entry>
<title>mmc: atmel-mci: not busy flag has also to be used for read operations</title>
<updated>2012-09-04T17:58:07Z</updated>
<author>
<name>Ludovic Desroches</name>
<email>ludovic.desroches@atmel.com</email>
</author>
<published>2012-07-24T09:42:04Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=077d40731edc90ee9dedf63249034c8cd5f694ce'/>
<id>urn:sha1:077d40731edc90ee9dedf63249034c8cd5f694ce</id>
<content type='text'>
Even if the datasheet says that the not busy flag has to be used only
for write operations, it's false except for version lesser than v2xx.

Not waiting on the not busy flag for read operations can cause the
controller to hang-up during the initialization of some SD cards
with DMA after the first CMD6 -- the next command is sent too early.

Signed-off-by: Ludovic Desroches &lt;ludovic.desroches@atmel.com&gt;
Cc: stable &lt;stable@vger.kernel.org&gt; [3.5, 3.6]
Signed-off-by: Chris Ball &lt;cjb@laptop.org&gt;
</content>
</entry>
</feed>
