* [PATCH v3 1/2] dt-bindings: power: supply: bq256xx: Add ti,no-thermistor property @ 2023-03-23 7:23 Hermes Zhang 2023-03-23 7:23 ` [PATCH v3 2/2] power: supply: bq256xx: Apply TS_IGNORE from devicetree Hermes Zhang 2023-03-23 7:24 ` [PATCH v3 1/2] dt-bindings: power: supply: bq256xx: Add ti,no-thermistor property Krzysztof Kozlowski 0 siblings, 2 replies; 4+ messages in thread From: Hermes Zhang @ 2023-03-23 7:23 UTC (permalink / raw) To: Sebastian Reichel, Rob Herring, Krzysztof Kozlowski, Andrew Davis Cc: linux-kernel, kernel, Hermes Zhang, linux-pm, devicetree Add a new property ti,no-thermistor to indicate that no thermistor is connected to the TS pin of the chip. Signed-off-by: Hermes Zhang <chenhuiz@axis.com> --- Notes: v2: change property name to ti,no-thermistor v3: drop "|" in property description .../bindings/power/supply/bq256xx.yaml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Documentation/devicetree/bindings/power/supply/bq256xx.yaml b/Documentation/devicetree/bindings/power/supply/bq256xx.yaml index 82f382a7ffb3..4fe9c3705265 100644 --- a/Documentation/devicetree/bindings/power/supply/bq256xx.yaml +++ b/Documentation/devicetree/bindings/power/supply/bq256xx.yaml @@ -68,11 +68,29 @@ properties: Interrupt sends an active low, 256 μs pulse to host to report the charger device status and faults. + ti,no-thermistor: + type: boolean + description: Indicates that no thermistor is connected to the TS pin + required: - compatible - reg - monitored-battery +allOf: + - if: + properties: + compatible: + contains: + enum: + - ti,bq25600 + - ti,bq25601 + - ti,bq25600d + - ti,bq25601d + then: + properties: + ti,no-thermistor: false + additionalProperties: false examples: -- 2.30.2 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v3 2/2] power: supply: bq256xx: Apply TS_IGNORE from devicetree 2023-03-23 7:23 [PATCH v3 1/2] dt-bindings: power: supply: bq256xx: Add ti,no-thermistor property Hermes Zhang @ 2023-03-23 7:23 ` Hermes Zhang 2023-03-29 22:58 ` Sebastian Reichel 2023-03-23 7:24 ` [PATCH v3 1/2] dt-bindings: power: supply: bq256xx: Add ti,no-thermistor property Krzysztof Kozlowski 1 sibling, 1 reply; 4+ messages in thread From: Hermes Zhang @ 2023-03-23 7:23 UTC (permalink / raw) To: Sebastian Reichel, Rob Herring, Krzysztof Kozlowski, Andrew Davis Cc: linux-kernel, kernel, Hermes Zhang, linux-pm, devicetree TS_IGNORE is default off in bq256xx chip. For some HW which doesn't have the NTC, we need to set TS_IGNORE to 1 to make the charge work. The new "ti,no-thermistor" is introduced to toggle it. Signed-off-by: Hermes Zhang <chenhuiz@axis.com> --- Notes: v2: change property name to ti,no-thermistor v3: drop "|" in property description drivers/power/supply/bq256xx_charger.c | 28 ++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/drivers/power/supply/bq256xx_charger.c b/drivers/power/supply/bq256xx_charger.c index 9cf4936440c9..cacaae1d559b 100644 --- a/drivers/power/supply/bq256xx_charger.c +++ b/drivers/power/supply/bq256xx_charger.c @@ -41,6 +41,9 @@ #define BQ256XX_IINDPM_MAX_uA 3200000 #define BQ256XX_IINDPM_DEF_uA 2400000 +#define BQ256XX_TS_IGNORE BIT(6) +#define BQ256XX_TS_IGNORE_SHIFT 6 + #define BQ256XX_VINDPM_MASK GENMASK(3, 0) #define BQ256XX_VINDPM_STEP_uV 100000 #define BQ256XX_VINDPM_OFFSET_uV 3900000 @@ -153,6 +156,7 @@ * @vindpm: input voltage limit * @ichg_max: maximum fast charge current * @vbatreg_max: maximum charge voltage + * @ts_ignore: TS_IGNORE flag */ struct bq256xx_init_data { u32 ichg; @@ -163,6 +167,7 @@ struct bq256xx_init_data { u32 vindpm; u32 ichg_max; u32 vbatreg_max; + bool ts_ignore; }; /** @@ -259,6 +264,7 @@ struct bq256xx_device { * @bq256xx_set_iterm: pointer to instance specific set_iterm function * @bq256xx_set_iprechg: pointer to instance specific set_iprechg function * @bq256xx_set_vindpm: pointer to instance specific set_vindpm function + * @bq256xx_set_ts_ignore: pointer to instance specific set_ts_ignore function * * @bq256xx_def_ichg: default ichg value in microamps * @bq256xx_def_iindpm: default iindpm value in microamps @@ -290,6 +296,7 @@ struct bq256xx_chip_info { int (*bq256xx_set_iterm)(struct bq256xx_device *bq, int iterm); int (*bq256xx_set_iprechg)(struct bq256xx_device *bq, int iprechg); int (*bq256xx_set_vindpm)(struct bq256xx_device *bq, int vindpm); + int (*bq256xx_set_ts_ignore)(struct bq256xx_device *bq, bool ts_ignore); int bq256xx_def_ichg; int bq256xx_def_iindpm; @@ -670,6 +677,12 @@ static int bq25601d_set_chrg_volt(struct bq256xx_device *bq, int vbatreg) BQ256XX_VBATREG_BIT_SHIFT); } +static int bq256xx_set_ts_ignore(struct bq256xx_device *bq, bool ts_ignore) +{ + return regmap_update_bits(bq->regmap, BQ256XX_INPUT_CURRENT_LIMIT, + BQ256XX_TS_IGNORE, (ts_ignore ? 1 : 0) << BQ256XX_TS_IGNORE_SHIFT); +} + static int bq256xx_get_prechrg_curr(struct bq256xx_device *bq) { unsigned int prechg_and_term_curr_lim; @@ -1279,6 +1292,7 @@ static const struct bq256xx_chip_info bq256xx_chip_info_tbl[] = { .bq256xx_get_iterm = bq256xx_get_term_curr, .bq256xx_get_iprechg = bq256xx_get_prechrg_curr, .bq256xx_get_vindpm = bq256xx_get_input_volt_lim, + .bq256xx_set_ts_ignore = NULL, .bq256xx_set_ichg = bq256xx_set_ichg_curr, .bq256xx_set_iindpm = bq256xx_set_input_curr_lim, @@ -1316,6 +1330,7 @@ static const struct bq256xx_chip_info bq256xx_chip_info_tbl[] = { .bq256xx_set_iterm = bq256xx_set_term_curr, .bq256xx_set_iprechg = bq256xx_set_prechrg_curr, .bq256xx_set_vindpm = bq256xx_set_input_volt_lim, + .bq256xx_set_ts_ignore = NULL, .bq256xx_def_ichg = BQ2560X_ICHG_DEF_uA, .bq256xx_def_iindpm = BQ256XX_IINDPM_DEF_uA, @@ -1346,6 +1361,7 @@ static const struct bq256xx_chip_info bq256xx_chip_info_tbl[] = { .bq256xx_set_iterm = bq256xx_set_term_curr, .bq256xx_set_iprechg = bq256xx_set_prechrg_curr, .bq256xx_set_vindpm = bq256xx_set_input_volt_lim, + .bq256xx_set_ts_ignore = NULL, .bq256xx_def_ichg = BQ2560X_ICHG_DEF_uA, .bq256xx_def_iindpm = BQ256XX_IINDPM_DEF_uA, @@ -1376,6 +1392,7 @@ static const struct bq256xx_chip_info bq256xx_chip_info_tbl[] = { .bq256xx_set_iterm = bq256xx_set_term_curr, .bq256xx_set_iprechg = bq256xx_set_prechrg_curr, .bq256xx_set_vindpm = bq256xx_set_input_volt_lim, + .bq256xx_set_ts_ignore = NULL, .bq256xx_def_ichg = BQ2560X_ICHG_DEF_uA, .bq256xx_def_iindpm = BQ256XX_IINDPM_DEF_uA, @@ -1406,6 +1423,7 @@ static const struct bq256xx_chip_info bq256xx_chip_info_tbl[] = { .bq256xx_set_iterm = bq256xx_set_term_curr, .bq256xx_set_iprechg = bq256xx_set_prechrg_curr, .bq256xx_set_vindpm = bq256xx_set_input_volt_lim, + .bq256xx_set_ts_ignore = bq256xx_set_ts_ignore, .bq256xx_def_ichg = BQ25611D_ICHG_DEF_uA, .bq256xx_def_iindpm = BQ256XX_IINDPM_DEF_uA, @@ -1436,6 +1454,7 @@ static const struct bq256xx_chip_info bq256xx_chip_info_tbl[] = { .bq256xx_set_iterm = bq25618_619_set_term_curr, .bq256xx_set_iprechg = bq25618_619_set_prechrg_curr, .bq256xx_set_vindpm = bq256xx_set_input_volt_lim, + .bq256xx_set_ts_ignore = bq256xx_set_ts_ignore, .bq256xx_def_ichg = BQ25618_ICHG_DEF_uA, .bq256xx_def_iindpm = BQ256XX_IINDPM_DEF_uA, @@ -1466,6 +1485,7 @@ static const struct bq256xx_chip_info bq256xx_chip_info_tbl[] = { .bq256xx_set_iterm = bq25618_619_set_term_curr, .bq256xx_set_iprechg = bq25618_619_set_prechrg_curr, .bq256xx_set_vindpm = bq256xx_set_input_volt_lim, + .bq256xx_set_ts_ignore = bq256xx_set_ts_ignore, .bq256xx_def_ichg = BQ25618_ICHG_DEF_uA, .bq256xx_def_iindpm = BQ256XX_IINDPM_DEF_uA, @@ -1582,6 +1602,12 @@ static int bq256xx_hw_init(struct bq256xx_device *bq) if (ret) return ret; + if (bq->chip_info->bq256xx_set_ts_ignore) { + ret = bq->chip_info->bq256xx_set_ts_ignore(bq, bq->init_data.ts_ignore); + if (ret) + return ret; + } + power_supply_put_battery_info(bq->charger, bat_info); return 0; @@ -1616,6 +1642,8 @@ static int bq256xx_parse_dt(struct bq256xx_device *bq, if (ret) bq->init_data.iindpm = bq->chip_info->bq256xx_def_iindpm; + bq->init_data.ts_ignore = device_property_read_bool(bq->dev, "ti,no-thermistor"); + return 0; } -- 2.30.2 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v3 2/2] power: supply: bq256xx: Apply TS_IGNORE from devicetree 2023-03-23 7:23 ` [PATCH v3 2/2] power: supply: bq256xx: Apply TS_IGNORE from devicetree Hermes Zhang @ 2023-03-29 22:58 ` Sebastian Reichel 0 siblings, 0 replies; 4+ messages in thread From: Sebastian Reichel @ 2023-03-29 22:58 UTC (permalink / raw) To: Hermes Zhang Cc: Rob Herring, Krzysztof Kozlowski, Andrew Davis, linux-kernel, kernel, linux-pm, devicetree [-- Attachment #1: Type: text/plain, Size: 6504 bytes --] Hi, On Thu, Mar 23, 2023 at 03:23:47PM +0800, Hermes Zhang wrote: > TS_IGNORE is default off in bq256xx chip. For some HW which doesn't have > the NTC, we need to set TS_IGNORE to 1 to make the charge work. The new > "ti,no-thermistor" is introduced to toggle it. > > Signed-off-by: Hermes Zhang <chenhuiz@axis.com> > --- Does not apply, please rebase against latest power-supply for-next branch. -- Sebastian > Notes: > v2: change property name to ti,no-thermistor > > v3: drop "|" in property description > > drivers/power/supply/bq256xx_charger.c | 28 ++++++++++++++++++++++++++ > 1 file changed, 28 insertions(+) > > diff --git a/drivers/power/supply/bq256xx_charger.c b/drivers/power/supply/bq256xx_charger.c > index 9cf4936440c9..cacaae1d559b 100644 > --- a/drivers/power/supply/bq256xx_charger.c > +++ b/drivers/power/supply/bq256xx_charger.c > @@ -41,6 +41,9 @@ > #define BQ256XX_IINDPM_MAX_uA 3200000 > #define BQ256XX_IINDPM_DEF_uA 2400000 > > +#define BQ256XX_TS_IGNORE BIT(6) > +#define BQ256XX_TS_IGNORE_SHIFT 6 > + > #define BQ256XX_VINDPM_MASK GENMASK(3, 0) > #define BQ256XX_VINDPM_STEP_uV 100000 > #define BQ256XX_VINDPM_OFFSET_uV 3900000 > @@ -153,6 +156,7 @@ > * @vindpm: input voltage limit > * @ichg_max: maximum fast charge current > * @vbatreg_max: maximum charge voltage > + * @ts_ignore: TS_IGNORE flag > */ > struct bq256xx_init_data { > u32 ichg; > @@ -163,6 +167,7 @@ struct bq256xx_init_data { > u32 vindpm; > u32 ichg_max; > u32 vbatreg_max; > + bool ts_ignore; > }; > > /** > @@ -259,6 +264,7 @@ struct bq256xx_device { > * @bq256xx_set_iterm: pointer to instance specific set_iterm function > * @bq256xx_set_iprechg: pointer to instance specific set_iprechg function > * @bq256xx_set_vindpm: pointer to instance specific set_vindpm function > + * @bq256xx_set_ts_ignore: pointer to instance specific set_ts_ignore function > * > * @bq256xx_def_ichg: default ichg value in microamps > * @bq256xx_def_iindpm: default iindpm value in microamps > @@ -290,6 +296,7 @@ struct bq256xx_chip_info { > int (*bq256xx_set_iterm)(struct bq256xx_device *bq, int iterm); > int (*bq256xx_set_iprechg)(struct bq256xx_device *bq, int iprechg); > int (*bq256xx_set_vindpm)(struct bq256xx_device *bq, int vindpm); > + int (*bq256xx_set_ts_ignore)(struct bq256xx_device *bq, bool ts_ignore); > > int bq256xx_def_ichg; > int bq256xx_def_iindpm; > @@ -670,6 +677,12 @@ static int bq25601d_set_chrg_volt(struct bq256xx_device *bq, int vbatreg) > BQ256XX_VBATREG_BIT_SHIFT); > } > > +static int bq256xx_set_ts_ignore(struct bq256xx_device *bq, bool ts_ignore) > +{ > + return regmap_update_bits(bq->regmap, BQ256XX_INPUT_CURRENT_LIMIT, > + BQ256XX_TS_IGNORE, (ts_ignore ? 1 : 0) << BQ256XX_TS_IGNORE_SHIFT); > +} > + > static int bq256xx_get_prechrg_curr(struct bq256xx_device *bq) > { > unsigned int prechg_and_term_curr_lim; > @@ -1279,6 +1292,7 @@ static const struct bq256xx_chip_info bq256xx_chip_info_tbl[] = { > .bq256xx_get_iterm = bq256xx_get_term_curr, > .bq256xx_get_iprechg = bq256xx_get_prechrg_curr, > .bq256xx_get_vindpm = bq256xx_get_input_volt_lim, > + .bq256xx_set_ts_ignore = NULL, > > .bq256xx_set_ichg = bq256xx_set_ichg_curr, > .bq256xx_set_iindpm = bq256xx_set_input_curr_lim, > @@ -1316,6 +1330,7 @@ static const struct bq256xx_chip_info bq256xx_chip_info_tbl[] = { > .bq256xx_set_iterm = bq256xx_set_term_curr, > .bq256xx_set_iprechg = bq256xx_set_prechrg_curr, > .bq256xx_set_vindpm = bq256xx_set_input_volt_lim, > + .bq256xx_set_ts_ignore = NULL, > > .bq256xx_def_ichg = BQ2560X_ICHG_DEF_uA, > .bq256xx_def_iindpm = BQ256XX_IINDPM_DEF_uA, > @@ -1346,6 +1361,7 @@ static const struct bq256xx_chip_info bq256xx_chip_info_tbl[] = { > .bq256xx_set_iterm = bq256xx_set_term_curr, > .bq256xx_set_iprechg = bq256xx_set_prechrg_curr, > .bq256xx_set_vindpm = bq256xx_set_input_volt_lim, > + .bq256xx_set_ts_ignore = NULL, > > .bq256xx_def_ichg = BQ2560X_ICHG_DEF_uA, > .bq256xx_def_iindpm = BQ256XX_IINDPM_DEF_uA, > @@ -1376,6 +1392,7 @@ static const struct bq256xx_chip_info bq256xx_chip_info_tbl[] = { > .bq256xx_set_iterm = bq256xx_set_term_curr, > .bq256xx_set_iprechg = bq256xx_set_prechrg_curr, > .bq256xx_set_vindpm = bq256xx_set_input_volt_lim, > + .bq256xx_set_ts_ignore = NULL, > > .bq256xx_def_ichg = BQ2560X_ICHG_DEF_uA, > .bq256xx_def_iindpm = BQ256XX_IINDPM_DEF_uA, > @@ -1406,6 +1423,7 @@ static const struct bq256xx_chip_info bq256xx_chip_info_tbl[] = { > .bq256xx_set_iterm = bq256xx_set_term_curr, > .bq256xx_set_iprechg = bq256xx_set_prechrg_curr, > .bq256xx_set_vindpm = bq256xx_set_input_volt_lim, > + .bq256xx_set_ts_ignore = bq256xx_set_ts_ignore, > > .bq256xx_def_ichg = BQ25611D_ICHG_DEF_uA, > .bq256xx_def_iindpm = BQ256XX_IINDPM_DEF_uA, > @@ -1436,6 +1454,7 @@ static const struct bq256xx_chip_info bq256xx_chip_info_tbl[] = { > .bq256xx_set_iterm = bq25618_619_set_term_curr, > .bq256xx_set_iprechg = bq25618_619_set_prechrg_curr, > .bq256xx_set_vindpm = bq256xx_set_input_volt_lim, > + .bq256xx_set_ts_ignore = bq256xx_set_ts_ignore, > > .bq256xx_def_ichg = BQ25618_ICHG_DEF_uA, > .bq256xx_def_iindpm = BQ256XX_IINDPM_DEF_uA, > @@ -1466,6 +1485,7 @@ static const struct bq256xx_chip_info bq256xx_chip_info_tbl[] = { > .bq256xx_set_iterm = bq25618_619_set_term_curr, > .bq256xx_set_iprechg = bq25618_619_set_prechrg_curr, > .bq256xx_set_vindpm = bq256xx_set_input_volt_lim, > + .bq256xx_set_ts_ignore = bq256xx_set_ts_ignore, > > .bq256xx_def_ichg = BQ25618_ICHG_DEF_uA, > .bq256xx_def_iindpm = BQ256XX_IINDPM_DEF_uA, > @@ -1582,6 +1602,12 @@ static int bq256xx_hw_init(struct bq256xx_device *bq) > if (ret) > return ret; > > + if (bq->chip_info->bq256xx_set_ts_ignore) { > + ret = bq->chip_info->bq256xx_set_ts_ignore(bq, bq->init_data.ts_ignore); > + if (ret) > + return ret; > + } > + > power_supply_put_battery_info(bq->charger, bat_info); > > return 0; > @@ -1616,6 +1642,8 @@ static int bq256xx_parse_dt(struct bq256xx_device *bq, > if (ret) > bq->init_data.iindpm = bq->chip_info->bq256xx_def_iindpm; > > + bq->init_data.ts_ignore = device_property_read_bool(bq->dev, "ti,no-thermistor"); > + > return 0; > } > > -- > 2.30.2 > [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v3 1/2] dt-bindings: power: supply: bq256xx: Add ti,no-thermistor property 2023-03-23 7:23 [PATCH v3 1/2] dt-bindings: power: supply: bq256xx: Add ti,no-thermistor property Hermes Zhang 2023-03-23 7:23 ` [PATCH v3 2/2] power: supply: bq256xx: Apply TS_IGNORE from devicetree Hermes Zhang @ 2023-03-23 7:24 ` Krzysztof Kozlowski 1 sibling, 0 replies; 4+ messages in thread From: Krzysztof Kozlowski @ 2023-03-23 7:24 UTC (permalink / raw) To: Hermes Zhang, Sebastian Reichel, Rob Herring, Krzysztof Kozlowski, Andrew Davis Cc: linux-kernel, kernel, linux-pm, devicetree On 23/03/2023 08:23, Hermes Zhang wrote: > Add a new property ti,no-thermistor to indicate that no thermistor is > connected to the TS pin of the chip. > > Signed-off-by: Hermes Zhang <chenhuiz@axis.com> > --- > > Notes: > v2: change property name to ti,no-thermistor This is a friendly reminder during the review process. It looks like you received a tag and forgot to add it. If you do not know the process, here is a short explanation: Please add Acked-by/Reviewed-by/Tested-by tags when posting new versions. However, there's no need to repost patches *only* to add the tags. The upstream maintainer will do that for acks received on the version they apply. https://elixir.bootlin.com/linux/v5.17/source/Documentation/process/submitting-patches.rst#L540 If a tag was not added on purpose, please state why and what changed. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-03-29 22:58 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-03-23 7:23 [PATCH v3 1/2] dt-bindings: power: supply: bq256xx: Add ti,no-thermistor property Hermes Zhang 2023-03-23 7:23 ` [PATCH v3 2/2] power: supply: bq256xx: Apply TS_IGNORE from devicetree Hermes Zhang 2023-03-29 22:58 ` Sebastian Reichel 2023-03-23 7:24 ` [PATCH v3 1/2] dt-bindings: power: supply: bq256xx: Add ti,no-thermistor property Krzysztof Kozlowski
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).