From a43fa7f04a228ea476ba1e58907f8bbdf6c01f27 Mon Sep 17 00:00:00 2001 From: Sekhar Nori Date: Mon, 31 Aug 2009 15:48:01 +0530 Subject: [PATCH] --- yaml --- r: 173307 b: refs/heads/master c: f02bf3b396846f3da60b4962aeaae8652e20f0dd h: refs/heads/master i: 173305: cf8ff7b3b1a91237e3296a8f883e14e716ee165e 173303: 4eadc4ad403c57f6465c4b1e365cb5a0b0eb9a0d v: v3 --- [refs] | 2 +- trunk/arch/arm/mach-davinci/clock.c | 10 +++++++--- trunk/arch/arm/mach-davinci/clock.h | 2 ++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index bc90c9ec0cc6..6b199a1a9ce8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: cd87444802ddceaa2259bc5ac48c1d2e42a99a3f +refs/heads/master: f02bf3b396846f3da60b4962aeaae8652e20f0dd diff --git a/trunk/arch/arm/mach-davinci/clock.c b/trunk/arch/arm/mach-davinci/clock.c index 83d54d50b5ea..f8c4ef08fbc2 100644 --- a/trunk/arch/arm/mach-davinci/clock.c +++ b/trunk/arch/arm/mach-davinci/clock.c @@ -123,8 +123,12 @@ int clk_register(struct clk *clk) clk->name, clk->parent->name)) return -EINVAL; + INIT_LIST_HEAD(&clk->children); + mutex_lock(&clocks_mutex); list_add_tail(&clk->node, &clocks); + if (clk->parent) + list_add_tail(&clk->childnode, &clk->parent->children); mutex_unlock(&clocks_mutex); /* If rate is already set, use it */ @@ -146,6 +150,7 @@ void clk_unregister(struct clk *clk) mutex_lock(&clocks_mutex); list_del(&clk->node); + list_del(&clk->childnode); mutex_unlock(&clocks_mutex); } EXPORT_SYMBOL(clk_unregister); @@ -352,9 +357,8 @@ dump_clock(struct seq_file *s, unsigned nest, struct clk *parent) /* REVISIT show device associations too */ /* cost is now small, but not linear... */ - list_for_each_entry(clk, &clocks, node) { - if (clk->parent == parent) - dump_clock(s, nest + NEST_DELTA, clk); + list_for_each_entry(clk, &parent->children, childnode) { + dump_clock(s, nest + NEST_DELTA, clk); } } diff --git a/trunk/arch/arm/mach-davinci/clock.h b/trunk/arch/arm/mach-davinci/clock.h index 27233cb4a2fb..f88794d7446e 100644 --- a/trunk/arch/arm/mach-davinci/clock.h +++ b/trunk/arch/arm/mach-davinci/clock.h @@ -69,6 +69,8 @@ struct clk { u8 lpsc; u8 psc_ctlr; struct clk *parent; + struct list_head children; /* list of children */ + struct list_head childnode; /* parent's child list node */ struct pll_data *pll_data; u32 div_reg; };