Messages in this thread | | | From | "Zhang, Sonic" <> | Date | Tue, 3 Jul 2012 22:56:18 -0400 | Subject | RE: [PATCH v2] regulator: ad5398: Fix min/max current limit boundary checking |
| |
>-----Original Message----- >From: Axel Lin [mailto:axel.lin@gmail.com] >Sent: Tuesday, July 03, 2012 7:36 PM >To: Zhang, Sonic >Cc: Lars-Peter Clausen; Mark Brown; linux-kernel@vger.kernel.org; Liam >Girdwood >Subject: RE: [PATCH v2] regulator: ad5398: Fix min/max current limit boundary >checking > > >> >The equation to calculate the selector does not depend on max_uA. >> >So I think we don't need to set the requested max_uA. >> > >> >> But, ad5398_set_current_limit() behaves different for min_uA and max_uA with >you patch. Is this expected? >> > >What we want is to set the smallest current supported by this hardware >within the range you requested. > >Current code uses below equation to choose selector: >selector = DIV_ROUND_UP((min_uA - chip->min_uA) * chip->current_level, > range_uA); > >With this equation, we need to ensure min_uA >= chip->min_uA, >otherwise it returns a negative selector. > >That is why we need to add: >if (min_uA < chip->min_uA) > min_uA = chip->min_uA; >
Yes, but if you apply this logic to min_uA, you should apply the same logic to max_uA, even though it is not used in your application.
Sonic
> >Axel >
| |