summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/tegra12_emc.c
diff options
context:
space:
mode:
authorKaz Fukuoka <kfukuoka@nvidia.com>2013-08-27 18:18:56 -0700
committerDan Willemsen <dwillemsen@nvidia.com>2013-09-16 17:40:31 -0700
commit36942d1a119d7623e5a95e59d20d5ed22de4cde4 (patch)
treedf5b81c0d2cd81a74ff79b3d6d56719d0ac9ef57 /arch/arm/mach-tegra/tegra12_emc.c
parent62693487194ec26dd9f64b004c5a81fd43de2dfc (diff)
ARM: tegra12: clock: Round emc rate up/down
Added support for bidirectional up/down rounding of emc rate. Ported from Tegra14 Change-Id: I9c83db11478fab1894b694d34ce9025fe6ce2ee7 Change-Id: Ifc8a33257b2063f13377d9a2bffeb2dde38d12d0 Signed-off-by: Kaz Fukuoka <kfukuoka@nvidia.com> Reviewed-on: http://git-master/r/267575 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Yu-Huan Hsu <yhsu@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/tegra12_emc.c')
-rw-r--r--arch/arm/mach-tegra/tegra12_emc.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/arch/arm/mach-tegra/tegra12_emc.c b/arch/arm/mach-tegra/tegra12_emc.c
index f65dae3e354c..5b062a64373e 100644
--- a/arch/arm/mach-tegra/tegra12_emc.c
+++ b/arch/arm/mach-tegra/tegra12_emc.c
@@ -781,9 +781,10 @@ int tegra_emc_set_rate(unsigned long rate)
return 0;
}
-long tegra_emc_round_rate(unsigned long rate)
+long tegra_emc_round_rate_updown(unsigned long rate, bool up)
{
int i;
+ unsigned long table_rate;
if (!tegra_emc_table)
return clk_get_rate_locked(emc); /* no table - no rate change */
@@ -801,11 +802,15 @@ long tegra_emc_round_rate(unsigned long rate)
if (tegra_emc_clk_sel[i].input == NULL)
continue; /* invalid entry */
- if (tegra_emc_table[i].rate >= rate) {
- pr_debug("%s: using %lu\n",
- __func__, tegra_emc_table[i].rate);
+ table_rate = tegra_emc_table[i].rate;
+ if (table_rate >= rate) {
+ if (!up && i && (table_rate > rate)) {
+ i--;
+ table_rate = tegra_emc_table[i].rate;
+ }
+ pr_debug("%s: using %lu\n", __func__, table_rate);
last_round_idx = i;
- return tegra_emc_table[i].rate * 1000;
+ return table_rate * 1000;
}
}