Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 235240
b: refs/heads/master
c: 41cfe36
h: refs/heads/master
v: v3
  • Loading branch information
Colin Cross committed Feb 21, 2011
1 parent dc30298 commit d8e703b
Show file tree
Hide file tree
Showing 9 changed files with 3 additions and 298 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: f035530b799a9c945415ad2139bb6494b542639a
refs/heads/master: 41cfe3676d0f4f07ba79d4f64a21450ab02d22cd
1 change: 0 additions & 1 deletion trunk/arch/arm/mach-tegra/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ obj-y += powergate.o
obj-y += fuse.o
obj-$(CONFIG_ARCH_TEGRA_2x_SOC) += clock.o
obj-$(CONFIG_ARCH_TEGRA_2x_SOC) += tegra2_clocks.o
obj-$(CONFIG_ARCH_TEGRA_2x_SOC) += tegra2_dvfs.o
obj-$(CONFIG_ARCH_TEGRA_2x_SOC) += pinmux-t2-tables.o
obj-$(CONFIG_SMP) += platsmp.o localtimer.o headsmp.o
obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
Expand Down
159 changes: 1 addition & 158 deletions trunk/arch/arm/mach-tegra/clock.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,81 +24,14 @@
#include <linux/debugfs.h>
#include <linux/slab.h>
#include <linux/seq_file.h>
#include <linux/regulator/consumer.h>
#include <linux/clkdev.h>

#include "clock.h"
#include "board.h"
#include "fuse.h"
#include "clock.h"

static LIST_HEAD(clocks);

static DEFINE_SPINLOCK(clock_lock);
static DEFINE_MUTEX(dvfs_lock);

static int clk_is_dvfs(struct clk *c)
{
return (c->dvfs != NULL);
};

static int dvfs_set_rate(struct dvfs *d, unsigned long rate)
{
struct dvfs_table *t;

if (d->table == NULL)
return -ENODEV;

for (t = d->table; t->rate != 0; t++) {
if (rate <= t->rate) {
if (!d->reg)
return 0;

return regulator_set_voltage(d->reg,
t->millivolts * 1000,
d->max_millivolts * 1000);
}
}

return -EINVAL;
}

static void dvfs_init(struct clk *c)
{
int process_id;
int i;
struct dvfs_table *table;

process_id = c->dvfs->cpu ? tegra_core_process_id() :
tegra_cpu_process_id();

for (i = 0; i < c->dvfs->process_id_table_length; i++)
if (process_id == c->dvfs->process_id_table[i].process_id)
c->dvfs->table = c->dvfs->process_id_table[i].table;

if (c->dvfs->table == NULL) {
pr_err("Failed to find dvfs table for clock %s process %d\n",
c->name, process_id);
return;
}

c->dvfs->max_millivolts = 0;
for (table = c->dvfs->table; table->rate != 0; table++)
if (c->dvfs->max_millivolts < table->millivolts)
c->dvfs->max_millivolts = table->millivolts;

c->dvfs->reg = regulator_get(NULL, c->dvfs->reg_id);

if (IS_ERR(c->dvfs->reg)) {
pr_err("Failed to get regulator %s for clock %s\n",
c->dvfs->reg_id, c->name);
c->dvfs->reg = NULL;
return;
}

if (c->refcnt > 0)
dvfs_set_rate(c->dvfs, c->rate);
}

struct clk *tegra_get_clock_by_name(const char *name)
{
struct clk *c;
Expand Down Expand Up @@ -214,34 +147,11 @@ int clk_enable_locked(struct clk *c)
return 0;
}

int clk_enable_cansleep(struct clk *c)
{
int ret;
unsigned long flags;

mutex_lock(&dvfs_lock);

if (clk_is_dvfs(c) && c->refcnt > 0)
dvfs_set_rate(c->dvfs, c->rate);

spin_lock_irqsave(&clock_lock, flags);
ret = clk_enable_locked(c);
spin_unlock_irqrestore(&clock_lock, flags);

mutex_unlock(&dvfs_lock);

return ret;
}
EXPORT_SYMBOL(clk_enable_cansleep);

int clk_enable(struct clk *c)
{
int ret;
unsigned long flags;

if (clk_is_dvfs(c))
BUG();

spin_lock_irqsave(&clock_lock, flags);
ret = clk_enable_locked(c);
spin_unlock_irqrestore(&clock_lock, flags);
Expand All @@ -268,30 +178,10 @@ void clk_disable_locked(struct clk *c)
c->refcnt--;
}

void clk_disable_cansleep(struct clk *c)
{
unsigned long flags;

mutex_lock(&dvfs_lock);

spin_lock_irqsave(&clock_lock, flags);
clk_disable_locked(c);
spin_unlock_irqrestore(&clock_lock, flags);

if (clk_is_dvfs(c) && c->refcnt == 0)
dvfs_set_rate(c->dvfs, c->rate);

mutex_unlock(&dvfs_lock);
}
EXPORT_SYMBOL(clk_disable_cansleep);

