mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-10 21:07:02 +09:00
Revert "ARM: tegra: dvfs: Fix locking on external dvfs calls"
This reverts commit f58886c359.
Change-Id: Ie88d8f79db9bf958fc3b9f261d74d031785161d0
This commit is contained in:
@@ -207,22 +207,6 @@ void clk_set_cansleep(struct clk *c)
|
||||
mutex_unlock(&clock_list_lock);
|
||||
}
|
||||
|
||||
int tegra_dvfs_set_rate(struct clk *c, unsigned long rate)
|
||||
{
|
||||
unsigned long flags;
|
||||
int ret;
|
||||
|
||||
if (!clk_is_dvfs(c))
|
||||
return -EINVAL;
|
||||
|
||||
clk_lock_save(c, flags);
|
||||
ret = tegra_dvfs_set_rate_locked(c, rate);
|
||||
clk_unlock_restore(c, flags);
|
||||
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(tegra_dvfs_set_rate);
|
||||
|
||||
int clk_reparent(struct clk *c, struct clk *parent)
|
||||
{
|
||||
c->parent = parent;
|
||||
@@ -260,7 +244,7 @@ int clk_enable(struct clk *c)
|
||||
clk_lock_save(c, flags);
|
||||
|
||||
if (clk_is_auto_dvfs(c)) {
|
||||
ret = tegra_dvfs_set_rate_locked(c, clk_get_rate_locked(c));
|
||||
ret = tegra_dvfs_set_rate(c, clk_get_rate_locked(c));
|
||||
if (ret)
|
||||
goto out;
|
||||
}
|
||||
@@ -313,7 +297,7 @@ void clk_disable(struct clk *c)
|
||||
c->refcnt--;
|
||||
|
||||
if (clk_is_auto_dvfs(c) && c->refcnt == 0)
|
||||
tegra_dvfs_set_rate_locked(c, 0);
|
||||
tegra_dvfs_set_rate(c, 0);
|
||||
|
||||
clk_unlock_restore(c, flags);
|
||||
}
|
||||
@@ -338,7 +322,7 @@ int clk_set_parent(struct clk *c, struct clk *parent)
|
||||
|
||||
if (clk_is_auto_dvfs(c) && c->refcnt > 0 &&
|
||||
(!c->parent || new_rate > old_rate)) {
|
||||
ret = tegra_dvfs_set_rate_locked(c, new_rate);
|
||||
ret = tegra_dvfs_set_rate(c, new_rate);
|
||||
if (ret)
|
||||
goto out;
|
||||
}
|
||||
@@ -349,7 +333,7 @@ int clk_set_parent(struct clk *c, struct clk *parent)
|
||||
|
||||
if (clk_is_auto_dvfs(c) && c->refcnt > 0 &&
|
||||
new_rate < old_rate)
|
||||
ret = tegra_dvfs_set_rate_locked(c, new_rate);
|
||||
ret = tegra_dvfs_set_rate(c, new_rate);
|
||||
|
||||
out:
|
||||
clk_unlock_restore(c, flags);
|
||||
@@ -382,7 +366,7 @@ int clk_set_rate(struct clk *c, unsigned long rate)
|
||||
rate = c->max_rate;
|
||||
|
||||
if (clk_is_auto_dvfs(c) && rate > old_rate && c->refcnt > 0) {
|
||||
ret = tegra_dvfs_set_rate_locked(c, rate);
|
||||
ret = tegra_dvfs_set_rate(c, rate);
|
||||
if (ret)
|
||||
goto out;
|
||||
}
|
||||
@@ -392,7 +376,7 @@ int clk_set_rate(struct clk *c, unsigned long rate)
|
||||
goto out;
|
||||
|
||||
if (clk_is_auto_dvfs(c) && rate < old_rate && c->refcnt > 0)
|
||||
ret = tegra_dvfs_set_rate_locked(c, rate);
|
||||
ret = tegra_dvfs_set_rate(c, rate);
|
||||
|
||||
out:
|
||||
clk_unlock_restore(c, flags);
|
||||
@@ -543,12 +527,11 @@ void __init tegra_clk_set_dvfs_rates(void)
|
||||
clk_lock_save(c, flags);
|
||||
if (clk_is_auto_dvfs(c)) {
|
||||
if (c->refcnt > 0)
|
||||
tegra_dvfs_set_rate_locked(c,
|
||||
clk_get_rate_locked(c));
|
||||
tegra_dvfs_set_rate(c, clk_get_rate_locked(c));
|
||||
else
|
||||
tegra_dvfs_set_rate_locked(c, 0);
|
||||
tegra_dvfs_set_rate(c, 0);
|
||||
} else if (clk_is_dvfs(c)) {
|
||||
tegra_dvfs_set_rate_locked(c, c->dvfs_rate);
|
||||
tegra_dvfs_set_rate(c, c->dvfs_rate);
|
||||
}
|
||||
clk_unlock_restore(c, flags);
|
||||
}
|
||||
|
||||
@@ -164,6 +164,5 @@ void tegra_clk_init_from_table(struct tegra_clk_init_table *table);
|
||||
void tegra_clk_set_dvfs_rates(void);
|
||||
void clk_set_cansleep(struct clk *c);
|
||||
unsigned long clk_get_rate_locked(struct clk *c);
|
||||
int tegra_dvfs_set_rate_locked(struct clk *c, unsigned long rate);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -178,7 +178,7 @@ __tegra_dvfs_set_rate(struct clk *c, struct dvfs *d, unsigned long rate)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int tegra_dvfs_set_rate_locked(struct clk *c, unsigned long rate)
|
||||
int tegra_dvfs_set_rate(struct clk *c, unsigned long rate)
|
||||
{
|
||||
struct dvfs *d;
|
||||
int ret = 0;
|
||||
@@ -204,6 +204,7 @@ int tegra_dvfs_set_rate_locked(struct clk *c, unsigned long rate)
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(tegra_dvfs_set_rate);
|
||||
|
||||
/* May only be called during clock init, does not take any locks on clock c. */
|
||||
int __init tegra_enable_dvfs_on_clk(struct clk *c, struct dvfs *d)
|
||||
|
||||
Reference in New Issue
Block a user