diff options
author | Ingo Molnar <mingo@kernel.org> | 2015-06-02 02:05:42 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2015-06-02 02:05:42 -0400 |
commit | f407a8258610169cd8e975dba7f0b2824562014c (patch) | |
tree | 6c87b2d168a4665411a9e16b9f481599f2db25bc /drivers/clk/clk.c | |
parent | 960d447b94b22ceba286917056871d1dac8da697 (diff) | |
parent | c46a024ea5eb0165114dbbc8c82c29b7bcf66e71 (diff) |
Merge branch 'linus' into sched/core, to resolve conflict
Conflicts:
arch/sparc/include/asm/topology_64.h
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'drivers/clk/clk.c')
-rw-r--r-- | drivers/clk/clk.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index 459ce9da13e0..5b0f41868b42 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c | |||
@@ -1475,8 +1475,10 @@ static struct clk_core *__clk_set_parent_before(struct clk_core *clk, | |||
1475 | */ | 1475 | */ |
1476 | if (clk->prepare_count) { | 1476 | if (clk->prepare_count) { |
1477 | clk_core_prepare(parent); | 1477 | clk_core_prepare(parent); |
1478 | flags = clk_enable_lock(); | ||
1478 | clk_core_enable(parent); | 1479 | clk_core_enable(parent); |
1479 | clk_core_enable(clk); | 1480 | clk_core_enable(clk); |
1481 | clk_enable_unlock(flags); | ||
1480 | } | 1482 | } |
1481 | 1483 | ||
1482 | /* update the clk tree topology */ | 1484 | /* update the clk tree topology */ |
@@ -1491,13 +1493,17 @@ static void __clk_set_parent_after(struct clk_core *core, | |||
1491 | struct clk_core *parent, | 1493 | struct clk_core *parent, |
1492 | struct clk_core *old_parent) | 1494 | struct clk_core *old_parent) |
1493 | { | 1495 | { |
1496 | unsigned long flags; | ||
1497 | |||
1494 | /* | 1498 | /* |
1495 | * Finish the migration of prepare state and undo the changes done | 1499 | * Finish the migration of prepare state and undo the changes done |
1496 | * for preventing a race with clk_enable(). | 1500 | * for preventing a race with clk_enable(). |
1497 | */ | 1501 | */ |
1498 | if (core->prepare_count) { | 1502 | if (core->prepare_count) { |
1503 | flags = clk_enable_lock(); | ||
1499 | clk_core_disable(core); | 1504 | clk_core_disable(core); |
1500 | clk_core_disable(old_parent); | 1505 | clk_core_disable(old_parent); |
1506 | clk_enable_unlock(flags); | ||
1501 | clk_core_unprepare(old_parent); | 1507 | clk_core_unprepare(old_parent); |
1502 | } | 1508 | } |
1503 | } | 1509 | } |
@@ -1525,8 +1531,10 @@ static int __clk_set_parent(struct clk_core *clk, struct clk_core *parent, | |||
1525 | clk_enable_unlock(flags); | 1531 | clk_enable_unlock(flags); |
1526 | 1532 | ||
1527 | if (clk->prepare_count) { | 1533 | if (clk->prepare_count) { |
1534 | flags = clk_enable_lock(); | ||
1528 | clk_core_disable(clk); | 1535 | clk_core_disable(clk); |
1529 | clk_core_disable(parent); | 1536 | clk_core_disable(parent); |
1537 | clk_enable_unlock(flags); | ||
1530 | clk_core_unprepare(parent); | 1538 | clk_core_unprepare(parent); |
1531 | } | 1539 | } |
1532 | return ret; | 1540 | return ret; |