RE: [PATCH v5 2/2] power/supply: Add support for ltc4162-f/s and ltc4015
From: Paller, Kim Seer
Date: Thu Dec 12 2024 - 00:40:41 EST
> -----Original Message-----
> From: Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxx>
> Sent: Wednesday, December 11, 2024 9:38 AM
> To: Paller, Kim Seer <KimSeer.Paller@xxxxxxxxxx>
> Cc: Rob Herring <robh@xxxxxxxxxx>; Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>;
> Conor Dooley <conor+dt@xxxxxxxxxx>; Mike Looijmans
> <mike.looijmans@xxxxxxxx>; linux-pm@xxxxxxxxxxxxxxx;
> devicetree@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH v5 2/2] power/supply: Add support for ltc4162-f/s and
> ltc4015
>
> [External]
>
> Hi,
>
> On Tue, Dec 10, 2024 at 02:05:06PM +0800, Kim Seer Paller wrote:
> > static int ltc4162l_get_ibat(struct ltc4162l_info *info,
> > union power_supply_propval *val)
> > {
> > + const struct ltc4162l_chip_info *chip_info = info->chip_info;
> > unsigned int regval;
> > int ret;
> >
> > @@ -249,9 +356,8 @@ static int ltc4162l_get_ibat(struct ltc4162l_info
> *info,
> > if (ret)
> > return ret;
> >
> > - /* Signed 16-bit number, 1.466μV / RSNSB amperes/LSB. */
> > ret = (s16)(regval & 0xFFFF);
> > - val->intval = 100 * mult_frac(ret, 14660, (int)info->rsnsb);
> > + val->intval = mult_frac(ret, chip_info->ibat_resolution_uv, info->rsnsb);
>
> ibat_resolution_uv is in picovolt as far as I can see:
>
> 1.466 uV / RSNSB = 1466 nV / RSNSB = 1466000 pV / RSNSB
>
> RSNSB is provided in microOhm and picoVolt / microOhm equals
> microAmp, which is the unit expected by the power-supply
> subsystem.
>
> > return 0;
> > }
> > @@ -260,6 +366,7 @@ static int ltc4162l_get_ibat(struct ltc4162l_info
> *info,
> > static int ltc4162l_get_input_voltage(struct ltc4162l_info *info,
> > union power_supply_propval *val)
> > {
> > + const struct ltc4162l_chip_info *chip_info = info->chip_info;
> > unsigned int regval;
> > int ret;
> >
> > @@ -267,8 +374,7 @@ static int ltc4162l_get_input_voltage(struct
> ltc4162l_info *info,
> > if (ret)
> > return ret;
> >
> > - /* 1.649mV/LSB */
> > - val->intval = regval * 1694;
> > + val->intval = regval * chip_info->vin_resolution_mv;
>
> I believe it should be vin_resolution_uv. Microvolt is what the
> power-supply subsystem wants and 1.649 mV (from the comment above) is
> 1649 uV (from the chip_info->vin_resolution_mv value) :)
Yes, that makes sense. I just used the actual units seen in the datasheet in this case,
but I’ll change it accordingly. Thanks for the correction.
>
> >
> > return 0;
> > }
>
> Otherwise LGTM.
>
> -- Sebastian