public inbox for linux-kernel@vger.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:06:17 +0200	[thread overview]
Message-ID: <4FF2A7F9.3090307@metafoo.de> (raw)
In-Reply-To: <DB904C5425BA6F4E8424B3B51A1414D17140805D85@NWD2CMBX1.ad.analog.com>

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.

- 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:02 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 [this message]
2012-07-03  8:13     ` Zhang, Sonic
2012-07-03  8:24       ` Lars-Peter Clausen
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=4FF2A7F9.3090307@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox