All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <1494594482.2135.1.camel@baylibre.com>

diff --git a/a/1.txt b/N1/1.txt
index 2eae685..e37d838 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -9,74 +9,74 @@ On Thu, 2017-05-11 at 12:05 -0700, Michael Turquette wrote:
 > > 
 > > Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
 > > ---
-> > ?drivers/clk/clk.c????????????| 177
+> >  drivers/clk/clk.c            | 177
 > > ++++++++++++++++++++++++++++++++++++++++---
-> > ?include/linux/clk-provider.h |???1 +
-> > ?include/linux/clk.h??????????|??29 +++++++
-> > ?3 files changed, 197 insertions(+), 10 deletions(-)
+> >  include/linux/clk-provider.h |   1 +
+> >  include/linux/clk.h          |  29 +++++++
+> >  3 files changed, 197 insertions(+), 10 deletions(-)
 > > 
 > > diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
 > > index fa77a1841e0f..69db8cc15063 100644
 > > --- a/drivers/clk/clk.c
 > > +++ b/drivers/clk/clk.c
 > > @@ -60,6 +60,7 @@ struct clk_core {
-> > ????????bool????????????????????orphan;
-> > ????????unsigned int????????????enable_count;
-> > ????????unsigned int????????????prepare_count;
-> > +???????unsigned int????????????protect_count;
-> > ????????unsigned long???????????min_rate;
-> > ????????unsigned long???????????max_rate;
-> > ????????unsigned long???????????accuracy;
+> >         bool                    orphan;
+> >         unsigned int            enable_count;
+> >         unsigned int            prepare_count;
+> > +       unsigned int            protect_count;
+> >         unsigned long           min_rate;
+> >         unsigned long           max_rate;
+> >         unsigned long           accuracy;
 > > @@ -84,6 +85,7 @@ struct clk {
-> > ????????const char *con_id;
-> > ????????unsigned long min_rate;
-> > ????????unsigned long max_rate;
-> > +???????unsigned long protect_ucount;
-> > ????????struct hlist_node clks_node;
-> > ?};
-> > ?
+> >         const char *con_id;
+> >         unsigned long min_rate;
+> >         unsigned long max_rate;
+> > +       unsigned long protect_ucount;
+> >         struct hlist_node clks_node;
+> >  };
+> >  
 > > @@ -160,6 +162,11 @@ static bool clk_core_is_prepared(struct clk_core *core)
-> > ????????return core->ops->is_prepared(core->hw);
-> > ?}
-> > ?
+> >         return core->ops->is_prepared(core->hw);
+> >  }
+> >  
 > > +static bool clk_core_is_protected(struct clk_core *core)
 > > +{
-> > +???????return core->protect_count;
+> > +       return core->protect_count;
 > > +}
 > > +
-> > ?static bool clk_core_is_enabled(struct clk_core *core)
-> > ?{
-> > ????????/*
+> >  static bool clk_core_is_enabled(struct clk_core *core)
+> >  {
+> >         /*
 > > @@ -328,6 +335,11 @@ bool clk_hw_is_prepared(const struct clk_hw *hw)
-> > ????????return clk_core_is_prepared(hw->core);
-> > ?}
-> > ?
+> >         return clk_core_is_prepared(hw->core);
+> >  }
+> >  
 > > +bool clk_hw_is_protected(const struct clk_hw *hw)
 > > +{
-> > +???????return clk_core_is_protected(hw->core);
+> > +       return clk_core_is_protected(hw->core);
 > > +}
 > > +
-> > ?bool clk_hw_is_enabled(const struct clk_hw *hw)
-> > ?{
-> > ????????return clk_core_is_enabled(hw->core);
+> >  bool clk_hw_is_enabled(const struct clk_hw *hw)
+> >  {
+> >         return clk_core_is_enabled(hw->core);
 > > @@ -584,6 +596,89 @@ int clk_prepare(struct clk *clk)
-> > ?}
-> > ?EXPORT_SYMBOL_GPL(clk_prepare);
-> > ?
+> >  }
+> >  EXPORT_SYMBOL_GPL(clk_prepare);
+> >  
 > > +static void clk_core_unprotect(struct clk_core *core)
 > > +{
-> > +???????lockdep_assert_held(&prepare_lock);
+> > +       lockdep_assert_held(&prepare_lock);
 > > +
-> > +???????if (!core)
-> > +???????????????return;
+> > +       if (!core)
+> > +               return;
 > > +
-> > +???????if (WARN_ON(core->protect_count == 0))
-> > +???????????????return;
+> > +       if (WARN_ON(core->protect_count == 0))
+> > +               return;
 > > +
-> > +???????if (--core->protect_count > 0)
-> > +???????????????return;
+> > +       if (--core->protect_count > 0)
+> > +               return;
 > > +
-> > +???????clk_core_unprotect(core->parent);
+> > +       clk_core_unprotect(core->parent);
 > > +}
 > > +
 > > +/**
@@ -114,38 +114,38 @@ Like it ! Thx !
 > > + */
 > > +void clk_unprotect(struct clk *clk)
 > > +{
-> > +???????if (!clk)
-> > +???????????????return;
+> > +       if (!clk)
+> > +               return;
 > > +
-> > +???????clk_prepare_lock();
+> > +       clk_prepare_lock();
 > > +
-> > +???????if (WARN_ON(clk->protect_ucount <= 0)) {
-> > +???????????????/*
-> > +????????????????* There is something wrong with this consumer protect
+> > +       if (WARN_ON(clk->protect_ucount <= 0)) {
+> > +               /*
+> > +                * There is something wrong with this consumer protect
 > > count.
-> > +????????????????* Stop here before messing with the provider
-> > +????????????????*/
-> > +???????????????clk_prepare_unlock();
-> > +???????????????return;
-> > +???????}
-> > +
-> > +???????clk_core_unprotect(clk->core);
-> > +???????clk->protect_ucount--;
-> > +???????clk_prepare_unlock();
+> > +                * Stop here before messing with the provider
+> > +                */
+> > +               clk_prepare_unlock();
+> > +               return;
+> > +       }
+> > +
+> > +       clk_core_unprotect(clk->core);
+> > +       clk->protect_ucount--;
+> > +       clk_prepare_unlock();
 > > +}
 > > +EXPORT_SYMBOL_GPL(clk_unprotect);
 > > +
 > > +static void clk_core_protect(struct clk_core *core)
 > > +{
-> > +???????lockdep_assert_held(&prepare_lock);
+> > +       lockdep_assert_held(&prepare_lock);
 > > +
-> > +???????if (!core)
-> > +???????????????return;
+> > +       if (!core)
+> > +               return;
 > > +
-> > +???????if (core->protect_count == 0)
-> > +???????????????clk_core_protect(core->parent);
+> > +       if (core->protect_count == 0)
+> > +               clk_core_protect(core->parent);
 > > +
-> > +???????core->protect_count++;
+> > +       core->protect_count++;
 > > +}
 > > +
 > > +/**
@@ -183,27 +183,27 @@ Like it ! Thx !
 > 
 > > +void clk_protect(struct clk *clk)
 > > +{
-> > +???????if (!clk)
-> > +???????????????return;
+> > +       if (!clk)
+> > +               return;
 > > +
-> > +???????clk_prepare_lock();
-> > +???????clk_core_protect(clk->core);
-> > +???????clk->protect_ucount++;
-> > +???????clk_prepare_unlock();
+> > +       clk_prepare_lock();
+> > +       clk_core_protect(clk->core);
+> > +       clk->protect_ucount++;
+> > +       clk_prepare_unlock();
 > > +}
 > > +EXPORT_SYMBOL_GPL(clk_protect);
 > > +
-> > ?static void clk_core_disable(struct clk_core *core)
-> > ?{
-> > ????????lockdep_assert_held(&enable_lock);
+> >  static void clk_core_disable(struct clk_core *core)
+> >  {
+> >         lockdep_assert_held(&enable_lock);
 > > @@ -838,7 +933,9 @@ static int clk_core_determine_round(struct clk_core
 > > *core,
-> > ?{
-> > ????????long rate;
-> > ?
-> > -???????if (core->ops->determine_rate) {
-> > +???????if (clk_core_is_protected(core)) {
-> > +???????????????req->rate = core->rate;
+> >  {
+> >         long rate;
+> >  
+> > -       if (core->ops->determine_rate) {
+> > +       if (clk_core_is_protected(core)) {
+> > +               req->rate = core->rate;
 > 
 > Hmm, in CCF we basically re-use round_rate/determine_rate from within
 > calls to clk_set_rate. The point is that clk_set_rate should set the
@@ -234,17 +234,17 @@ I may be wrong but I think it is already the way you want it. Please see below
 [0]
 
 > 
-> > +???????} else if (core->ops->determine_rate) {
-> > ????????????????return core->ops->determine_rate(core->hw, req);
-> > ????????} else if (core->ops->round_rate) {
-> > ????????????????rate = core->ops->round_rate(core->hw, req->rate,
+> > +       } else if (core->ops->determine_rate) {
+> >                 return core->ops->determine_rate(core->hw, req);
+> >         } else if (core->ops->round_rate) {
+> >                 rate = core->ops->round_rate(core->hw, req->rate,
 > > @@ -1381,7 +1478,7 @@ static struct clk_core *clk_calc_new_rates(struct
 > > clk_core *core,
-> > ????????????????req.min_rate = min_rate;
-> > ????????????????req.max_rate = max_rate;
-> > ?
-> > -???????????????clk_core_init_rate_req(core, req);
-> > +???????????????clk_core_init_rate_req(core, &req);
+> >                 req.min_rate = min_rate;
+> >                 req.max_rate = max_rate;
+> >  
+> > -               clk_core_init_rate_req(core, req);
+> > +               clk_core_init_rate_req(core, &req);
 > 
 > Why isn't this change in patch #3? Seems like a bug introduced in patch
 > #3 and fixed here in patch #4.
@@ -252,12 +252,12 @@ I may be wrong but I think it is already the way you want it. Please see below
 Indeed, I messed up while formatting the patches :(
 
 > 
-> > ?
-> > ????????????????ret = clk_core_determine_round(core, &req);
-> > ????????????????if (ret < 0)
+> >  
+> >                 ret = clk_core_determine_round(core, &req);
+> >                 if (ret < 0)
 > > @@ -1637,8 +1734,14 @@ int clk_set_rate(struct clk *clk, unsigned long rate)
-> > ????????/* prevent racing with updates to the clock topology */
-> > ????????clk_prepare_lock();
+> >         /* prevent racing with updates to the clock topology */
+> >         clk_prepare_lock();
 > 
 > The fact that a user can protect a clk AND change its rate is very
 > subtle. Please update the kerneldoc for clk_set_rate, clk_set_parent and
