summaryrefslogtreecommitdiffstats
path: root/drivers/mci/mci-core.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mci/mci-core.c')
-rw-r--r--drivers/mci/mci-core.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/drivers/mci/mci-core.c b/drivers/mci/mci-core.c
index 2829b8e1d6..67668d53f0 100644
--- a/drivers/mci/mci-core.c
+++ b/drivers/mci/mci-core.c
@@ -667,10 +667,6 @@ static void mci_set_clock(struct mci *mci, unsigned clock)
if (clock < host->f_min)
clock = host->f_min;
- /* check against the limit at the card's side */
- if (mci->tran_speed != 0 && clock > mci->tran_speed)
- clock = mci->tran_speed;
-
host->clock = clock; /* the new target frequency */
mci_set_ios(mci);
}
@@ -922,11 +918,8 @@ static int mci_startup_sd(struct mci *mci)
}
mci_set_bus_width(mci, MMC_BUS_WIDTH_4);
}
- /* if possible, speed up the transfer */
- if (mci_caps(mci) & MMC_CAP_SD_HIGHSPEED)
- mci_set_clock(mci, 50000000);
- else
- mci_set_clock(mci, 25000000);
+
+ mci_set_clock(mci, mci->tran_speed);
return 0;
}
@@ -948,13 +941,13 @@ static int mci_startup_mmc(struct mci *mci)
/* if possible, speed up the transfer */
if (mci_caps(mci) & MMC_CAP_MMC_HIGHSPEED) {
if (mci->card_caps & MMC_CAP_MMC_HIGHSPEED_52MHZ)
- mci_set_clock(mci, 52000000);
+ mci->tran_speed = 52000000;
else
- mci_set_clock(mci, 26000000);
- } else {
- mci_set_clock(mci, 20000000);
+ mci->tran_speed = 26000000;
}
+ mci_set_clock(mci, mci->tran_speed);
+
/*
* Unlike SD, MMC cards dont have a configuration register to notify
* supported bus width. So bus test command should be run to identify