All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Shevchenko <andy.shevchenko@gmail.com>
To: "Vaittinen, Matti" <Matti.Vaittinen@fi.rohmeurope.com>
Cc: "mark.rutland@arm.com" <mark.rutland@arm.com>,
	"milo.kim@ti.com" <milo.kim@ti.com>,
	"andrei.stefanescu@microchip.com"
	<andrei.stefanescu@microchip.com>,
	"rafael@kernel.org" <rafael@kernel.org>,
	"tony@atomide.com" <tony@atomide.com>,
	"linus.walleij@linaro.org" <linus.walleij@linaro.org>,
	"brendanhiggins@google.com" <brendanhiggins@google.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"yamada.masahiro@socionext.com" <yamada.masahiro@socionext.com>,
	"linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>,
	"vincenzo.frascino@arm.com" <vincenzo.frascino@arm.com>,
	"tglx@linutronix.de" <tglx@linutronix.de>,
	"linux-samsung-soc@vger.kernel.org"
	<linux-samsung-soc@vger.kernel.org>,
	"herbert@gondor.apana.org.au" <herbert@gondor.apana.org.au>,
	"b.zolnierkie@samsung.com" <b.zolnierkie@samsung.com>,
	"krzk@kernel.org" <krzk@kernel.org>,
	"bgolaszewski@baylibre.com" <bgolaszewski@baylibre.com>,
	"wens@csie.org" <wens@csie.org>,
	"agross@kernel.org" <agross@kernel.org>,
	"Laine, Markus" <Markus.Laine@fi.rohmeurope.com>,
	"bp@suse.de" <bp@suse.de>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"zaslonko@linux.ibm.com" <zaslonko@linux.ibm.com>,
	"ckeepax@opensource.cirrus.com" <ckeepax@opensource.cirrus.com>,
	"arnd@arndb.de" <arnd@arndb.de>,
	"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
	"linux-arm-msm@vger.kernel.org" <linux-arm-msm@vger.kernel.org>,
	"rf@opensource.cirrus.com" <rf@opensource.cirrus.com>,
	"broonie@kernel.org" <broonie@kernel.org>,
	"linux-mediatek@lists.infradead.org"
	<linux-mediatek@lists.infradead.org>,
	"sre@kernel.org" <sre@kernel.org>,
	"davidgow@google.com" <davidgow@google.com>,
	"skhan@linuxfoundation.org" <skhan@linuxfoundation.org>,
	"matthias.bgg@gmail.com" <matthias.bgg@gmail.com>,
	"dan.j.williams@intel.com" <dan.j.williams@intel.com>,
	"bjorn.andersson@linaro.org" <bjorn.andersson@linaro.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"support.opensource@diasemi.com" <support.opensource@diasemi.com>,
	"sbkim73@samsung.com" <sbkim73@samsung.com>,
	"patches@opensource.cirrus.com" <patches@opensource.cirrus.com>,
	"rdunlap@infradead.org" <rdunlap@infradead.org>,
	"lgirdwood@gmail.com" <lgirdwood@gmail.com>,
	"talgi@mellanox.com" <talgi@mellanox.com>,
	"Mutanen, Mikko" <Mikko.Mutanen@fi.rohmeurope.com>,
	"robh+dt@kernel.org" <robh+dt@kernel.org>,
	"uwe@kleine-koenig.org" <uwe@kleine-koenig.org>,
	"mhiramat@kernel.org" <mhiramat@kernel.org>,
	"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
	"akpm@linux-foundation.org" <akpm@linux-foundation.org>,
	"olteanv@gmail.com" <olteanv@gmail.com>,
	"davem@davemloft.net" <davem@davemloft.net>,
	"mazziesaccount@gmail.com" <mazziesaccount@gmail.com>
Subject: Re: [SPF Softfail] Re: [PATCH v7 03/10] lib: add linear ranges helpers
Date: Wed, 1 Apr 2020 15:39:46 +0300	[thread overview]
Message-ID: <CAHp75VcnK2A_qjBo3FEz-XC6Y=3z7ssSgT6AS-P_9EPyRXsFXQ@mail.gmail.com> (raw)
In-Reply-To: <4e75e0fcc9782220798c90eee5e41788fe277cc1.camel@fi.rohmeurope.com>

