diff mbox series

[v6,07/12] power: supply: smb347-charger: Utilize generic regmap caching

Message ID 20210731173842.19643-8-digetx@gmail.com
State New
Headers show
Series Add OTG mode support to Tegra USB PHY, SMB347 and Nexus 7 | expand

Commit Message

Dmitry Osipenko July 31, 2021, 5:38 p.m. UTC
Utilize generic regmap caching in order to avoid unnecessary slow I2C
accesses to all constant registers each time the supply status updated
and remove local caching of charger state to make code cleaner.

Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
---
 drivers/power/supply/smb347-charger.c | 16 ++++------------
 1 file changed, 4 insertions(+), 12 deletions(-)

Comments

Sebastian Reichel Aug. 6, 2021, 9:13 p.m. UTC | #1
Hi,

On Sat, Jul 31, 2021 at 08:38:37PM +0300, Dmitry Osipenko wrote:
> Utilize generic regmap caching in order to avoid unnecessary slow I2C
> accesses to all constant registers each time the supply status updated
> and remove local caching of charger state to make code cleaner.
> 
> Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
> ---

Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>

-- Sebastian

>  drivers/power/supply/smb347-charger.c | 16 ++++------------
>  1 file changed, 4 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/power/supply/smb347-charger.c b/drivers/power/supply/smb347-charger.c
> index db1378b41f80..27254e6efdde 100644
> --- a/drivers/power/supply/smb347-charger.c
> +++ b/drivers/power/supply/smb347-charger.c
> @@ -135,7 +135,6 @@
>   * @id: SMB charger ID
>   * @mains_online: is AC/DC input connected
>   * @usb_online: is USB input connected
> - * @charging_enabled: is charging enabled
>   * @irq_unsupported: is interrupt unsupported by SMB hardware
>   * @max_charge_current: maximum current (in uA) the battery can be charged
>   * @max_charge_voltage: maximum voltage (in uV) the battery can be charged
> @@ -192,7 +191,6 @@ struct smb347_charger {
>  	unsigned int		id;
>  	bool			mains_online;
>  	bool			usb_online;
> -	bool			charging_enabled;
>  	bool			irq_unsupported;
>  
>  	unsigned int		max_charge_current;
> @@ -358,21 +356,13 @@ static int smb347_charging_status(struct smb347_charger *smb)
>  
>  static int smb347_charging_set(struct smb347_charger *smb, bool enable)
>  {
> -	int ret = 0;
> -
>  	if (smb->enable_control != SMB3XX_CHG_ENABLE_SW) {
>  		dev_dbg(smb->dev, "charging enable/disable in SW disabled\n");
>  		return 0;
>  	}
>  
> -	if (smb->charging_enabled != enable) {
> -		ret = regmap_update_bits(smb->regmap, CMD_A, CMD_A_CHG_ENABLED,
> -					 enable ? CMD_A_CHG_ENABLED : 0);
> -		if (!ret)
> -			smb->charging_enabled = enable;
> -	}
> -
> -	return ret;
> +	return regmap_update_bits(smb->regmap, CMD_A, CMD_A_CHG_ENABLED,
> +				  enable ? CMD_A_CHG_ENABLED : 0);
>  }
>  
>  static inline int smb347_charging_enable(struct smb347_charger *smb)
> @@ -1310,6 +1300,8 @@ static const struct regmap_config smb347_regmap = {
>  	.max_register	= SMB347_MAX_REGISTER,
>  	.volatile_reg	= smb347_volatile_reg,
>  	.readable_reg	= smb347_readable_reg,
> +	.cache_type	= REGCACHE_FLAT,
> +	.num_reg_defaults_raw = SMB347_MAX_REGISTER,
>  };
>  
>  static const struct power_supply_desc smb347_mains_desc = {
> -- 
> 2.32.0
>
diff mbox series

Patch

diff --git a/drivers/power/supply/smb347-charger.c b/drivers/power/supply/smb347-charger.c
index db1378b41f80..27254e6efdde 100644
--- a/drivers/power/supply/smb347-charger.c
+++ b/drivers/power/supply/smb347-charger.c
@@ -135,7 +135,6 @@ 
  * @id: SMB charger ID
  * @mains_online: is AC/DC input connected
  * @usb_online: is USB input connected
- * @charging_enabled: is charging enabled
  * @irq_unsupported: is interrupt unsupported by SMB hardware
  * @max_charge_current: maximum current (in uA) the battery can be charged
  * @max_charge_voltage: maximum voltage (in uV) the battery can be charged
@@ -192,7 +191,6 @@  struct smb347_charger {
 	unsigned int		id;
 	bool			mains_online;
 	bool			usb_online;
-	bool			charging_enabled;
 	bool			irq_unsupported;
 
 	unsigned int		max_charge_current;
@@ -358,21 +356,13 @@  static int smb347_charging_status(struct smb347_charger *smb)
 
 static int smb347_charging_set(struct smb347_charger *smb, bool enable)
 {
-	int ret = 0;
-
 	if (smb->enable_control != SMB3XX_CHG_ENABLE_SW) {
 		dev_dbg(smb->dev, "charging enable/disable in SW disabled\n");
 		return 0;
 	}
 
-	if (smb->charging_enabled != enable) {
-		ret = regmap_update_bits(smb->regmap, CMD_A, CMD_A_CHG_ENABLED,
-					 enable ? CMD_A_CHG_ENABLED : 0);
-		if (!ret)
-			smb->charging_enabled = enable;
-	}
-
-	return ret;
+	return regmap_update_bits(smb->regmap, CMD_A, CMD_A_CHG_ENABLED,
+				  enable ? CMD_A_CHG_ENABLED : 0);
 }
 
 static inline int smb347_charging_enable(struct smb347_charger *smb)
@@ -1310,6 +1300,8 @@  static const struct regmap_config smb347_regmap = {
 	.max_register	= SMB347_MAX_REGISTER,
 	.volatile_reg	= smb347_volatile_reg,
 	.readable_reg	= smb347_readable_reg,
+	.cache_type	= REGCACHE_FLAT,
+	.num_reg_defaults_raw = SMB347_MAX_REGISTER,
 };
 
 static const struct power_supply_desc smb347_mains_desc = {