All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lars-Peter Clausen <lars@metafoo.de>
To: "Zhang, Sonic" <Sonic.Zhang@analog.com>
Cc: Axel Lin <axel.lin@gmail.com>,
	Mark Brown <broonie@opensource.wolfsonmicro.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Liam Girdwood <lrg@ti.com>
Subject: Re: [PATCH v2] regulator: ad5398: Fix min/max current limit boundary checking
Date: Tue, 03 Jul 2012 10:24:04 +0200	[thread overview]
Message-ID: <4FF2AC24.7090906@metafoo.de> (raw)
In-Reply-To: <DB904C5425BA6F4E8424B3B51A1414D17140805DAB@NWD2CMBX1.ad.analog.com>

On 07/03/2012 10:13 AM, Zhang, Sonic wrote:
> 
> 
>> -----Original Message-----
>> From: Lars-Peter Clausen [mailto:lars@metafoo.de]
>> Sent: Tuesday, July 03, 2012 4:06 PM
>> To: Zhang, Sonic
>> Cc: Axel Lin; Mark Brown; linux-kernel@vger.kernel.org; Liam Girdwood
>> Subject: Re: [PATCH v2] regulator: ad5398: Fix min/max current limit boundary
>> checking
>>
>> On 07/03/2012 09:54 AM, Zhang, Sonic wrote:
>>>
>>>
>>>> -----Original Message-----
>>>> From: Axel Lin [mailto:axel.lin@gmail.com]
>>>> Sent: Tuesday, July 03, 2012 3:43 PM
>>>> To: Mark Brown
>>>> Cc: linux-kernel@vger.kernel.org; Zhang, Sonic; Lars-Peter Clausen; Liam
>>>> Girdwood
>>>> Subject: [PATCH v2] regulator: ad5398: Fix min/max current limit boundary
>>>> checking
>>>>
>>>> It is ok to request current limit with min_uA < chip->min_uA and
>>>> max_uA > chip->max_uA.
>>>>
>>>> We need to set min_uA = chip->min_uA if (min_uA < chip->min_uA),
>>>> this ensures the equation to calcuate selator does not return negative number.
>>>>
>>>
>>> You should not do it in driver. Set a correct min_uA value in your application.
>>
>> I think the patch makes sense. If a application request a current range
>> which overlaps with the range support by the chip, but either the requested
>> min is smaller than the supported min or the requested max is larger than
>> the supported max the driver will fail with an error. E.g.
>>
>> req-min     req-max
>>   |-----------|
>>        |------------|
>>     chip-min  chip-max
>>
>> or even
>>
>> req-min                req-max
>>   |----------------------|
>>        |------------|
>>     chip-min  chip-max
>>
>>
>> While it is obviously possible for the chip to fulfill this request.
>> Axel's patch takes care of this situation and ensures that the request is
>> satisfied and the output current is set to a current within the requested
>> range and the supported range.
> 
> If the requested minimum current is smaller than the capability of the hardware, does a bigger min value fulfill this request?

As long as it is smaller than the maximum requested current, yes. You
request a current range with the regulator API and any value within this
range is fine as the actual output current.

> 
> If this logic is correct, I am fine to ACK.
> 
> 
> Regards,
> 
> Sonic
> 
> 
>>
>> - Lars
>>
>>>
>>> Regards,
>>>
>>> Sonic
>>>
>>>> Signed-off-by: Axel Lin <axel.lin@gmail.com>
>>>> ~
>>>> ---
>>>> drivers/regulator/ad5398.c |    7 ++++---
>>>> 1 file changed, 4 insertions(+), 3 deletions(-)
>>>>
>>>> diff --git a/drivers/regulator/ad5398.c b/drivers/regulator/ad5398.c
>>>> index 46d05f3..84fdcda 100644
>>>> --- a/drivers/regulator/ad5398.c
>>>> +++ b/drivers/regulator/ad5398.c
>>>> @@ -89,9 +89,10 @@ static int ad5398_set_current_limit(struct regulator_dev
>>>> *rdev, int min_uA, int
>>>>       unsigned short data;
>>>>       int ret;
>>>>
>>>> -      if (min_uA > chip->max_uA || min_uA < chip->min_uA)
>>>> -              return -EINVAL;
>>>> -      if (max_uA > chip->max_uA || max_uA < chip->min_uA)
>>>> +      if (min_uA < chip->min_uA)
>>>> +              min_uA = chip->min_uA;
>>>> +
>>>> +      if (min_uA > chip->max_uA || max_uA < chip->min_uA)
>>>>               return -EINVAL;
>>>>
>>>>       selector = DIV_ROUND_UP((min_uA - chip->min_uA) * chip->current_level,
>>>> --
>>>> 1.7.9.5
>>>>
>>>>
>>>>
>>>
>>
> 


  reply	other threads:[~2012-07-03  8:20 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-03  7:42 [PATCH v2] regulator: ad5398: Fix min/max current limit boundary checking Axel Lin
2012-07-03  7:54 ` Zhang, Sonic
2012-07-03  8:06   ` Lars-Peter Clausen
2012-07-03  8:13     ` Zhang, Sonic
2012-07-03  8:24       ` Lars-Peter Clausen [this message]
2012-07-03  8:33         ` Zhang, Sonic
2012-07-03  9:44           ` Axel Lin
2012-07-03  9:51             ` Zhang, Sonic
2012-07-03 11:36               ` Axel Lin
2012-07-04  2:56                 ` Zhang, Sonic
2012-07-04  3:18                   ` Axel Lin
2012-07-04  3:44                     ` Zhang, Sonic

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=4FF2AC24.7090906@metafoo.de \
    --to=lars@metafoo.de \
    --cc=Sonic.Zhang@analog.com \
    --cc=axel.lin@gmail.com \
    --cc=broonie@opensource.wolfsonmicro.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lrg@ti.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.