On Wed, Apr 1, 2020 at 1:09 PM Vaittinen, Matti
<Matti.Vaittinen@fi.rohmeurope.com> wrote:
> On Tue, 2020-03-31 at 17:05 +0300, Andy Shevchenko wrote:
> > On Tue, Mar 31, 2020 at 03:23:03PM +0300, Matti Vaittinen wrote:

...

> > > + * It might be useful if we could support also inversely
> > > proportional ranges?
> >
> > Looks like remark that should not be here, rather in commit message
> > or even in cover letter.
>
> I think this is a good place so that anyone who opens this file will
> see what could be done to improve this. No one is looking at the old
> commit messages unless they face some problems. And cover letters fade
> away even faster - although the cover letter and commit messages may
> catch some attention during the patch submissions.
>
> So maybe you would agree with me if I added this also in cover letter
> and commit message :)

OK

...

> > > +int linear_range_get_selector_low(const struct linear_range *r,
> > > +                             unsigned int val, unsigned int
> > > *selector,
> > > +                             bool *found)

> > As far as I can see this is a bit different from _high counterpart.
>
> Yes. Because the logic is different. _low accepts selector for a
> closest value which is smaller or equal to given. _high accepts
> selector for a closest value which is higher or equal to given. This
> mean that both the _high and _low accept also input value which is not
> in the range - _low accepts input which is higher than range, _high
> accepts input which is lower than the range.

Thanks for elaboration.

> > > +   if (!r->step)
> >
> > Why not positive conditional?
>
> because we really want to test if step is zero.

> I can write it as
> if (r->step == 0) if that is preferred.

Yes, please. Then we will see that 0 has special meaning here.

>  But we definitely want to chek
> if r->step is zero and handle it as exception case. (We want to protect
> from division by zero - and in that case all selectors are Ok as range
> is constant)
>
>
> > > +           *selector = r->min_sel;
> > > +   else
> > > +           *selector = (val - r->min) / r->step + r->min_sel;
> > > +   return 0;
> > > +}

...

> > > +int linear_range_get_selector_low_array(const struct linear_range
> > > *r,
> > > +                                   int ranges, unsigned int val,
> > > +                                   unsigned int *selector, bool
> > > *found)
> > > +{
> > > +   int i;
> > > +   int ret = -EINVAL;
> > > +
> > > +   for (i = 0; i < ranges; i++) {
> > > +           int tmpret;
> > > +
> > > +           tmpret = linear_range_get_selector_low(&r[i], val,
> > > selector,
> > > +                                                  found);
> > > +
> > > +           if (!tmpret)
> > > +                   ret = 0;
> > > +
> > > +           if (*found)
> > > +                   break;
> > > +   }
> > > +
> > > +   return ret;
> > > +}
> >
> > Can we refactor this?
> >
> >       int i;
> >       int ret = -EINVAL;
> >
> >       for (i = 0; i < ranges; i++) {
> >               ret = linear_range_get_selector_low(&r[i], val,
> > selector, found);
> >               if (*found)
> >                       break;
> >       }
> >
> >       return break;
> >
> > This will unshadow the error code returned by the loop body.
>
> What is the return break; doing here? I don't understand the syntax.

Typo. return ret; should be.

> And we want the logic to be such that we return zero from this function
> if _any_ of the calls to linear_range_get_selector_low returned zero.
> (Even if further calls would return non-zero value). But we wan't to
> keep looking for better (in-range) match if *found is not true.

won't or want to? I'm confused with the last.
Is this logic described in the description? Sorry, I forgot, although
I had read it.
If no, perhaps it needs to be added either to description or as a
comment to the loop.

> > Or if ranges is guaranteed to be always positive number, convert this
> > to do {} while.
>
> I don't see the benefit :/

I see.
 do {
   ret = ...
 } while (++i < ranges && *found == false);

much better to read.

-- 
With Best Regards,
Andy Shevchenko

