Message ID | 20211030182813.116672-8-hdegoede@redhat.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
Series | power-suppy/i2c/extcon: Add support for cht-wc PMIC without USB-PD support | expand |
On Sat, Oct 30, 2021 at 08:28:07PM +0200, Hans de Goede wrote: > On boards where the "ti,skip-init" boolean property is set we don't reset > the charger; and on some boards where the fw takes care of initalizition > F_CHG_CFG is set to 0 before handing control over to the OS. > > Explicitly set F_CHG_CFG to 1 on boards where we don't reset the charger, > so that charging is always enabled on these boards, like it is always > enabled on boards where we do reset the charger. We should check if an OTG host mode with powering of bus by bq25890 is not enabled before enable charging. If we boot with OTG device connected, this can cause troubles. > > Signed-off-by: Hans de Goede <hdegoede@redhat.com> > --- > drivers/power/supply/bq25890_charger.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/drivers/power/supply/bq25890_charger.c b/drivers/power/supply/bq25890_charger.c > index 280821a6a6c6..aa4d04d20cdc 100644 > --- a/drivers/power/supply/bq25890_charger.c > +++ b/drivers/power/supply/bq25890_charger.c > @@ -689,6 +689,17 @@ static int bq25890_hw_init(struct bq25890_device *bq) > dev_dbg(bq->dev, "Reset failed %d\n", ret); > return ret; > } > + } else { > + /* > + * Ensure charging is enabled, on some boards where the fw > + * takes care of initalizition F_CHG_CFG is set to 0 before > + * handing control over to the OS. > + */ > + ret = bq25890_field_write(bq, F_CHG_CFG, 1); > + if (ret < 0) { > + dev_dbg(bq->dev, "Enabling charging failed %d\n", ret); > + return ret; > + } > } > > /* disable watchdog */ > -- > 2.31.1 >
diff --git a/drivers/power/supply/bq25890_charger.c b/drivers/power/supply/bq25890_charger.c index 280821a6a6c6..aa4d04d20cdc 100644 --- a/drivers/power/supply/bq25890_charger.c +++ b/drivers/power/supply/bq25890_charger.c @@ -689,6 +689,17 @@ static int bq25890_hw_init(struct bq25890_device *bq) dev_dbg(bq->dev, "Reset failed %d\n", ret); return ret; } + } else { + /* + * Ensure charging is enabled, on some boards where the fw + * takes care of initalizition F_CHG_CFG is set to 0 before + * handing control over to the OS. + */ + ret = bq25890_field_write(bq, F_CHG_CFG, 1); + if (ret < 0) { + dev_dbg(bq->dev, "Enabling charging failed %d\n", ret); + return ret; + } } /* disable watchdog */
On boards where the "ti,skip-init" boolean property is set we don't reset the charger; and on some boards where the fw takes care of initalizition F_CHG_CFG is set to 0 before handing control over to the OS. Explicitly set F_CHG_CFG to 1 on boards where we don't reset the charger, so that charging is always enabled on these boards, like it is always enabled on boards where we do reset the charger. Signed-off-by: Hans de Goede <hdegoede@redhat.com> --- drivers/power/supply/bq25890_charger.c | 11 +++++++++++ 1 file changed, 11 insertions(+)