lkml.org 
[lkml]   [2013]   [May]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[Patch 3/3] clk: Avoid re-parenting orphan clk's having invalid parent index.
    Date
    From: Ambresh K <ambresh@ti.com>

    Add orhan clk nodes having invalid parent index to list and use
    the list to skip re-parenting orphan clk having invalid parents.

    Signed-off-by: Ambresh K <ambresh@ti.com>
    ---
    drivers/clk/clk.c | 21 +++++++++++++++++++--
    1 files changed, 19 insertions(+), 2 deletions(-)

    diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
    index f4d2c73..54d2aa3 100644
    --- a/drivers/clk/clk.c
    +++ b/drivers/clk/clk.c
    @@ -32,6 +32,7 @@ static int enable_refcnt;

    static HLIST_HEAD(clk_root_list);
    static HLIST_HEAD(clk_orphan_list);
    +static HLIST_HEAD(clk_orphan_invalid_parent);
    static LIST_HEAD(clk_notifier_list);

    /*** locking ***/
    @@ -1532,8 +1533,8 @@ EXPORT_SYMBOL_GPL(clk_set_parent);
    */
    int __clk_init(struct device *dev, struct clk *clk)
    {
    - int i, ret = 0;
    - struct clk *orphan;
    + int i, ret = 0, skip = 0;
    + struct clk *orphan, *has_invalid_parent;
    struct hlist_node *tmp2;

    if (!clk)
    @@ -1639,11 +1640,27 @@ int __clk_init(struct device *dev, struct clk *clk)
    if (!strcmp(clk->name, orphan->name))
    continue;

    + /* Skip iteration if orphan has invalid parent */
    + hlist_for_each_entry(has_invalid_parent,
    + &clk_orphan_invalid_parent, child_node) {
    + if (!strcmp(orphan->name, has_invalid_parent->name)) {
    + skip = 1;
    + break;
    + }
    + }
    +
    + if (skip) {
    + skip = 0;
    + continue;
    + }
    +
    if (orphan->ops->get_parent) {
    i = orphan->ops->get_parent(orphan->hw);
    if (i < 0) {
    pr_err("%s: orphan clk(%s) invalid parent\n",
    __func__, orphan->name);
    + hlist_add_head(&orphan->child_node,
    + &clk_orphan_invalid_parent);
    continue;
    }
    if (!strcmp(clk->name, orphan->parent_names[i]))
    --
    1.7.4.1


    \
     
     \ /
      Last update: 2013-05-02 09:21    [W:5.978 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site