mmc: sdio: fix setting card data bus width as 4-bit
authorYong Ding <yongd@marvell.com>
Tue, 15 May 2012 05:09:43 +0000 (13:09 +0800)
committerChris Ball <cjb@laptop.org>
Wed, 6 Jun 2012 13:22:53 +0000 (09:22 -0400)
commit2a0fe914a38745f5b03534c4e4f4056cbd6978b8
treeb341420c0fc9a3eaf0c62a431d495ff67742e5a0
parent693e5e2025278d90e1427f037e5ec8ea1ec7d5c4
mmc: sdio: fix setting card data bus width as 4-bit

SDIO_CCCR_IF[1:0] in SDIO card is used for card data bus width
setting as below:

     00b: 1-bit bus
     01b: Reserved
     10b: 4-bit bus
     11b: 8-bit bus (only for embedded SDIO)

And sdio_enable_wide is for setting data bus width as 4-bit.
But currently, it first reads the register, second OR' 1b with
SDIO_CCCR_IF[1], and then writes it back.

As we can see, this is based on such assumption that the
SDIO_CCCR_IF[0] is always 0. Apparently, this is not right.

Signed-off-by: Yong Ding <yongd@marvell.com>
Acked-by: Philip Rakity <prakity@marvell.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
drivers/mmc/core/sdio.c
include/linux/mmc/sdio.h