mmc: core: eMMC bus width may not work on all platforms
authorPhilip Rakity <prakity@marvell.com>
Wed, 25 May 2011 01:14:58 +0000 (18:14 -0700)
committerChris Ball <cjb@laptop.org>
Wed, 25 May 2011 20:52:32 +0000 (16:52 -0400)
commit08ee80cc397ac1a306ca689a22ede954d92d0db1
treeb36819e6b52c9fd939dd6c886af734cb6ccbc45f
parent4f3d3e9b50931a3ec70f324d53fb7437e2a39388
mmc: core: eMMC bus width may not work on all platforms

CMD19 -- The offical way to validate bus widths from the JEDEC spec
does not work on all platforms.  Some platforms that use PCI/PCIe
to connect their SD controllers are known to fail.

If the quirk MMC_BUS_WIDTH_TEST is not defined we try to figure out
the bus width by reading the ext_csd at different bus widths and
compare this against the ext_csd read in 1 bit mode.  If no ext_csd
is available we default to 1 bit operations.

Code has been tested on mmp2 against 8 bit eMMC and Transcend 2GB
card that is known to not work in 4 bit mode.  The physical pins
on the card are not present to support 4 bit operation.

Signed-off-by: Philip Rakity <prakity@marvell.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
drivers/mmc/core/mmc.c