@@ -266,9 +266,9 @@ Indeed, I messed up while formatting the patches :(
 Will do
 
 > 
-> > ?
-> > +???????if (clk->protect_ucount)
-> > +???????????????clk_core_unprotect(clk->core);
+> >  
+> > +       if (clk->protect_ucount)
+> > +               clk_core_unprotect(clk->core);
 > 
 > What happens here if two different users have both protected this same
 > clk? Looks like we ignore the second user?
@@ -288,8 +288,8 @@ temporarily decremented by 1. It is safe to do so because we are holding the
 prepare_lock.
 
 When we get to 
-+???????if (clk_core_is_protected(core)) {
-+???????????????req->rate = core->rate;
++       if (clk_core_is_protected(core)) {
++               req->rate = core->rate;
 
 Either the clock was only protected by the calling consumer, *and only once*,
 then the protection has been temporarily removed, test is false and the usual
@@ -320,210 +320,210 @@ Jerome
 > Mike
 > 
 > > +
-> > ????????ret = clk_core_set_rate_nolock(clk->core, rate);
-> > ?
-> > +???????if (clk->protect_ucount)
-> > +???????????????clk_core_protect(clk->core);
+> >         ret = clk_core_set_rate_nolock(clk->core, rate);
+> >  
+> > +       if (clk->protect_ucount)
+> > +               clk_core_protect(clk->core);
 > > +
-> > ????????clk_prepare_unlock();
-> > ?
-> > ????????return ret;
+> >         clk_prepare_unlock();
+> >  
+> >         return ret;
 > > @@ -1669,12 +1772,18 @@ int clk_set_rate_range(struct clk *clk, unsigned
 > > long min, unsigned long max)
-> > ?
-> > ????????clk_prepare_lock();
-> > ?
-> > +???????if (clk->protect_ucount)
-> > +???????????????clk_core_unprotect(clk->core);
-> > +
-> > ????????if (min != clk->min_rate || max != clk->max_rate) {
-> > ????????????????clk->min_rate = min;
-> > ????????????????clk->max_rate = max;
-> > ????????????????ret = clk_core_set_rate_nolock(clk->core, clk->core-
+> >  
+> >         clk_prepare_lock();
+> >  
+> > +       if (clk->protect_ucount)
+> > +               clk_core_unprotect(clk->core);
+> > +
+> >         if (min != clk->min_rate || max != clk->max_rate) {
+> >                 clk->min_rate = min;
+> >                 clk->max_rate = max;
+> >                 ret = clk_core_set_rate_nolock(clk->core, clk->core-
 > > >req_rate);
-> > ????????}
-> > ?
-> > +???????if (clk->protect_ucount)
-> > +???????????????clk_core_protect(clk->core);
-> > +
-> > ????????clk_prepare_unlock();
-> > ?
-> > ????????return ret;
+> >         }
+> >  
+> > +       if (clk->protect_ucount)
+> > +               clk_core_protect(clk->core);
+> > +
+> >         clk_prepare_unlock();
+> >  
+> >         return ret;
 > > @@ -1815,6 +1924,9 @@ static int clk_core_set_parent(struct clk_core *core,
 > > struct clk_core *parent)
-> > ????????if ((core->flags & CLK_SET_PARENT_GATE) && core->prepare_count)
-> > ????????????????return -EBUSY;
-> > ?
-> > +???????if (clk_core_is_protected(core))
-> > +???????????????return -EBUSY;
-> > +
-> > ????????/* try finding the new parent index */
-> > ????????if (parent) {
-> > ????????????????p_index = clk_fetch_parent_index(core, parent);
+> >         if ((core->flags & CLK_SET_PARENT_GATE) && core->prepare_count)
+> >                 return -EBUSY;
+> >  
+> > +       if (clk_core_is_protected(core))
+> > +               return -EBUSY;
+> > +
+> >         /* try finding the new parent index */
+> >         if (parent) {
+> >                 p_index = clk_fetch_parent_index(core, parent);
 > > @@ -1878,11 +1990,24 @@ static int clk_core_set_parent_lock(struct clk_core
 > > *core,
-> > ? */
-> > ?int clk_set_parent(struct clk *clk, struct clk *parent)
-> > ?{
-> > +???????int ret;
+> >   */
+> >  int clk_set_parent(struct clk *clk, struct clk *parent)
+> >  {
+> > +       int ret;
 > > +
-> > ????????if (!clk)
-> > ????????????????return 0;
-> > ?
-> > -???????return clk_core_set_parent_lock(clk->core,
-> > -???????????????????????????????????????parent ? parent->core : NULL);
-> > +???????clk_prepare_lock();
+> >         if (!clk)
+> >                 return 0;
+> >  
+> > -       return clk_core_set_parent_lock(clk->core,
+> > -                                       parent ? parent->core : NULL);
+> > +       clk_prepare_lock();
 > > +
-> > +???????if (clk->protect_ucount)
-> > +???????????????clk_core_unprotect(clk->core);
+> > +       if (clk->protect_ucount)
+> > +               clk_core_unprotect(clk->core);
 > > +
-> > +???????ret = clk_core_set_parent(clk->core, parent ? parent->core : NULL);
+> > +       ret = clk_core_set_parent(clk->core, parent ? parent->core : NULL);
 > > +
-> > +???????if (clk->protect_ucount)
-> > +???????????????clk_core_protect(clk->core);
+> > +       if (clk->protect_ucount)
+> > +               clk_core_protect(clk->core);
 > > +
-> > +???????clk_prepare_unlock();
+> > +       clk_prepare_unlock();
 > > +
-> > +???????return ret;
-> > ?}
-> > ?EXPORT_SYMBOL_GPL(clk_set_parent);
-> > ?
+> > +       return ret;
+> >  }
+> >  EXPORT_SYMBOL_GPL(clk_set_parent);
+> >  
 > > @@ -1893,7 +2018,10 @@ static int clk_core_set_phase(struct clk_core *core,
 > > int degrees)
-> > ????????if (!core)
-> > ????????????????return 0;
-> > ?
-> > -???????trace_clk_set_phase(clk->core, degrees);
-> > +???????if (clk_core_is_protected(core))
-> > +???????????????return -EBUSY;
-> > +
-> > +???????trace_clk_set_phase(core, degrees);
-> > ?
-> > ????????if (core->ops->set_phase)
-> > ????????????????ret = core->ops->set_phase(core->hw, degrees);
+> >         if (!core)
+> >                 return 0;
+> >  
+> > -       trace_clk_set_phase(clk->core, degrees);
+> > +       if (clk_core_is_protected(core))
+> > +               return -EBUSY;
+> > +
+> > +       trace_clk_set_phase(core, degrees);
+> >  
+> >         if (core->ops->set_phase)
+> >                 ret = core->ops->set_phase(core->hw, degrees);
 > > @@ -1936,7 +2064,15 @@ int clk_set_phase(struct clk *clk, int degrees)
-> > ????????????????degrees += 360;
-> > ?
-> > ????????clk_prepare_lock();
+> >                 degrees += 360;
+> >  
+> >         clk_prepare_lock();
 > > +
-> > +???????if (clk->protect_ucount)
-> > +???????????????clk_core_unprotect(clk->core);
+> > +       if (clk->protect_ucount)
+> > +               clk_core_unprotect(clk->core);
 > > +
-> > ????????ret = clk_core_set_phase(clk->core, degrees);
+> >         ret = clk_core_set_phase(clk->core, degrees);
 > > +
-> > +???????if (clk->protect_ucount)
-> > +???????????????clk_core_protect(clk->core);
+> > +       if (clk->protect_ucount)
+> > +               clk_core_protect(clk->core);
 > > +
-> > ????????clk_prepare_unlock();
-> > ?
-> > ????????return ret;
+> >         clk_prepare_unlock();
+> >  
+> >         return ret;
 > > @@ -2023,11 +2159,12 @@ static void clk_summary_show_one(struct seq_file *s,
 > > struct clk_core *c,
-> > ????????if (!c)
-> > ????????????????return;
-> > ?
-> > -???????seq_printf(s, "%*s%-*s %11d %12d %11lu %10lu %-3d\n",
-> > +???????seq_printf(s, "%*s%-*s %11d %12d %12d %11lu %10lu %-3d\n",
-> > ???????????????????level * 3 + 1, "",
-> > ???????????????????30 - level * 3, c->name,
-> > -??????????????????c->enable_count, c->prepare_count, clk_core_get_rate(c),
-> > -??????????????????clk_core_get_accuracy(c), clk_core_get_phase(c));
-> > +??????????????????c->enable_count, c->prepare_count, c->protect_count,
-> > +??????????????????clk_core_get_rate(c), clk_core_get_accuracy(c),
-> > +??????????????????clk_core_get_phase(c));
-> > ?}
-> > ?
-> > ?static void clk_summary_show_subtree(struct seq_file *s, struct clk_core
+> >         if (!c)
+> >                 return;
+> >  
+> > -       seq_printf(s, "%*s%-*s %11d %12d %11lu %10lu %-3d\n",
+> > +       seq_printf(s, "%*s%-*s %11d %12d %12d %11lu %10lu %-3d\n",
+> >                    level * 3 + 1, "",
+> >                    30 - level * 3, c->name,
+> > -                  c->enable_count, c->prepare_count, clk_core_get_rate(c),
+> > -                  clk_core_get_accuracy(c), clk_core_get_phase(c));
+> > +                  c->enable_count, c->prepare_count, c->protect_count,
+> > +                  clk_core_get_rate(c), clk_core_get_accuracy(c),
+> > +                  clk_core_get_phase(c));
+> >  }
+> >  
+> >  static void clk_summary_show_subtree(struct seq_file *s, struct clk_core
 > > *c,
 > > @@ -2049,8 +2186,8 @@ static int clk_summary_show(struct seq_file *s, void
 > > *data)
-> > ????????struct clk_core *c;
-> > ????????struct hlist_head **lists = (struct hlist_head **)s->private;
-> > ?
-> > -???????seq_puts(s,
-> > "???clock?????????????????????????enable_cnt??prepare_cnt????????rate???accu
-> > racy???phase\n");
-> > -???????seq_puts(s, "-------------------------------------------------------
+> >         struct clk_core *c;
+> >         struct hlist_head **lists = (struct hlist_head **)s->private;
+> >  
+> > -       seq_puts(s,
+> > "   clock                         enable_cnt  prepare_cnt        rate   accu
+> > racy   phase\n");
+> > -       seq_puts(s, "-------------------------------------------------------
 > > ---------------------------------\n");
-> > +???????seq_puts(s,
-> > "???clock?????????????????????????enable_cnt??prepare_cnt??protect_cnt??????
-> > ??rate???accuracy???phase\n");
-> > +???????seq_puts(s, "-------------------------------------------------------
+> > +       seq_puts(s,
+> > "   clock                         enable_cnt  prepare_cnt  protect_cnt      
+> >   rate   accuracy   phase\n");
+> > +       seq_puts(s, "-------------------------------------------------------
 > > ---------------------------------------------\n");
-> > ?
-> > ????????clk_prepare_lock();
-> > ?
+> >  
+> >         clk_prepare_lock();
+> >  
 > > @@ -2085,6 +2222,7 @@ static void clk_dump_one(struct seq_file *s, struct
 > > clk_core *c, int level)
-> > ????????seq_printf(s, "\"%s\": { ", c->name);
-> > ????????seq_printf(s, "\"enable_count\": %d,", c->enable_count);
-> > ????????seq_printf(s, "\"prepare_count\": %d,", c->prepare_count);
-> > +???????seq_printf(s, "\"protect_count\": %d,", c->protect_count);
-> > ????????seq_printf(s, "\"rate\": %lu,", clk_core_get_rate(c));
-> > ????????seq_printf(s, "\"accuracy\": %lu,", clk_core_get_accuracy(c));
-> > ????????seq_printf(s, "\"phase\": %d", clk_core_get_phase(c));
+> >         seq_printf(s, "\"%s\": { ", c->name);
+> >         seq_printf(s, "\"enable_count\": %d,", c->enable_count);
+> >         seq_printf(s, "\"prepare_count\": %d,", c->prepare_count);
+> > +       seq_printf(s, "\"protect_count\": %d,", c->protect_count);
+> >         seq_printf(s, "\"rate\": %lu,", clk_core_get_rate(c));
+> >         seq_printf(s, "\"accuracy\": %lu,", clk_core_get_accuracy(c));
+> >         seq_printf(s, "\"phase\": %d", clk_core_get_phase(c));
 > > @@ -2191,6 +2329,11 @@ static int clk_debug_create_one(struct clk_core
 > > *core, struct dentry *pdentry)
-> > ????????if (!d)
-> > ????????????????goto err_out;
-> > ?
-> > +???????d = debugfs_create_u32("clk_protect_count", S_IRUGO, core->dentry,
-> > +???????????????????????(u32 *)&core->protect_count);
-> > +???????if (!d)
-> > +???????????????goto err_out;
-> > +
-> > ????????d = debugfs_create_u32("clk_notifier_count", S_IRUGO, core->dentry,
-> > ????????????????????????(u32 *)&core->notifier_count);
-> > ????????if (!d)
+> >         if (!d)
+> >                 goto err_out;
+> >  
+> > +       d = debugfs_create_u32("clk_protect_count", S_IRUGO, core->dentry,
+> > +                       (u32 *)&core->protect_count);
+> > +       if (!d)
+> > +               goto err_out;
+> > +
+> >         d = debugfs_create_u32("clk_notifier_count", S_IRUGO, core->dentry,
+> >                         (u32 *)&core->notifier_count);
+> >         if (!d)
 > > @@ -2747,6 +2890,11 @@ void clk_unregister(struct clk *clk)
-> > ????????if (clk->core->prepare_count)
-> > ????????????????pr_warn("%s: unregistering prepared clock: %s\n",
-> > ????????????????????????????????????????__func__, clk->core->name);
+> >         if (clk->core->prepare_count)
+> >                 pr_warn("%s: unregistering prepared clock: %s\n",
+> >                                         __func__, clk->core->name);
 > > +
-> > +???????if (clk->core->protect_count)
-> > +???????????????pr_warn("%s: unregistering protected clock: %s\n",
-> > +???????????????????????????????????????__func__, clk->core->name);
+> > +       if (clk->core->protect_count)
+> > +               pr_warn("%s: unregistering protected clock: %s\n",
+> > +                                       __func__, clk->core->name);
 > > +
-> > ????????kref_put(&clk->core->ref, __clk_release);
-> > ?unlock:
-> > ????????clk_prepare_unlock();
+> >         kref_put(&clk->core->ref, __clk_release);
+> >  unlock:
+> >         clk_prepare_unlock();
 > > @@ -2905,6 +3053,15 @@ void __clk_put(struct clk *clk)
-> > ?
-> > ????????clk_prepare_lock();
-> > ?
-> > +???????/* Protect count not balanced: warn and sanitize */
-> > +???????if (clk->protect_ucount) {
-> > +???????????????pr_warn("%s: releasing protected clock: %s\n",
-> > +???????????????????????????????????????__func__, clk->core->name);
-> > +
-> > +???????????????for (; clk->protect_ucount; clk->protect_ucount--)
-> > +???????????????????????clk_core_unprotect(clk->core);
-> > +???????}
-> > +
-> > ????????hlist_del(&clk->clks_node);
-> > ????????if (clk->min_rate > clk->core->req_rate ||
-> > ????????????clk->max_rate < clk->core->req_rate)
+> >  
+> >         clk_prepare_lock();
+> >  
+> > +       /* Protect count not balanced: warn and sanitize */
+> > +       if (clk->protect_ucount) {
+> > +               pr_warn("%s: releasing protected clock: %s\n",
+> > +                                       __func__, clk->core->name);
+> > +
+> > +               for (; clk->protect_ucount; clk->protect_ucount--)
+> > +                       clk_core_unprotect(clk->core);
+> > +       }
+> > +
+> >         hlist_del(&clk->clks_node);
+> >         if (clk->min_rate > clk->core->req_rate ||
+> >             clk->max_rate < clk->core->req_rate)
 > > diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h
 > > index a428aec36ace..705a158d9b8f 100644
 > > --- a/include/linux/clk-provider.h
 > > +++ b/include/linux/clk-provider.h
 > > @@ -739,6 +739,7 @@ unsigned long clk_hw_get_rate(const struct clk_hw *hw);
-> > ?unsigned long __clk_get_flags(struct clk *clk);
-> > ?unsigned long clk_hw_get_flags(const struct clk_hw *hw);
-> > ?bool clk_hw_is_prepared(const struct clk_hw *hw);
+> >  unsigned long __clk_get_flags(struct clk *clk);
+> >  unsigned long clk_hw_get_flags(const struct clk_hw *hw);
+> >  bool clk_hw_is_prepared(const struct clk_hw *hw);
 > > +bool clk_hw_is_protected(const struct clk_hw *hw);
-> > ?bool clk_hw_is_enabled(const struct clk_hw *hw);
-> > ?bool __clk_is_enabled(struct clk *clk);
-> > ?struct clk *__clk_lookup(const char *name);
+> >  bool clk_hw_is_enabled(const struct clk_hw *hw);
+> >  bool __clk_is_enabled(struct clk *clk);
+> >  struct clk *__clk_lookup(const char *name);
 > > diff --git a/include/linux/clk.h b/include/linux/clk.h
 > > index e9d36b3e49de..90b72ead4411 100644
 > > --- a/include/linux/clk.h
 > > +++ b/include/linux/clk.h
 > > @@ -265,6 +265,30 @@ struct clk *devm_clk_get(struct device *dev, const char
 > > *id);
-> > ? */
-> > ?struct clk *devm_get_clk_from_child(struct device *dev,
-> > ????????????????????????????????????struct device_node *np, const char
+> >   */
+> >  struct clk *devm_get_clk_from_child(struct device *dev,
+> >                                     struct device_node *np, const char
 > > *con_id);
 > > +/**
 > > + * clk_protect - inform the system when the clock source should be
@@ -552,21 +552,21 @@ Jerome
 > > + * Must not be called from within atomic context.
 > > + */
 > > +void clk_unprotect(struct clk *clk);
-> > ?
-> > ?/**
-> > ? * clk_enable - inform the system when the clock source should be running.
+> >  
+> >  /**
+> >   * clk_enable - inform the system when the clock source should be running.
 > > @@ -460,6 +484,11 @@ static inline void clk_put(struct clk *clk) {}
-> > ?
-> > ?static inline void devm_clk_put(struct device *dev, struct clk *clk) {}
-> > ?
+> >  
+> >  static inline void devm_clk_put(struct device *dev, struct clk *clk) {}
+> >  
 > > +
 > > +static inline void clk_protect(struct clk *clk) {}
 > > +
 > > +static inline void clk_unprotect(struct clk *clk) {}
 > > +
-> > ?static inline int clk_enable(struct clk *clk)
-> > ?{
-> > ????????return 0;
-> > --?
+> >  static inline int clk_enable(struct clk *clk)
+> >  {
+> >         return 0;
+> > -- 
 > > 2.9.3
 > >
diff --git a/a/content_digest b/N1/content_digest
index 334f583..1778900 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -1,10 +1,14 @@
  "ref\020170321183330.26722-1-jbrunet@baylibre.com\0"
  "ref\020170321183330.26722-5-jbrunet@baylibre.com\0"
  "ref\0149452951146.81039.10685895856154834071@resonance\0"
- "From\0jbrunet@baylibre.com (Jerome Brunet)\0"
- "Subject\0[RFC 4/7] clk: add support for clock protection\0"
+ "From\0Jerome Brunet <jbrunet@baylibre.com>\0"
+ "Subject\0Re: [RFC 4/7] clk: add support for clock protection\0"
  "Date\0Fri, 12 May 2017 15:08:02 +0200\0"
- "To\0linus-amlogic@lists.infradead.org\0"
+ "To\0Michael Turquette <mturquette@baylibre.com>"
+  Stephen Boyd <sboyd@codeaurora.org>
+ " Kevin Hilman <khilman@baylibre.com>\0"
+ "Cc\0linux-clk@vger.kernel.org"
+ " linux-amlogic@lists.infradead.org\0"
  "\00:1\0"
  "b\0"
  "On Thu, 2017-05-11 at 12:05 -0700, Michael Turquette wrote:\n"
@@ -18,74 +22,74 @@
  "> > \n"
  "> > Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>\n"
  "> > ---\n"
- "> > ?drivers/clk/clk.c????????????| 177\n"
+ "> > \302\240drivers/clk/clk.c\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240| 177\n"
  "> > ++++++++++++++++++++++++++++++++++++++++---\n"
- "> > ?include/linux/clk-provider.h |???1 +\n"
- "> > ?include/linux/clk.h??????????|??29 +++++++\n"
- "> > ?3 files changed, 197 insertions(+), 10 deletions(-)\n"
+ "> > \302\240include/linux/clk-provider.h |\302\240\302\240\302\2401 +\n"
+ "> > \302\240include/linux/clk.h\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\24029 +++++++\n"
+ "> > \302\2403 files changed, 197 insertions(+), 10 deletions(-)\n"
  "> > \n"
  "> > diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c\n"
  "> > index fa77a1841e0f..69db8cc15063 100644\n"
  "> > --- a/drivers/clk/clk.c\n"
  "> > +++ b/drivers/clk/clk.c\n"
  "> > @@ -60,6 +60,7 @@ struct clk_core {\n"
- "> > ????????bool????????????????????orphan;\n"
- "> > ????????unsigned int????????????enable_count;\n"
- "> > ????????unsigned int????????????prepare_count;\n"
- "> > +???????unsigned int????????????protect_count;\n"
- "> > ????????unsigned long???????????min_rate;\n"
- "> > ????????unsigned long???????????max_rate;\n"
- "> > ????????unsigned long???????????accuracy;\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240bool\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240orphan;\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240unsigned int\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240enable_count;\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240unsigned int\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240prepare_count;\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240unsigned int\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240protect_count;\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240unsigned long\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240min_rate;\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240unsigned long\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240max_rate;\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240unsigned long\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240accuracy;\n"
  "> > @@ -84,6 +85,7 @@ struct clk {\n"
- "> > ????????const char *con_id;\n"
- "> > ????????unsigned long min_rate;\n"
- "> > ????????unsigned long max_rate;\n"
- "> > +???????unsigned long protect_ucount;\n"
- "> > ????????struct hlist_node clks_node;\n"
- "> > ?};\n"
- "> > ?\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240const char *con_id;\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240unsigned long min_rate;\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240unsigned long max_rate;\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240unsigned long protect_ucount;\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct hlist_node clks_node;\n"
+ "> > \302\240};\n"
+ "> > \302\240\n"
  "> > @@ -160,6 +162,11 @@ static bool clk_core_is_prepared(struct clk_core *core)\n"
- "> > ????????return core->ops->is_prepared(core->hw);\n"
- "> > ?}\n"
- "> > ?\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return core->ops->is_prepared(core->hw);\n"
+ "> > \302\240}\n"
+ "> > \302\240\n"
  "> > +static bool clk_core_is_protected(struct clk_core *core)\n"
  "> > +{\n"
- "> > +???????return core->protect_count;\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return core->protect_count;\n"
  "> > +}\n"
  "> > +\n"
- "> > ?static bool clk_core_is_enabled(struct clk_core *core)\n"
- "> > ?{\n"
- "> > ????????/*\n"
+ "> > \302\240static bool clk_core_is_enabled(struct clk_core *core)\n"
+ "> > \302\240{\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240/*\n"
  "> > @@ -328,6 +335,11 @@ bool clk_hw_is_prepared(const struct clk_hw *hw)\n"
- "> > ????????return clk_core_is_prepared(hw->core);\n"
- "> > ?}\n"
- "> > ?\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return clk_core_is_prepared(hw->core);\n"
+ "> > \302\240}\n"
+ "> > \302\240\n"
  "> > +bool clk_hw_is_protected(const struct clk_hw *hw)\n"
  "> > +{\n"
- "> > +???????return clk_core_is_protected(hw->core);\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return clk_core_is_protected(hw->core);\n"
  "> > +}\n"
  "> > +\n"
- "> > ?bool clk_hw_is_enabled(const struct clk_hw *hw)\n"
- "> > ?{\n"
- "> > ????????return clk_core_is_enabled(hw->core);\n"
+ "> > \302\240bool clk_hw_is_enabled(const struct clk_hw *hw)\n"
+ "> > \302\240{\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return clk_core_is_enabled(hw->core);\n"
  "> > @@ -584,6 +596,89 @@ int clk_prepare(struct clk *clk)\n"
- "> > ?}\n"
- "> > ?EXPORT_SYMBOL_GPL(clk_prepare);\n"
- "> > ?\n"
+ "> > \302\240}\n"
+ "> > \302\240EXPORT_SYMBOL_GPL(clk_prepare);\n"
+ "> > \302\240\n"
  "> > +static void clk_core_unprotect(struct clk_core *core)\n"
  "> > +{\n"
- "> > +???????lockdep_assert_held(&prepare_lock);\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240lockdep_assert_held(&prepare_lock);\n"
  "> > +\n"
- "> > +???????if (!core)\n"
- "> > +???????????????return;\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!core)\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return;\n"
  "> > +\n"
- "> > +???????if (WARN_ON(core->protect_count == 0))\n"
- "> > +???????????????return;\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (WARN_ON(core->protect_count == 0))\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return;\n"
  "> > +\n"
- "> > +???????if (--core->protect_count > 0)\n"
- "> > +???????????????return;\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (--core->protect_count > 0)\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return;\n"
  "> > +\n"
- "> > +???????clk_core_unprotect(core->parent);\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_core_unprotect(core->parent);\n"
  "> > +}\n"
  "> > +\n"
  "> > +/**\n"
@@ -123,38 +127,38 @@
  "> > + */\n"
  "> > +void clk_unprotect(struct clk *clk)\n"
  "> > +{\n"
- "> > +???????if (!clk)\n"
- "> > +???????????????return;\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!clk)\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return;\n"
  "> > +\n"
- "> > +???????clk_prepare_lock();\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_prepare_lock();\n"
  "> > +\n"
- "> > +???????if (WARN_ON(clk->protect_ucount <= 0)) {\n"
- "> > +???????????????/*\n"
- "> > +????????????????* There is something wrong with this consumer protect\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (WARN_ON(clk->protect_ucount <= 0)) {\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240/*\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240* There is something wrong with this consumer protect\n"
  "> > count.\n"
- "> > +????????????????* Stop here before messing with the provider\n"
- "> > +????????????????*/\n"
- "> > +???????????????clk_prepare_unlock();\n"
- "> > +???????????????return;\n"
- "> > +???????}\n"
- "> > +\n"
- "> > +???????clk_core_unprotect(clk->core);\n"
- "> > +???????clk->protect_ucount--;\n"
- "> > +???????clk_prepare_unlock();\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240* Stop here before messing with the provider\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240*/\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_prepare_unlock();\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return;\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
+ "> > +\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_core_unprotect(clk->core);\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk->protect_ucount--;\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_prepare_unlock();\n"
  "> > +}\n"
  "> > +EXPORT_SYMBOL_GPL(clk_unprotect);\n"
  "> > +\n"
  "> > +static void clk_core_protect(struct clk_core *core)\n"
  "> > +{\n"
- "> > +???????lockdep_assert_held(&prepare_lock);\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240lockdep_assert_held(&prepare_lock);\n"
  "> > +\n"
- "> > +???????if (!core)\n"
- "> > +???????????????return;\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!core)\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return;\n"
  "> > +\n"
- "> > +???????if (core->protect_count == 0)\n"
- "> > +???????????????clk_core_protect(core->parent);\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (core->protect_count == 0)\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_core_protect(core->parent);\n"
  "> > +\n"
- "> > +???????core->protect_count++;\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240core->protect_count++;\n"
  "> > +}\n"
  "> > +\n"
  "> > +/**\n"
@@ -192,27 +196,27 @@
  "> \n"
  "> > +void clk_protect(struct clk *clk)\n"
  "> > +{\n"
- "> > +???????if (!clk)\n"
- "> > +???????????????return;\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!clk)\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return;\n"
  "> > +\n"
- "> > +???????clk_prepare_lock();\n"
- "> > +???????clk_core_protect(clk->core);\n"
- "> > +???????clk->protect_ucount++;\n"
- "> > +???????clk_prepare_unlock();\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_prepare_lock();\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_core_protect(clk->core);\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk->protect_ucount++;\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_prepare_unlock();\n"
  "> > +}\n"
  "> > +EXPORT_SYMBOL_GPL(clk_protect);\n"
  "> > +\n"
- "> > ?static void clk_core_disable(struct clk_core *core)\n"
- "> > ?{\n"
- "> > ????????lockdep_assert_held(&enable_lock);\n"
+ "> > \302\240static void clk_core_disable(struct clk_core *core)\n"
+ "> > \302\240{\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240lockdep_assert_held(&enable_lock);\n"
  "> > @@ -838,7 +933,9 @@ static int clk_core_determine_round(struct clk_core\n"
  "> > *core,\n"
- "> > ?{\n"
- "> > ????????long rate;\n"
- "> > ?\n"
- "> > -???????if (core->ops->determine_rate) {\n"
- "> > +???????if (clk_core_is_protected(core)) {\n"
- "> > +???????????????req->rate = core->rate;\n"
+ "> > \302\240{\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240long rate;\n"
+ "> > \302\240\n"
+ "> > -\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (core->ops->determine_rate) {\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (clk_core_is_protected(core)) {\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240req->rate = core->rate;\n"
  "> \n"
  "> Hmm, in CCF we basically re-use round_rate/determine_rate from within\n"
  "> calls to clk_set_rate. The point is that clk_set_rate should set the\n"
@@ -243,17 +247,17 @@
  "[0]\n"
  "\n"
  "> \n"
- "> > +???????} else if (core->ops->determine_rate) {\n"
- "> > ????????????????return core->ops->determine_rate(core->hw, req);\n"
- "> > ????????} else if (core->ops->round_rate) {\n"
- "> > ????????????????rate = core->ops->round_rate(core->hw, req->rate,\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240} else if (core->ops->determine_rate) {\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return core->ops->determine_rate(core->hw, req);\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240} else if (core->ops->round_rate) {\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240rate = core->ops->round_rate(core->hw, req->rate,\n"
  "> > @@ -1381,7 +1478,7 @@ static struct clk_core *clk_calc_new_rates(struct\n"
  "> > clk_core *core,\n"
- "> > ????????????????req.min_rate = min_rate;\n"
- "> > ????????????????req.max_rate = max_rate;\n"
- "> > ?\n"
- "> > -???????????????clk_core_init_rate_req(core, req);\n"
- "> > +???????????????clk_core_init_rate_req(core, &req);\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240req.min_rate = min_rate;\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240req.max_rate = max_rate;\n"
+ "> > \302\240\n"
+ "> > -\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_core_init_rate_req(core, req);\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_core_init_rate_req(core, &req);\n"
  "> \n"
  "> Why isn't this change in patch #3? Seems like a bug introduced in patch\n"
  "> #3 and fixed here in patch #4.\n"
@@ -261,12 +265,12 @@
  "Indeed, I messed up while formatting the patches :(\n"
  "\n"
  "> \n"
- "> > ?\n"
- "> > ????????????????ret = clk_core_determine_round(core, &req);\n"
- "> > ????????????????if (ret < 0)\n"
+ "> > \302\240\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = clk_core_determine_round(core, &req);\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (ret < 0)\n"
  "> > @@ -1637,8 +1734,14 @@ int clk_set_rate(struct clk *clk, unsigned long rate)\n"
- "> > ????????/* prevent racing with updates to the clock topology */\n"
- "> > ????????clk_prepare_lock();\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240/* prevent racing with updates to the clock topology */\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_prepare_lock();\n"
  "> \n"
  "> The fact that a user can protect a clk AND change its rate is very\n"
  "> subtle. Please update the kerneldoc for clk_set_rate, clk_set_parent and\n"
@@ -275,9 +279,9 @@
  "Will do\n"
  "\n"
  "> \n"
- "> > ?\n"
- "> > +???????if (clk->protect_ucount)\n"
- "> > +???????????????clk_core_unprotect(clk->core);\n"
+ "> > \302\240\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (clk->protect_ucount)\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_core_unprotect(clk->core);\n"
  "> \n"
  "> What happens here if two different users have both protected this same\n"
  "> clk? Looks like we ignore the second user?\n"
@@ -297,8 +301,8 @@
  "prepare_lock.\n"
  "\n"
  "When we get to \n"
- "+???????if (clk_core_is_protected(core)) {\n"
- "+???????????????req->rate = core->rate;\n"
+ "+\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (clk_core_is_protected(core)) {\n"
+ "+\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240req->rate = core->rate;\n"
  "\n"
  "Either the clock was only protected by the calling consumer, *and only once*,\n"
  "then the protection has been temporarily removed, test is false and the usual\n"
@@ -329,210 +333,210 @@
  "> Mike\n"
  "> \n"
  "> > +\n"
- "> > ????????ret = clk_core_set_rate_nolock(clk->core, rate);\n"
- "> > ?\n"
- "> > +???????if (clk->protect_ucount)\n"
- "> > +???????????????clk_core_protect(clk->core);\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = clk_core_set_rate_nolock(clk->core, rate);\n"
+ "> > \302\240\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (clk->protect_ucount)\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_core_protect(clk->core);\n"
  "> > +\n"
- "> > ????????clk_prepare_unlock();\n"
- "> > ?\n"
- "> > ????????return ret;\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_prepare_unlock();\n"
+ "> > \302\240\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ret;\n"
  "> > @@ -1669,12 +1772,18 @@ int clk_set_rate_range(struct clk *clk, unsigned\n"
  "> > long min, unsigned long max)\n"
- "> > ?\n"
- "> > ????????clk_prepare_lock();\n"
- "> > ?\n"
- "> > +???????if (clk->protect_ucount)\n"
- "> > +???????????????clk_core_unprotect(clk->core);\n"
- "> > +\n"
- "> > ????????if (min != clk->min_rate || max != clk->max_rate) {\n"
- "> > ????????????????clk->min_rate = min;\n"
- "> > ????????????????clk->max_rate = max;\n"
- "> > ????????????????ret = clk_core_set_rate_nolock(clk->core, clk->core-\n"
+ "> > \302\240\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_prepare_lock();\n"
+ "> > \302\240\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (clk->protect_ucount)\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_core_unprotect(clk->core);\n"
+ "> > +\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (min != clk->min_rate || max != clk->max_rate) {\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk->min_rate = min;\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk->max_rate = max;\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = clk_core_set_rate_nolock(clk->core, clk->core-\n"
  "> > >req_rate);\n"
- "> > ????????}\n"
- "> > ?\n"
- "> > +???????if (clk->protect_ucount)\n"
- "> > +???????????????clk_core_protect(clk->core);\n"
- "> > +\n"
- "> > ????????clk_prepare_unlock();\n"
- "> > ?\n"
- "> > ????????return ret;\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
+ "> > \302\240\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (clk->protect_ucount)\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_core_protect(clk->core);\n"
+ "> > +\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_prepare_unlock();\n"
+ "> > \302\240\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ret;\n"
  "> > @@ -1815,6 +1924,9 @@ static int clk_core_set_parent(struct clk_core *core,\n"
  "> > struct clk_core *parent)\n"
- "> > ????????if ((core->flags & CLK_SET_PARENT_GATE) && core->prepare_count)\n"
- "> > ????????????????return -EBUSY;\n"
- "> > ?\n"
- "> > +???????if (clk_core_is_protected(core))\n"
- "> > +???????????????return -EBUSY;\n"
- "> > +\n"
- "> > ????????/* try finding the new parent index */\n"
- "> > ????????if (parent) {\n"
- "> > ????????????????p_index = clk_fetch_parent_index(core, parent);\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if ((core->flags & CLK_SET_PARENT_GATE) && core->prepare_count)\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EBUSY;\n"
+ "> > \302\240\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (clk_core_is_protected(core))\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EBUSY;\n"
+ "> > +\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240/* try finding the new parent index */\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (parent) {\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240p_index = clk_fetch_parent_index(core, parent);\n"
  "> > @@ -1878,11 +1990,24 @@ static int clk_core_set_parent_lock(struct clk_core\n"
  "> > *core,\n"
- "> > ? */\n"
- "> > ?int clk_set_parent(struct clk *clk, struct clk *parent)\n"
- "> > ?{\n"
- "> > +???????int ret;\n"
+ "> > \302\240 */\n"
+ "> > \302\240int clk_set_parent(struct clk *clk, struct clk *parent)\n"
+ "> > \302\240{\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240int ret;\n"
  "> > +\n"
- "> > ????????if (!clk)\n"
- "> > ????????????????return 0;\n"
- "> > ?\n"
- "> > -???????return clk_core_set_parent_lock(clk->core,\n"
- "> > -???????????????????????????????????????parent ? parent->core : NULL);\n"
- "> > +???????clk_prepare_lock();\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!clk)\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
+ "> > \302\240\n"
+ "> > -\302\240\302\240\302\240\302\240\302\240\302\240\302\240return clk_core_set_parent_lock(clk->core,\n"
+ "> > -\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240parent ? parent->core : NULL);\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_prepare_lock();\n"
  "> > +\n"
- "> > +???????if (clk->protect_ucount)\n"
- "> > +???????????????clk_core_unprotect(clk->core);\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (clk->protect_ucount)\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_core_unprotect(clk->core);\n"
  "> > +\n"
- "> > +???????ret = clk_core_set_parent(clk->core, parent ? parent->core : NULL);\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = clk_core_set_parent(clk->core, parent ? parent->core : NULL);\n"
  "> > +\n"
- "> > +???????if (clk->protect_ucount)\n"
- "> > +???????????????clk_core_protect(clk->core);\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (clk->protect_ucount)\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_core_protect(clk->core);\n"
  "> > +\n"
- "> > +???????clk_prepare_unlock();\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_prepare_unlock();\n"
  "> > +\n"
- "> > +???????return ret;\n"
- "> > ?}\n"
- "> > ?EXPORT_SYMBOL_GPL(clk_set_parent);\n"
- "> > ?\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ret;\n"
+ "> > \302\240}\n"
+ "> > \302\240EXPORT_SYMBOL_GPL(clk_set_parent);\n"
+ "> > \302\240\n"
  "> > @@ -1893,7 +2018,10 @@ static int clk_core_set_phase(struct clk_core *core,\n"
  "> > int degrees)\n"
- "> > ????????if (!core)\n"
- "> > ????????????????return 0;\n"
- "> > ?\n"
- "> > -???????trace_clk_set_phase(clk->core, degrees);\n"
- "> > +???????if (clk_core_is_protected(core))\n"
- "> > +???????????????return -EBUSY;\n"
- "> > +\n"
- "> > +???????trace_clk_set_phase(core, degrees);\n"
- "> > ?\n"
- "> > ????????if (core->ops->set_phase)\n"
- "> > ????????????????ret = core->ops->set_phase(core->hw, degrees);\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!core)\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
+ "> > \302\240\n"
+ "> > -\302\240\302\240\302\240\302\240\302\240\302\240\302\240trace_clk_set_phase(clk->core, degrees);\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (clk_core_is_protected(core))\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return -EBUSY;\n"
+ "> > +\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240trace_clk_set_phase(core, degrees);\n"
+ "> > \302\240\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (core->ops->set_phase)\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = core->ops->set_phase(core->hw, degrees);\n"
  "> > @@ -1936,7 +2064,15 @@ int clk_set_phase(struct clk *clk, int degrees)\n"
- "> > ????????????????degrees += 360;\n"
- "> > ?\n"
- "> > ????????clk_prepare_lock();\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240degrees += 360;\n"
+ "> > \302\240\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_prepare_lock();\n"
  "> > +\n"
- "> > +???????if (clk->protect_ucount)\n"
- "> > +???????????????clk_core_unprotect(clk->core);\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (clk->protect_ucount)\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_core_unprotect(clk->core);\n"
  "> > +\n"
- "> > ????????ret = clk_core_set_phase(clk->core, degrees);\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240ret = clk_core_set_phase(clk->core, degrees);\n"
  "> > +\n"
- "> > +???????if (clk->protect_ucount)\n"
- "> > +???????????????clk_core_protect(clk->core);\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (clk->protect_ucount)\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_core_protect(clk->core);\n"
  "> > +\n"
- "> > ????????clk_prepare_unlock();\n"
- "> > ?\n"
- "> > ????????return ret;\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_prepare_unlock();\n"
+ "> > \302\240\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return ret;\n"
  "> > @@ -2023,11 +2159,12 @@ static void clk_summary_show_one(struct seq_file *s,\n"
  "> > struct clk_core *c,\n"
- "> > ????????if (!c)\n"
- "> > ????????????????return;\n"
- "> > ?\n"
- "> > -???????seq_printf(s, \"%*s%-*s %11d %12d %11lu %10lu %-3d\\n\",\n"
- "> > +???????seq_printf(s, \"%*s%-*s %11d %12d %12d %11lu %10lu %-3d\\n\",\n"
- "> > ???????????????????level * 3 + 1, \"\",\n"
- "> > ???????????????????30 - level * 3, c->name,\n"
- "> > -??????????????????c->enable_count, c->prepare_count, clk_core_get_rate(c),\n"
- "> > -??????????????????clk_core_get_accuracy(c), clk_core_get_phase(c));\n"
- "> > +??????????????????c->enable_count, c->prepare_count, c->protect_count,\n"
- "> > +??????????????????clk_core_get_rate(c), clk_core_get_accuracy(c),\n"
- "> > +??????????????????clk_core_get_phase(c));\n"
- "> > ?}\n"
- "> > ?\n"
- "> > ?static void clk_summary_show_subtree(struct seq_file *s, struct clk_core\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!c)\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return;\n"
+ "> > \302\240\n"
+ "> > -\302\240\302\240\302\240\302\240\302\240\302\240\302\240seq_printf(s, \"%*s%-*s %11d %12d %11lu %10lu %-3d\\n\",\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240seq_printf(s, \"%*s%-*s %11d %12d %12d %11lu %10lu %-3d\\n\",\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240level * 3 + 1, \"\",\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\24030 - level * 3, c->name,\n"
+ "> > -\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240c->enable_count, c->prepare_count, clk_core_get_rate(c),\n"
+ "> > -\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_core_get_accuracy(c), clk_core_get_phase(c));\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240c->enable_count, c->prepare_count, c->protect_count,\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_core_get_rate(c), clk_core_get_accuracy(c),\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_core_get_phase(c));\n"
+ "> > \302\240}\n"
+ "> > \302\240\n"
+ "> > \302\240static void clk_summary_show_subtree(struct seq_file *s, struct clk_core\n"
  "> > *c,\n"
  "> > @@ -2049,8 +2186,8 @@ static int clk_summary_show(struct seq_file *s, void\n"
  "> > *data)\n"
- "> > ????????struct clk_core *c;\n"
- "> > ????????struct hlist_head **lists = (struct hlist_head **)s->private;\n"
- "> > ?\n"
- "> > -???????seq_puts(s,\n"
- "> > \"???clock?????????????????????????enable_cnt??prepare_cnt????????rate???accu\n"
- "> > racy???phase\\n\");\n"
- "> > -???????seq_puts(s, \"-------------------------------------------------------\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct clk_core *c;\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct hlist_head **lists = (struct hlist_head **)s->private;\n"
+ "> > \302\240\n"
+ "> > -\302\240\302\240\302\240\302\240\302\240\302\240\302\240seq_puts(s,\n"
+ "> > \"\302\240\302\240\302\240clock\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240enable_cnt\302\240\302\240prepare_cnt\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240rate\302\240\302\240\302\240accu\n"
+ "> > racy\302\240\302\240\302\240phase\\n\");\n"
+ "> > -\302\240\302\240\302\240\302\240\302\240\302\240\302\240seq_puts(s, \"-------------------------------------------------------\n"
  "> > ---------------------------------\\n\");\n"
- "> > +???????seq_puts(s,\n"
- "> > \"???clock?????????????????????????enable_cnt??prepare_cnt??protect_cnt??????\n"
- "> > ??rate???accuracy???phase\\n\");\n"
- "> > +???????seq_puts(s, \"-------------------------------------------------------\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240seq_puts(s,\n"
+ "> > \"\302\240\302\240\302\240clock\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240enable_cnt\302\240\302\240prepare_cnt\302\240\302\240protect_cnt\302\240\302\240\302\240\302\240\302\240\302\240\n"
+ "> > \302\240\302\240rate\302\240\302\240\302\240accuracy\302\240\302\240\302\240phase\\n\");\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240seq_puts(s, \"-------------------------------------------------------\n"
  "> > ---------------------------------------------\\n\");\n"
- "> > ?\n"
- "> > ????????clk_prepare_lock();\n"
- "> > ?\n"
+ "> > \302\240\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_prepare_lock();\n"
+ "> > \302\240\n"
  "> > @@ -2085,6 +2222,7 @@ static void clk_dump_one(struct seq_file *s, struct\n"
  "> > clk_core *c, int level)\n"
- "> > ????????seq_printf(s, \"\\\"%s\\\": { \", c->name);\n"
- "> > ????????seq_printf(s, \"\\\"enable_count\\\": %d,\", c->enable_count);\n"
- "> > ????????seq_printf(s, \"\\\"prepare_count\\\": %d,\", c->prepare_count);\n"
- "> > +???????seq_printf(s, \"\\\"protect_count\\\": %d,\", c->protect_count);\n"
- "> > ????????seq_printf(s, \"\\\"rate\\\": %lu,\", clk_core_get_rate(c));\n"
- "> > ????????seq_printf(s, \"\\\"accuracy\\\": %lu,\", clk_core_get_accuracy(c));\n"
- "> > ????????seq_printf(s, \"\\\"phase\\\": %d\", clk_core_get_phase(c));\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240seq_printf(s, \"\\\"%s\\\": { \", c->name);\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240seq_printf(s, \"\\\"enable_count\\\": %d,\", c->enable_count);\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240seq_printf(s, \"\\\"prepare_count\\\": %d,\", c->prepare_count);\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240seq_printf(s, \"\\\"protect_count\\\": %d,\", c->protect_count);\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240seq_printf(s, \"\\\"rate\\\": %lu,\", clk_core_get_rate(c));\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240seq_printf(s, \"\\\"accuracy\\\": %lu,\", clk_core_get_accuracy(c));\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240seq_printf(s, \"\\\"phase\\\": %d\", clk_core_get_phase(c));\n"
  "> > @@ -2191,6 +2329,11 @@ static int clk_debug_create_one(struct clk_core\n"
  "> > *core, struct dentry *pdentry)\n"
- "> > ????????if (!d)\n"
- "> > ????????????????goto err_out;\n"
- "> > ?\n"
- "> > +???????d = debugfs_create_u32(\"clk_protect_count\", S_IRUGO, core->dentry,\n"
- "> > +???????????????????????(u32 *)&core->protect_count);\n"
- "> > +???????if (!d)\n"
- "> > +???????????????goto err_out;\n"
- "> > +\n"
- "> > ????????d = debugfs_create_u32(\"clk_notifier_count\", S_IRUGO, core->dentry,\n"
- "> > ????????????????????????(u32 *)&core->notifier_count);\n"
- "> > ????????if (!d)\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!d)\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240goto err_out;\n"
+ "> > \302\240\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240d = debugfs_create_u32(\"clk_protect_count\", S_IRUGO, core->dentry,\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240(u32 *)&core->protect_count);\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!d)\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240goto err_out;\n"
+ "> > +\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240d = debugfs_create_u32(\"clk_notifier_count\", S_IRUGO, core->dentry,\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240(u32 *)&core->notifier_count);\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (!d)\n"
  "> > @@ -2747,6 +2890,11 @@ void clk_unregister(struct clk *clk)\n"
- "> > ????????if (clk->core->prepare_count)\n"
- "> > ????????????????pr_warn(\"%s: unregistering prepared clock: %s\\n\",\n"
- "> > ????????????????????????????????????????__func__, clk->core->name);\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (clk->core->prepare_count)\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240pr_warn(\"%s: unregistering prepared clock: %s\\n\",\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240__func__, clk->core->name);\n"
  "> > +\n"
- "> > +???????if (clk->core->protect_count)\n"
- "> > +???????????????pr_warn(\"%s: unregistering protected clock: %s\\n\",\n"
- "> > +???????????????????????????????????????__func__, clk->core->name);\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (clk->core->protect_count)\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240pr_warn(\"%s: unregistering protected clock: %s\\n\",\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240__func__, clk->core->name);\n"
  "> > +\n"
- "> > ????????kref_put(&clk->core->ref, __clk_release);\n"
- "> > ?unlock:\n"
- "> > ????????clk_prepare_unlock();\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240kref_put(&clk->core->ref, __clk_release);\n"
+ "> > \302\240unlock:\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_prepare_unlock();\n"
  "> > @@ -2905,6 +3053,15 @@ void __clk_put(struct clk *clk)\n"
- "> > ?\n"
- "> > ????????clk_prepare_lock();\n"
- "> > ?\n"
- "> > +???????/* Protect count not balanced: warn and sanitize */\n"
- "> > +???????if (clk->protect_ucount) {\n"
- "> > +???????????????pr_warn(\"%s: releasing protected clock: %s\\n\",\n"
- "> > +???????????????????????????????????????__func__, clk->core->name);\n"
- "> > +\n"
- "> > +???????????????for (; clk->protect_ucount; clk->protect_ucount--)\n"
- "> > +???????????????????????clk_core_unprotect(clk->core);\n"
- "> > +???????}\n"
- "> > +\n"
- "> > ????????hlist_del(&clk->clks_node);\n"
- "> > ????????if (clk->min_rate > clk->core->req_rate ||\n"
- "> > ????????????clk->max_rate < clk->core->req_rate)\n"
+ "> > \302\240\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_prepare_lock();\n"
+ "> > \302\240\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240/* Protect count not balanced: warn and sanitize */\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (clk->protect_ucount) {\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240pr_warn(\"%s: releasing protected clock: %s\\n\",\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240__func__, clk->core->name);\n"
+ "> > +\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240for (; clk->protect_ucount; clk->protect_ucount--)\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk_core_unprotect(clk->core);\n"
+ "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240}\n"
+ "> > +\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240hlist_del(&clk->clks_node);\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240if (clk->min_rate > clk->core->req_rate ||\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240clk->max_rate < clk->core->req_rate)\n"
  "> > diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h\n"
  "> > index a428aec36ace..705a158d9b8f 100644\n"
  "> > --- a/include/linux/clk-provider.h\n"
  "> > +++ b/include/linux/clk-provider.h\n"
  "> > @@ -739,6 +739,7 @@ unsigned long clk_hw_get_rate(const struct clk_hw *hw);\n"
- "> > ?unsigned long __clk_get_flags(struct clk *clk);\n"
- "> > ?unsigned long clk_hw_get_flags(const struct clk_hw *hw);\n"
- "> > ?bool clk_hw_is_prepared(const struct clk_hw *hw);\n"
+ "> > \302\240unsigned long __clk_get_flags(struct clk *clk);\n"
+ "> > \302\240unsigned long clk_hw_get_flags(const struct clk_hw *hw);\n"
+ "> > \302\240bool clk_hw_is_prepared(const struct clk_hw *hw);\n"
  "> > +bool clk_hw_is_protected(const struct clk_hw *hw);\n"
- "> > ?bool clk_hw_is_enabled(const struct clk_hw *hw);\n"
- "> > ?bool __clk_is_enabled(struct clk *clk);\n"
- "> > ?struct clk *__clk_lookup(const char *name);\n"
+ "> > \302\240bool clk_hw_is_enabled(const struct clk_hw *hw);\n"
+ "> > \302\240bool __clk_is_enabled(struct clk *clk);\n"
+ "> > \302\240struct clk *__clk_lookup(const char *name);\n"
  "> > diff --git a/include/linux/clk.h b/include/linux/clk.h\n"
  "> > index e9d36b3e49de..90b72ead4411 100644\n"
  "> > --- a/include/linux/clk.h\n"
  "> > +++ b/include/linux/clk.h\n"
  "> > @@ -265,6 +265,30 @@ struct clk *devm_clk_get(struct device *dev, const char\n"
  "> > *id);\n"
- "> > ? */\n"
- "> > ?struct clk *devm_get_clk_from_child(struct device *dev,\n"
- "> > ????????????????????????????????????struct device_node *np, const char\n"
+ "> > \302\240 */\n"
+ "> > \302\240struct clk *devm_get_clk_from_child(struct device *dev,\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240struct device_node *np, const char\n"
  "> > *con_id);\n"
  "> > +/**\n"
  "> > + * clk_protect - inform the system when the clock source should be\n"
@@ -561,23 +565,23 @@
  "> > + * Must not be called from within atomic context.\n"
  "> > + */\n"
  "> > +void clk_unprotect(struct clk *clk);\n"
- "> > ?\n"
- "> > ?/**\n"
- "> > ? * clk_enable - inform the system when the clock source should be running.\n"
+ "> > \302\240\n"
+ "> > \302\240/**\n"
+ "> > \302\240 * clk_enable - inform the system when the clock source should be running.\n"
  "> > @@ -460,6 +484,11 @@ static inline void clk_put(struct clk *clk) {}\n"
- "> > ?\n"
- "> > ?static inline void devm_clk_put(struct device *dev, struct clk *clk) {}\n"
- "> > ?\n"
+ "> > \302\240\n"
+ "> > \302\240static inline void devm_clk_put(struct device *dev, struct clk *clk) {}\n"
+ "> > \302\240\n"
  "> > +\n"
  "> > +static inline void clk_protect(struct clk *clk) {}\n"
  "> > +\n"
  "> > +static inline void clk_unprotect(struct clk *clk) {}\n"
  "> > +\n"
- "> > ?static inline int clk_enable(struct clk *clk)\n"
- "> > ?{\n"
- "> > ????????return 0;\n"
- "> > --?\n"
+ "> > \302\240static inline int clk_enable(struct clk *clk)\n"
+ "> > \302\240{\n"
+ "> > \302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240return 0;\n"
+ "> > --\302\240\n"
  "> > 2.9.3\n"
  > >
 
-b5ca9b8fa342bed5bbd00fc6c8e3b5a807646960b1eef142245ef05f91719631
+6ba2e4ff8e034211602dcb78da21cd81891820a4c04c48da00f3c224189e5e5b

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.