[PATCH] [3.3] ARM: tegra: emc: max rate based on emc table
Colin Cross
ccross at android.com
Tue Oct 18 14:23:46 EDT 2011
On Tue, Oct 18, 2011 at 11:14 AM, Olof Johansson <olof at lixom.net> wrote:
> Update max rate for emc clock based on configured EMC timings,
> but by default leave it at the same rate that firmware configured.
>
> Also update the shared clocks accordingly.
>
> This patch was based on work by Danny Huang <dahuang at nvidia.com>.
>
> Signed-off-by: Olof Johansson <olof at lixom.net>
> ---
> arch/arm/mach-tegra/tegra2_emc.c | 19 +++++++++++++++++++
> 1 files changed, 19 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-tegra/tegra2_emc.c b/arch/arm/mach-tegra/tegra2_emc.c
> index 0f7ae6e..bed7e74 100644
> --- a/arch/arm/mach-tegra/tegra2_emc.c
> +++ b/arch/arm/mach-tegra/tegra2_emc.c
> @@ -23,6 +23,7 @@
>
> #include <mach/iomap.h>
>
> +#include "clock.h"
> #include "tegra2_emc.h"
>
> #ifdef CONFIG_TEGRA_EMC_SCALING_ENABLE
> @@ -173,6 +174,24 @@ int tegra_emc_set_rate(unsigned long rate)
>
> void tegra_init_emc(const struct tegra_emc_table *table, int table_size)
> {
> + struct clk *c = clk_get_sys("emc", NULL);
> + struct clk *user;
> + unsigned long max = 0;
> + int i;
> +
> + /* Since default max_rate on emc clock is the same as firmware set
> + * it to before booting, raise it up here based on known timings.
> + */
> +
> + for (i = 0; i < table_size; i++)
> + if (table[i].rate > max)
> + max = table[i].rate;
> +
> tegra_emc_table = table;
> tegra_emc_table_size = table_size;
> +
> + c->max_rate = max * 2 * 1000;
I don't think you should be modifying internal variables of the struct
clk from here.
> +
> + list_for_each_entry(user, &c->shared_bus_list, u.shared_bus_user.node)
> + user->max_rate = c->max_rate;
> }
> --
> 1.7.4.1
>
>
More information about the linux-arm-kernel
mailing list