diff options
author | Alex Frid <afrid@nvidia.com> | 2012-07-10 23:26:03 -0700 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2013-09-14 12:13:57 -0700 |
commit | eb28d302807e2a65dd2e2acfc17a9971c0acf72c (patch) | |
tree | a510df53ef79497047897ba806835d5c3f5714ca | |
parent | b4e2dabb08156b2e333dbe94c9bc58cf162c4878 (diff) |
ARM: tegra11: clock: Replace cbus cross-mutex
Replaced cbus specific cross-mutex with generic cross-clock mutex.
Change-Id: Ifd5612ea2261a9c301270c0a10c80fab3006966b
Signed-off-by: Alex Frid <afrid@nvidia.com>
Reviewed-on: http://git-master/r/117248
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>
Rebase-Id: R8097f73b4f326d3b7ec00e96b88264b5d67084d4
-rw-r--r-- | arch/arm/mach-tegra/clock.h | 1 | ||||
-rw-r--r-- | arch/arm/mach-tegra/tegra11_clocks.c | 30 |
2 files changed, 6 insertions, 25 deletions
diff --git a/arch/arm/mach-tegra/clock.h b/arch/arm/mach-tegra/clock.h index 38ab923ef257..56e69092c33f 100644 --- a/arch/arm/mach-tegra/clock.h +++ b/arch/arm/mach-tegra/clock.h @@ -235,7 +235,6 @@ struct clk { struct clk *client; u32 client_div; enum shared_bus_users_mode mode; - struct mutex *cross_bus_mutex; } shared_bus_user; } u; diff --git a/arch/arm/mach-tegra/tegra11_clocks.c b/arch/arm/mach-tegra/tegra11_clocks.c index 5d695ff82508..084eddf0d646 100644 --- a/arch/arm/mach-tegra/tegra11_clocks.c +++ b/arch/arm/mach-tegra/tegra11_clocks.c @@ -4380,7 +4380,7 @@ static void tegra_clk_shared_bus_init(struct clk *c) * determine bus rate. Hence switching user from one parent/bus to another may * change rates of both parents. Therefore we need a cross-bus lock on top of * individual user and bus locks. For now limit bus switch support to cansleep - * users with cross-bus mutex only. + * users with cross-clock mutex only. */ static int tegra_clk_shared_bus_set_parent(struct clk *c, struct clk *p) { @@ -4392,8 +4392,7 @@ static int tegra_clk_shared_bus_set_parent(struct clk *c, struct clk *p) if (c->parent == p) return 0; - if (!(c->inputs && c->u.shared_bus_user.cross_bus_mutex && - clk_cansleep(c))) + if (!(c->inputs && c->cross_clk_mutex && clk_cansleep(c))) return -ENOSYS; for (sel = c->inputs; sel->input != NULL; sel++) { @@ -4403,7 +4402,6 @@ static int tegra_clk_shared_bus_set_parent(struct clk *c, struct clk *p) if (!sel->input) return -EINVAL; - mutex_lock(c->u.shared_bus_user.cross_bus_mutex); if (c->refcnt) clk_enable(p); @@ -4416,22 +4414,16 @@ static int tegra_clk_shared_bus_set_parent(struct clk *c, struct clk *p) clk_reparent(c, p); - mutex_unlock(c->u.shared_bus_user.cross_bus_mutex); return 0; } static int tegra_clk_shared_bus_set_rate(struct clk *c, unsigned long rate) { - if (c->u.shared_bus_user.cross_bus_mutex && clk_cansleep(c)) - mutex_lock(c->u.shared_bus_user.cross_bus_mutex); - c->u.shared_bus_user.rate = rate; tegra_clk_shared_bus_update(c->parent); - if (c->u.shared_bus_user.cross_bus_mutex && clk_cansleep(c)) { + if (c->cross_clk_mutex && clk_cansleep(c)) tegra_clk_shared_bus_migrate_users(c); - mutex_unlock(c->u.shared_bus_user.cross_bus_mutex); - } return 0; } @@ -4460,36 +4452,26 @@ static int tegra_clk_shared_bus_enable(struct clk *c) { int ret = 0; - if (c->u.shared_bus_user.cross_bus_mutex && clk_cansleep(c)) - mutex_lock(c->u.shared_bus_user.cross_bus_mutex); - c->u.shared_bus_user.enabled = true; tegra_clk_shared_bus_update(c->parent); if (c->u.shared_bus_user.client) ret = clk_enable(c->u.shared_bus_user.client); - if (c->u.shared_bus_user.cross_bus_mutex && clk_cansleep(c)) { + if (c->cross_clk_mutex && clk_cansleep(c)) tegra_clk_shared_bus_migrate_users(c); - mutex_unlock(c->u.shared_bus_user.cross_bus_mutex); - } return ret; } static void tegra_clk_shared_bus_disable(struct clk *c) { - if (c->u.shared_bus_user.cross_bus_mutex && clk_cansleep(c)) - mutex_lock(c->u.shared_bus_user.cross_bus_mutex); - if (c->u.shared_bus_user.client) clk_disable(c->u.shared_bus_user.client); c->u.shared_bus_user.enabled = false; tegra_clk_shared_bus_update(c->parent); - if (c->u.shared_bus_user.cross_bus_mutex && clk_cansleep(c)) { + if (c->cross_clk_mutex && clk_cansleep(c)) tegra_clk_shared_bus_migrate_users(c); - mutex_unlock(c->u.shared_bus_user.cross_bus_mutex); - } } static void tegra_clk_shared_bus_reset(struct clk *c, bool assert) @@ -5591,8 +5573,8 @@ static struct clk_mux_sel mux_clk_cbus[] = { .client_id = _id, \ .client_div = _div, \ .mode = _mode, \ - .cross_bus_mutex = &cbus_mutex, \ }, \ + .cross_clk_mutex = &cbus_mutex, \ } #else |