diff mbox series

power: supply: sc27xx: Add POWER_SUPPLY_PROP_CHARGE_NOW attribute

Message ID 33dba0929575461e38c2e17ac0cc4a8a4e46fa2f.1581658633.git.baolin.wang7@gmail.com (mailing list archive)
State Not Applicable, archived
Headers show
Series power: supply: sc27xx: Add POWER_SUPPLY_PROP_CHARGE_NOW attribute | expand

Commit Message

Baolin Wang Feb. 14, 2020, 5:38 a.m. UTC
Add the POWER_SUPPLY_PROP_CHARGE_NOW attribute to allow user to get
current battery capacity (uAh) to do measurement.

Signed-off-by: Baolin Wang <baolin.wang7@gmail.com>
---
 drivers/power/supply/sc27xx_fuel_gauge.c |   12 ++++++++++++
 1 file changed, 12 insertions(+)

Comments

Sebastian Reichel March 8, 2020, 3:24 a.m. UTC | #1
Hi,

On Fri, Feb 14, 2020 at 01:38:58PM +0800, Baolin Wang wrote:
> Add the POWER_SUPPLY_PROP_CHARGE_NOW attribute to allow user to get
> current battery capacity (uAh) to do measurement.
> 
> Signed-off-by: Baolin Wang <baolin.wang7@gmail.com>
> ---

Thanks, queued to power-supply's for-next branch.

-- Sebastian

>  drivers/power/supply/sc27xx_fuel_gauge.c |   12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff --git a/drivers/power/supply/sc27xx_fuel_gauge.c b/drivers/power/supply/sc27xx_fuel_gauge.c
> index 469c83f..a7c8a84 100644
> --- a/drivers/power/supply/sc27xx_fuel_gauge.c
> +++ b/drivers/power/supply/sc27xx_fuel_gauge.c
> @@ -614,6 +614,17 @@ static int sc27xx_fgu_get_property(struct power_supply *psy,
>  		val->intval = data->total_cap * 1000;
>  		break;
>  
> +	case POWER_SUPPLY_PROP_CHARGE_NOW:
> +		ret = sc27xx_fgu_get_clbcnt(data, &value);
> +		if (ret)
> +			goto error;
> +
> +		value = DIV_ROUND_CLOSEST(value * 10,
> +					  36 * SC27XX_FGU_SAMPLE_HZ);
> +		val->intval = sc27xx_fgu_adc_to_current(data, value);
> +
> +		break;
> +
>  	default:
>  		ret = -EINVAL;
>  		break;
> @@ -682,6 +693,7 @@ static int sc27xx_fgu_property_is_writeable(struct power_supply *psy,
>  	POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE,
>  	POWER_SUPPLY_PROP_ENERGY_FULL_DESIGN,
>  	POWER_SUPPLY_PROP_CALIBRATE,
> +	POWER_SUPPLY_PROP_CHARGE_NOW
>  };
>  
>  static const struct power_supply_desc sc27xx_fgu_desc = {
> -- 
> 1.7.9.5
>
diff mbox series

Patch

diff --git a/drivers/power/supply/sc27xx_fuel_gauge.c b/drivers/power/supply/sc27xx_fuel_gauge.c
index 469c83f..a7c8a84 100644
--- a/drivers/power/supply/sc27xx_fuel_gauge.c
+++ b/drivers/power/supply/sc27xx_fuel_gauge.c
@@ -614,6 +614,17 @@  static int sc27xx_fgu_get_property(struct power_supply *psy,
 		val->intval = data->total_cap * 1000;
 		break;
 
+	case POWER_SUPPLY_PROP_CHARGE_NOW:
+		ret = sc27xx_fgu_get_clbcnt(data, &value);
+		if (ret)
+			goto error;
+
+		value = DIV_ROUND_CLOSEST(value * 10,
+					  36 * SC27XX_FGU_SAMPLE_HZ);
+		val->intval = sc27xx_fgu_adc_to_current(data, value);
+
+		break;
+
 	default:
 		ret = -EINVAL;
 		break;
@@ -682,6 +693,7 @@  static int sc27xx_fgu_property_is_writeable(struct power_supply *psy,
 	POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE,
 	POWER_SUPPLY_PROP_ENERGY_FULL_DESIGN,
 	POWER_SUPPLY_PROP_CALIBRATE,
+	POWER_SUPPLY_PROP_CHARGE_NOW
 };
 
 static const struct power_supply_desc sc27xx_fgu_desc = {