_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek

  reply	other threads:[~2020-04-01 12:40 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-31 12:20 [PATCH v7 00/10] Support ROHM BD99954 charger IC Matti Vaittinen
2020-03-31 12:21 ` [PATCH v7 01/10] dt-bindings: battery: add new battery parameters Matti Vaittinen
2020-03-31 12:22 ` [PATCH v7 02/10] dt_bindings: ROHM BD99954 Charger Matti Vaittinen
2020-03-31 12:23 ` [PATCH v7 03/10] lib: add linear ranges helpers Matti Vaittinen
2020-03-31 14:05   ` Andy Shevchenko
2020-04-01 10:09     ` [SPF Softfail] " Vaittinen, Matti
2020-04-01 12:39       ` Andy Shevchenko [this message]
2020-04-01 13:18         ` Vaittinen, Matti
2020-04-01 14:42           ` Andy Shevchenko
2020-04-02  4:03             ` Vaittinen, Matti
2020-03-31 12:23 ` [PATCH v7 04/10] lib/test_linear_ranges: add a test for the 'linear_ranges' Matti Vaittinen
2020-03-31 18:08   ` Brendan Higgins
2020-04-01  8:45     ` Vaittinen, Matti
2020-04-01 18:48       ` Brendan Higgins
2020-04-02 15:39         ` Vaittinen, Matti
2020-03-31 12:24 ` [PATCH v7 05/10] power: supply: bd70528: rename linear_range to avoid collision Matti Vaittinen
2020-03-31 12:24 ` [PATCH v7 00/10] Support ROHM BD99954 charger IC Ard Biesheuvel
2020-03-31 14:02   ` Vaittinen, Matti
2020-03-31 14:21     ` andriy.shevchenko
2020-03-31 12:25 ` [PATCH v7 06/10] regulator: use linear_ranges helper Matti Vaittinen
2020-04-01 10:17   ` Mark Brown
2020-03-31 12:26 ` [PATCH v7 07/10] power: supply: bd70528: use linear ranges Matti Vaittinen
2020-03-31 12:26 ` [PATCH v7 08/10] power: supply: add battery parameters Matti Vaittinen
2020-03-31 12:28 ` [PATCH v7 09/10] power: supply: Support ROHM bd99954 charger Matti Vaittinen
2020-03-31 14:19   ` Andy Shevchenko
2020-04-01  8:08     ` Vaittinen, Matti
2020-03-31 12:29 ` [PATCH v7 10/10] power: supply: Fix Kconfig help text indentiation Matti Vaittinen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAHp75VcnK2A_qjBo3FEz-XC6Y=3z7ssSgT6AS-P_9EPyRXsFXQ@mail.gmail.com' \
    --to=andy.shevchenko@gmail.com \
    --cc=Markus.Laine@fi.rohmeurope.com \
    --cc=Matti.Vaittinen@fi.rohmeurope.com \
    --cc=Mikko.Mutanen@fi.rohmeurope.com \
    --cc=agross@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=andrei.stefanescu@microchip.com \
    --cc=arnd@arndb.de \
    --cc=b.zolnierkie@samsung.com \
    --cc=bgolaszewski@baylibre.com \
    --cc=bjorn.andersson@linaro.org \
    --cc=bp@suse.de \
    --cc=brendanhiggins@google.com \
    --cc=broonie@kernel.org \
    --cc=ckeepax@opensource.cirrus.com \
    --cc=dan.j.williams@intel.com \
    --cc=davem@davemloft.net \
    --cc=davidgow@google.com \
    --cc=devicetree@vger.kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=herbert@gondor.apana.org.au \
    --cc=krzk@kernel.org \
    --cc=lgirdwood@gmail.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=matthias.bgg@gmail.com \
    --cc=mazziesaccount@gmail.com \
    --cc=mhiramat@kernel.org \
    --cc=milo.kim@ti.com \
    --cc=olteanv@gmail.com \
    --cc=patches@opensource.cirrus.com \
    --cc=rafael@kernel.org \
    --cc=rdunlap@infradead.org \
    --cc=rf@opensource.cirrus.com \
    --cc=robh+dt@kernel.org \
    --cc=sbkim73@samsung.com \
    --cc=skhan@linuxfoundation.org \
    --cc=sre@kernel.org \
    --cc=support.opensource@diasemi.com \
    --cc=talgi@mellanox.com \
    --cc=tglx@linutronix.de \
    --cc=tony@atomide.com \
    --cc=uwe@kleine-koenig.org \
    --cc=vincenzo.frascino@arm.com \
    --cc=wens@csie.org \
    --cc=yamada.masahiro@socionext.com \
    --cc=zaslonko@linux.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.