summaryrefslogtreecommitdiff
path: root/drivers/mmc
diff options
context:
space:
mode:
authorJeetesh Burman <jburman@nvidia.com>2015-03-24 22:52:02 +0530
committerMatthew Pedro <mapedro@nvidia.com>2015-05-04 13:38:04 -0700
commitf9b36d3b89f76cc48678eeb7a27cb980e89901d0 (patch)
treeaddf0dfa88596adc4c6d9b0f66261ad0194643bb /drivers/mmc
parent6ad6591bf83670f91ab5f7628b5a6c3db3e9da4c (diff)
mmc: tegra: disable card clk before setting tap
-disable card clk. -update the tap value. -enable card clk. Bug 1559166 Change-Id: Ib77bfed5d8a8569d458aaf2cd0cd3c8a9e00a60e Signed-off-by: Naveen Kumar Arepalli <naveenk@nvidia.com> Reviewed-on: http://git-master/r/559812 (cherry picked from commit e2c098821a74ef1b5805c6bc5cb177a4fba05338) Signed-off-by: Jeetesh Burman <jburman@nvidia.com> Reviewed-on: http://git-master/r/721896 GVS: Gerrit_Virtual_Submit Reviewed-by: Venkat Moganty <vmoganty@nvidia.com>
Diffstat (limited to 'drivers/mmc')
-rw-r--r--drivers/mmc/host/sdhci-tegra.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c
index c119e2e043e9..30a44e832155 100644
--- a/drivers/mmc/host/sdhci-tegra.c
+++ b/drivers/mmc/host/sdhci-tegra.c
@@ -1747,6 +1747,7 @@ static void sdhci_tegra_set_tap_delay(struct sdhci_host *sdhci,
unsigned int tap_delay)
{
u32 vendor_ctrl;
+ u16 clk;
/* Max tap delay value is 255 */
if (tap_delay > MAX_TAP_VALUES) {
@@ -1757,11 +1758,20 @@ static void sdhci_tegra_set_tap_delay(struct sdhci_host *sdhci,
return;
}
+ clk = sdhci_readw(sdhci, SDHCI_CLOCK_CONTROL);
+ clk &= ~SDHCI_CLOCK_CARD_EN;
+ sdhci_writew(sdhci, clk, SDHCI_CLOCK_CONTROL);
+
vendor_ctrl = sdhci_readl(sdhci, SDHCI_VNDR_CLK_CTRL);
vendor_ctrl &= ~(SDHCI_VNDR_CLK_CTRL_TAP_VALUE_MASK <<
SDHCI_VNDR_CLK_CTRL_TAP_VALUE_SHIFT);
vendor_ctrl |= (tap_delay << SDHCI_VNDR_CLK_CTRL_TAP_VALUE_SHIFT);
sdhci_writel(sdhci, vendor_ctrl, SDHCI_VNDR_CLK_CTRL);
+
+ clk = sdhci_readw(sdhci, SDHCI_CLOCK_CONTROL);
+ clk |= SDHCI_CLOCK_CARD_EN;
+ sdhci_writew(sdhci, clk, SDHCI_CLOCK_CONTROL);
+
}
static void sdhci_tegra_set_trim_delay(struct sdhci_host *sdhci,