void clk_disable(struct clk *c)
{
unsigned long flags;

if (clk_is_dvfs(c))
BUG();

spin_lock_irqsave(&clock_lock, flags);
clk_disable_locked(c);
spin_unlock_irqrestore(&clock_lock, flags);
Expand Down Expand Up @@ -356,41 +246,11 @@ int clk_set_rate_locked(struct clk *c, unsigned long rate)
return 0;
}

int clk_set_rate_cansleep(struct clk *c, unsigned long rate)
{
int ret = 0;
unsigned long flags;

mutex_lock(&dvfs_lock);

if (rate > c->rate)
ret = dvfs_set_rate(c->dvfs, rate);
if (ret)
goto out;

spin_lock_irqsave(&clock_lock, flags);
ret = clk_set_rate_locked(c, rate);
spin_unlock_irqrestore(&clock_lock, flags);

if (ret)
goto out;

ret = dvfs_set_rate(c->dvfs, rate);

out:
mutex_unlock(&dvfs_lock);
return ret;
}
EXPORT_SYMBOL(clk_set_rate_cansleep);

int clk_set_rate(struct clk *c, unsigned long rate)
{
int ret = 0;
unsigned long flags;

if (clk_is_dvfs(c))
BUG();

spin_lock_irqsave(&clock_lock, flags);
ret = clk_set_rate_locked(c, rate);
spin_unlock_irqrestore(&clock_lock, flags);
Expand Down Expand Up @@ -503,23 +363,6 @@ void __init tegra_init_clock(void)
tegra2_init_clocks();
}

int __init tegra_init_dvfs(void)
{
struct clk *c, *safe;

mutex_lock(&dvfs_lock);

list_for_each_entry_safe(c, safe, &clocks, node)
if (c->dvfs)
dvfs_init(c);

mutex_unlock(&dvfs_lock);

return 0;
}

late_initcall(tegra_init_dvfs);

#ifdef CONFIG_DEBUG_FS
static struct dentry *clk_debugfs_root;

Expand Down
24 changes: 0 additions & 24 deletions trunk/arch/arm/mach-tegra/clock.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,28 +41,6 @@
#define ENABLE_ON_INIT (1 << 28)

struct clk;
struct regulator;

struct dvfs_table {
unsigned long rate;
int millivolts;
};

struct dvfs_process_id_table {
int process_id;
struct dvfs_table *table;
};

struct dvfs {
struct regulator *reg;
struct dvfs_table *table;
int max_millivolts;

int process_id_table_length;
const char *reg_id;
bool cpu;
struct dvfs_process_id_table process_id_table[];
};

struct clk_mux_sel {
struct clk *input;
Expand Down Expand Up @@ -141,8 +119,6 @@ struct clk {
/* Virtual cpu clock */
struct clk *main;
struct clk *backup;

struct dvfs *dvfs;
};


Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/arm/mach-tegra/cpu-tegra.c
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ static int tegra_update_cpu_speed(unsigned long rate)
freqs.old, freqs.new);
#endif

ret = clk_set_rate_cansleep(cpu_clk, freqs.new * 1000);
ret = clk_set_rate(cpu_clk, freqs.new * 1000);
if (ret) {
pr_err("cpu-tegra: Failed to set cpu frequency to %d kHz\n",
freqs.new);
Expand Down
5 changes: 0 additions & 5 deletions trunk/arch/arm/mach-tegra/include/mach/clk.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,4 @@ struct clk;
void tegra_periph_reset_deassert(struct clk *c);
void tegra_periph_reset_assert(struct clk *c);

int clk_enable_cansleep(struct clk *clk);
void clk_disable_cansleep(struct clk *clk);
int clk_set_rate_cansleep(struct clk *clk, unsigned long rate);
int clk_set_parent_cansleep(struct clk *clk, struct clk *parent);

#endif
2 changes: 0 additions & 2 deletions trunk/arch/arm/mach-tegra/tegra2_clocks.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@

#include "clock.h"
#include "fuse.h"
#include "tegra2_dvfs.h"

#define RST_DEVICES 0x004
#define RST_DEVICES_SET 0x300
Expand Down Expand Up @@ -1650,7 +1649,6 @@ static struct clk tegra_clk_virtual_cpu = {
.backup = &tegra_pll_p,
.ops = &tegra_cpu_ops,
.max_rate = 1000000000,
.dvfs = &tegra_dvfs_virtual_cpu_dvfs,
};

static struct clk tegra_clk_hclk = {
Expand Down
86 changes: 0 additions & 86 deletions trunk/arch/arm/mach-tegra/tegra2_dvfs.c

This file was deleted.

Loading

0 comments on commit d8e703b

Please sign in to comment.