Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a35f5e1c authored by Pratibhasagar V's avatar Pratibhasagar V Committed by Subhash Jadavani
Browse files

ARM: dts: msm: Reduce the clocks for SD card slot for MSM8226



The SD cards functionality on QRD devices are failing
with CRC errors when used with higher clock / bus modes.

So reduce the clock speed for SD card slot.

CRs-Fixed:  491789
Change-Id: I24b8bfe44cee4367c22846747f439365d8795d2e
Signed-off-by: default avatarPratibhasagar V <pratibha@codeaurora.org>
[merez@codeaurora.org: msm8226-qrd-dtsi is not included in 3.14]
parent 9c0c4864
Loading
Loading
Loading
Loading
+14 −4
Original line number Diff line number Diff line
@@ -27,6 +27,12 @@
#include "sd.h"
#include "sd_ops.h"

#define UHS_SDR104_MIN_DTR	(100 * 1000 * 1000)
#define UHS_DDR50_MIN_DTR	(50 * 1000 * 1000)
#define UHS_SDR50_MIN_DTR	(50 * 1000 * 1000)
#define UHS_SDR25_MIN_DTR	(25 * 1000 * 1000)
#define UHS_SDR12_MIN_DTR	(12.5 * 1000 * 1000)

static const unsigned int tran_exp[] = {
	10000,		100000,		1000000,	10000000,
	0,		0,		0,		0
@@ -425,18 +431,22 @@ static void sd_update_bus_speed_mode(struct mmc_card *card)
	}

	if ((card->host->caps & MMC_CAP_UHS_SDR104) &&
	    (card->sw_caps.sd3_bus_mode & SD_MODE_UHS_SDR104)) {
	    (card->sw_caps.sd3_bus_mode & SD_MODE_UHS_SDR104) &&
	    (card->host->f_max > UHS_SDR104_MIN_DTR)) {
			card->sd_bus_speed = UHS_SDR104_BUS_SPEED;
	} else if ((card->host->caps & MMC_CAP_UHS_DDR50) &&
		   (card->sw_caps.sd3_bus_mode & SD_MODE_UHS_DDR50)) {
		   (card->sw_caps.sd3_bus_mode & SD_MODE_UHS_DDR50) &&
		    (card->host->f_max > UHS_DDR50_MIN_DTR)) {
			card->sd_bus_speed = UHS_DDR50_BUS_SPEED;
	} else if ((card->host->caps & (MMC_CAP_UHS_SDR104 |
		    MMC_CAP_UHS_SDR50)) && (card->sw_caps.sd3_bus_mode &
		    SD_MODE_UHS_SDR50)) {
		    SD_MODE_UHS_SDR50) &&
		    (card->host->f_max > UHS_SDR50_MIN_DTR)) {
			card->sd_bus_speed = UHS_SDR50_BUS_SPEED;
	} else if ((card->host->caps & (MMC_CAP_UHS_SDR104 |
		    MMC_CAP_UHS_SDR50 | MMC_CAP_UHS_SDR25)) &&
		   (card->sw_caps.sd3_bus_mode & SD_MODE_UHS_SDR25)) {
		   (card->sw_caps.sd3_bus_mode & SD_MODE_UHS_SDR25) &&
		 (card->host->f_max > UHS_SDR25_MIN_DTR)) {
			card->sd_bus_speed = UHS_SDR25_BUS_SPEED;
	} else if ((card->host->caps & (MMC_CAP_UHS_SDR104 |
		    MMC_CAP_UHS_SDR50 | MMC_CAP_UHS_SDR25 |