]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
mmc: at91_mci: fix multiblock SDIO transfers
authorYauhen Kharuzhy <yauhen.kharuzhy@promwad.com>
Thu, 25 Nov 2010 10:11:51 +0000 (12:11 +0200)
committerAK <andi@firstfloor.org>
Sun, 6 Feb 2011 19:03:47 +0000 (11:03 -0800)
commit84da397234ceec8449444598d8d72668d7f5bb8c
treed7118cebfae11ea9498f1d2105073b48cbb974fd
parent4dfbc34551053dcf44fa3c6ab8d2fcf39bd38eea
mmc: at91_mci: fix multiblock SDIO transfers

commit a2255ff45143001fecbc5e5a4b58fcb999d393ae upstream.

The AT91 MCI has special SDIO transfer types: SDIO block and SDIO byte
transfers, but at91_mci driver doesn't use them and handles all SDIO
transfers as ordinary MMC block transfers. This causes problems for
multiple-block SDIO transfers (in particular for 256-bytes blocks).

Fix this situation by checking the opcode for SDIO CMD53 and setting
the transfer type in the AT91_MCI_CMDR register properly.

This patch was tested with libertas SDIO driver: problem with TX
timeouts on big packets was eliminated.

Signed-off-by: Yauhen Kharuzhy <yauhen.kharuzhy@promwad.com>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Acked-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Andi Kleen <ak@linux.intel.com>
arch/arm/mach-at91/include/mach/at91_mci.h
drivers/mmc/host/at91_mci.c