power: supply: bq24190: Considers FORCE_20PCT when getting IPRECHG

Message ID 20230714174529.287045-1-rriveram@opensource.cirrus.com
State New
Headers
Series power: supply: bq24190: Considers FORCE_20PCT when getting IPRECHG |

Commit Message

Rivera-Matos, Ricardo July 14, 2023, 5:45 p.m. UTC
  Adds a check of the FORCE_20PCT bit when getting the precharge
current value.

According to the bit description for the FORCE_20PCT bit, when
FORCE_20PCT is true, the precharge current target is 50% of
what is configured in the IPRECHG bit field.

Signed-off-by: Ricardo Rivera-Matos <rriveram@opensource.cirrus.com>
Reviewed-by: David Rhodes <drhodes@opensource.cirrus.com>
---
 drivers/power/supply/bq24190_charger.c | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)
  

Comments

Sebastian Reichel July 19, 2023, 8:59 p.m. UTC | #1
Hi,

On Fri, Jul 14, 2023 at 12:45:29PM -0500, Ricardo Rivera-Matos wrote:
> Adds a check of the FORCE_20PCT bit when getting the precharge
> current value.
> 
> According to the bit description for the FORCE_20PCT bit, when
> FORCE_20PCT is true, the precharge current target is 50% of
> what is configured in the IPRECHG bit field.
> 
> Signed-off-by: Ricardo Rivera-Matos <rriveram@opensource.cirrus.com>
> Reviewed-by: David Rhodes <drhodes@opensource.cirrus.com>
> ---

Thanks, queued.

-- Sebastian

>  drivers/power/supply/bq24190_charger.c | 17 +++++++++++++++--
>  1 file changed, 15 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/power/supply/bq24190_charger.c b/drivers/power/supply/bq24190_charger.c
> index ef8235848f56..3f99cb9590ba 100644
> --- a/drivers/power/supply/bq24190_charger.c
> +++ b/drivers/power/supply/bq24190_charger.c
> @@ -965,7 +965,7 @@ static int bq24190_charger_get_precharge(struct bq24190_dev_info *bdi,
>  		union power_supply_propval *val)
>  {
>  	u8 v;
> -	int ret;
> +	int curr, ret;
>  
>  	ret = bq24190_read_mask(bdi, BQ24190_REG_PCTCC,
>  			BQ24190_REG_PCTCC_IPRECHG_MASK,
> @@ -973,7 +973,20 @@ static int bq24190_charger_get_precharge(struct bq24190_dev_info *bdi,
>  	if (ret < 0)
>  		return ret;
>  
> -	val->intval = ++v * 128 * 1000;
> +	curr = ++v * 128 * 1000;
> +
> +	ret = bq24190_read_mask(bdi, BQ24190_REG_CCC,
> +			BQ24190_REG_CCC_FORCE_20PCT_MASK,
> +			BQ24190_REG_CCC_FORCE_20PCT_SHIFT, &v);
> +	if (ret < 0)
> +		return ret;
> +
> +	/* If FORCE_20PCT is enabled, then current is 50% of IPRECHG value */
> +	if (v)
> +		curr /= 2;
> +
> +	val->intval = curr;
> +
>  	return 0;
>  }
>  
> -- 
> 2.34.1
>
  

Patch

diff --git a/drivers/power/supply/bq24190_charger.c b/drivers/power/supply/bq24190_charger.c
index ef8235848f56..3f99cb9590ba 100644
--- a/drivers/power/supply/bq24190_charger.c
+++ b/drivers/power/supply/bq24190_charger.c
@@ -965,7 +965,7 @@  static int bq24190_charger_get_precharge(struct bq24190_dev_info *bdi,
 		union power_supply_propval *val)
 {
 	u8 v;
-	int ret;
+	int curr, ret;
 
 	ret = bq24190_read_mask(bdi, BQ24190_REG_PCTCC,
 			BQ24190_REG_PCTCC_IPRECHG_MASK,
@@ -973,7 +973,20 @@  static int bq24190_charger_get_precharge(struct bq24190_dev_info *bdi,
 	if (ret < 0)
 		return ret;
 
-	val->intval = ++v * 128 * 1000;
+	curr = ++v * 128 * 1000;
+
+	ret = bq24190_read_mask(bdi, BQ24190_REG_CCC,
+			BQ24190_REG_CCC_FORCE_20PCT_MASK,
+			BQ24190_REG_CCC_FORCE_20PCT_SHIFT, &v);
+	if (ret < 0)
+		return ret;
+
+	/* If FORCE_20PCT is enabled, then current is 50% of IPRECHG value */
+	if (v)
+		curr /= 2;
+
+	val->intval = curr;
+
 	return 0;
 }