summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorNaveen Kumar Arepalli <naveenk@nvidia.com>2013-07-22 16:20:09 +0530
committerVarun Colbert <vcolbert@nvidia.com>2013-07-22 09:10:04 -0700
commit2f493f2b493853c964d9fd28eb6781844aa490ca (patch)
tree27888eb63ad9e0a0082ac7aee7681428c05a8717 /drivers
parentac475a8eef3acc44297d4853fde82b87c31dda2b (diff)
mmc: tegra: Don't skip tuning for 2nd core voltage
Even if nominal_vcore_tun_done, override_vcore_tun_done are set don't skip tuning for 2nd core voltage. Bug 1330031 Reviewed-on: http://git-master/r/242764 (cherry picked from commit 57b7008d0ad3cfdea888416e8b1db3ebb0c7cda7) Signed-off-by: Naveen Kumar Arepalli <naveenk@nvidia.com> Change-Id: I0a90a9d317bd46558eaa9112391c33cc867b247e Reviewed-on: http://git-master/r/251897 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Pavan Kunapuli <pkunapuli@nvidia.com> Reviewed-by: Venu Byravarasu <vbyravarasu@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mmc/host/sdhci-tegra.c25
1 files changed, 8 insertions, 17 deletions
diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c
index 3ba09565758a..6dddd354db3a 100644
--- a/drivers/mmc/host/sdhci-tegra.c
+++ b/drivers/mmc/host/sdhci-tegra.c
@@ -195,7 +195,7 @@ static struct freq_tuning_params tuning_params[TUNING_FREQ_COUNT] = {
[TUNING_LOW_FREQ] = {
.freq_hz = 82000000,
.nr_voltages = 1,
- .voltages = {ULONG_MAX},
+ .voltages = {1250},
},
[TUNING_HIGH_FREQ] = {
.freq_hz = 156000000,
@@ -1119,7 +1119,7 @@ static void sdhci_tegra_dump_tuning_data(struct sdhci_host *sdhci, u8 freq_band)
tegra_host->tuning_data.tap_data[0]->full_win_end);
}
- if (((freq_band == TUNING_HIGH_FREQ) |
+ if (((freq_band == TUNING_HIGH_FREQ) ||
(freq_band == TUNING_HIGH_FREQ_HV)) &&
(tegra_host->tuning_data.tap_data[1])) {
dev_info(mmc_dev(sdhci->mmc), "Tuning window data at %d mV\n",
@@ -1640,24 +1640,15 @@ static int sdhci_tegra_execute_tuning(struct sdhci_host *sdhci, u32 opcode,
voltage = tuning_params[freq_band].voltages[i];
if (voltage > tegra_host->nominal_vcore_mv) {
voltage = tegra_host->nominal_vcore_mv;
- if (tuning_data->nominal_vcore_tuning_done) {
+ if ((tuning_data->nominal_vcore_tuning_done) &&
+ (tuning_params[freq_band].nr_voltages == 1)) {
spin_lock(&sdhci->lock);
continue;
}
- }
- if (voltage < tegra_host->min_vcore_override_mv) {
+ } else if (voltage < tegra_host->min_vcore_override_mv) {
voltage = tegra_host->min_vcore_override_mv;
- /*
- * If nominal and min override voltages are equal, set
- * one shot tuning and mark min override tuning as
- * done.
- */
- if (voltage == tegra_host->nominal_vcore_mv) {
- tuning_data->one_shot_tuning = true;
- tuning_data->overide_vcore_tuning_done = true;
- }
-
- if (tuning_data->overide_vcore_tuning_done) {
+ if ((tuning_data->overide_vcore_tuning_done) &&
+ (tuning_params[freq_band].nr_voltages == 1)) {
spin_lock(&sdhci->lock);
continue;
}
@@ -1693,7 +1684,7 @@ skip_vcore_override:
if (!vcore_override_failed) {
if (voltage == tegra_host->nominal_vcore_mv)
tuning_data->nominal_vcore_tuning_done = true;
- else if (voltage >= tegra_host->min_vcore_override_mv)
+ if (voltage >= tegra_host->min_vcore_override_mv)
tuning_data->overide_vcore_tuning_done = true;
}