Message ID | 20240226194432.2174095-1-absicsz@gmail.com (mailing list archive) |
---|---|
State | Handled Elsewhere, archived |
Headers | show |
Series | power: supply: bq2415x_charger: report online status | expand |
Hi, On Mon, Feb 26, 2024 at 09:44:32PM +0200, Sicelo A. Mhlongo wrote: > Provide the Online property. This chip does not have specific flags to > indicate the presence of an input voltage, but this can be inferred from > the reported charging status. The datasheet suggests, that you can get the status from the fault bits: 011 - Poor input source or VBUS < UVLO Greetings, -- Sebastian > > Signed-off-by: Sicelo A. Mhlongo <absicsz@gmail.com> > --- > drivers/power/supply/bq2415x_charger.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/drivers/power/supply/bq2415x_charger.c b/drivers/power/supply/bq2415x_charger.c > index 6a4798a62588..5b47a1d0a51a 100644 > --- a/drivers/power/supply/bq2415x_charger.c > +++ b/drivers/power/supply/bq2415x_charger.c > @@ -991,6 +991,7 @@ static enum power_supply_property bq2415x_power_supply_props[] = { > /* TODO: maybe add more power supply properties */ > POWER_SUPPLY_PROP_STATUS, > POWER_SUPPLY_PROP_MODEL_NAME, > + POWER_SUPPLY_PROP_ONLINE, > }; > > static int bq2415x_power_supply_get_property(struct power_supply *psy, > @@ -1017,6 +1018,14 @@ static int bq2415x_power_supply_get_property(struct power_supply *psy, > case POWER_SUPPLY_PROP_MODEL_NAME: > val->strval = bq->model; > break; > + case POWER_SUPPLY_PROP_ONLINE: > + ret = bq2415x_exec_command(bq, BQ2415X_CHARGE_STATUS); > + /* Charger is Online when Charging or Full are reported. It is > + * also likely online for the Unknown/Fault state too, but > + * there is no way to be absolutely sure. > + */ > + val->intval = (ret == 1 || ret == 2); > + break; > default: > return -EINVAL; > } > -- > 2.43.0 >
Hi Sebastian On Tue, Feb 27, 2024 at 09:11:36PM +0100, Sebastian Reichel wrote: > Hi, > > On Mon, Feb 26, 2024 at 09:44:32PM +0200, Sicelo A. Mhlongo wrote: > > Provide the Online property. This chip does not have specific flags to > > indicate the presence of an input voltage, but this can be inferred from > > the reported charging status. > > The datasheet suggests, that you can get the status from the fault > bits: > > 011 - Poor input source or VBUS < UVLO > Absolutely, yes. This particular state, which is a fault condition, clearly indicates VBUS is present. However, when there are no faults at all, then those bits always read `000`. On a running system, one can check this by connecting and disconnecting a charger (Nokia N900 used in my tests) while watching /sys/class/power_supply/bq24150a-0/registers. Only bit 4 changes state. In other words, the fault bits do not appear to be enough to determine the presence of an input voltage. However, looking at them more closely seems to suggest I should respin the patch to also report VBUS online if a fault is reported instead of only during charging and charge full states. Please let me know if this sounds correct, or if I misunderstood your reply. Sincerely Sicelo
Hi, On Tue, Feb 27, 2024 at 11:34:54PM +0200, Sicelo wrote: > On Tue, Feb 27, 2024 at 09:11:36PM +0100, Sebastian Reichel wrote: > > On Mon, Feb 26, 2024 at 09:44:32PM +0200, Sicelo A. Mhlongo wrote: > > > Provide the Online property. This chip does not have specific flags to > > > indicate the presence of an input voltage, but this can be inferred from > > > the reported charging status. > > > > The datasheet suggests, that you can get the status from the fault > > bits: > > > > 011 - Poor input source or VBUS < UVLO > > > Absolutely, yes. This particular state, which is a fault condition, clearly > indicates VBUS is present. I assumed this might be set for a disconnected charger, considering that no input source is a poor input source / 0V is < UVLO. > However, when there are no faults at all, then those bits always read > `000`. On a running system, one can check this by connecting and > disconnecting a charger (Nokia N900 used in my tests) while watching > /sys/class/power_supply/bq24150a-0/registers. Only bit 4 changes state. > In other words, the fault bits do not appear to be enough to determine > the presence of an input voltage. Ok. > However, looking at them more closely seems to suggest I should respin the > patch to also report VBUS online if a fault is reported instead of only > during charging and charge full states. Right, so you can just check for BQ2415X_CHARGE_STATUS != 0. > Please let me know if this sounds correct, or if I misunderstood your > reply. Greetings, -- Sebastian
Good Day On Wed, Feb 28, 2024 at 01:00:20AM +0100, Sebastian Reichel wrote: > > > > > > 011 - Poor input source or VBUS < UVLO > > > > > Absolutely, yes. This particular state, which is a fault condition, clearly > > indicates VBUS is present. > > I assumed this might be set for a disconnected charger, considering > that no input source is a poor input source / 0V is < UVLO. The meaning of that one can be phrased as: you are supplying VBUS, but it is not high enough for the chip to sustain charging. > > However, looking at them more closely seems to suggest I should respin the > > patch to also report VBUS online if a fault is reported instead of only > > during charging and charge full states. > > Right, so you can just check for BQ2415X_CHARGE_STATUS != 0. Thanks. v2 sent. Regards, Sicelo
diff --git a/drivers/power/supply/bq2415x_charger.c b/drivers/power/supply/bq2415x_charger.c index 6a4798a62588..5b47a1d0a51a 100644 --- a/drivers/power/supply/bq2415x_charger.c +++ b/drivers/power/supply/bq2415x_charger.c @@ -991,6 +991,7 @@ static enum power_supply_property bq2415x_power_supply_props[] = { /* TODO: maybe add more power supply properties */ POWER_SUPPLY_PROP_STATUS, POWER_SUPPLY_PROP_MODEL_NAME, + POWER_SUPPLY_PROP_ONLINE, }; static int bq2415x_power_supply_get_property(struct power_supply *psy, @@ -1017,6 +1018,14 @@ static int bq2415x_power_supply_get_property(struct power_supply *psy, case POWER_SUPPLY_PROP_MODEL_NAME: val->strval = bq->model; break; + case POWER_SUPPLY_PROP_ONLINE: + ret = bq2415x_exec_command(bq, BQ2415X_CHARGE_STATUS); + /* Charger is Online when Charging or Full are reported. It is + * also likely online for the Unknown/Fault state too, but + * there is no way to be absolutely sure. + */ + val->intval = (ret == 1 || ret == 2); + break; default: return -EINVAL; }
Provide the Online property. This chip does not have specific flags to indicate the presence of an input voltage, but this can be inferred from the reported charging status. Signed-off-by: Sicelo A. Mhlongo <absicsz@gmail.com> --- drivers/power/supply/bq2415x_charger.c | 9 +++++++++ 1 file changed, 9 insertions(+)