All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] power: supply: ltc2941: simplify Qlsb calculation
@ 2022-01-11  2:32 Michał Mirosław
  2022-01-11  2:32 ` [PATCH 2/2] power: supply: ltc2941: clean up error messages Michał Mirosław
  2022-02-11 20:18 ` [PATCH 1/2] power: supply: ltc2941: simplify Qlsb calculation Sebastian Reichel
  0 siblings, 2 replies; 4+ messages in thread
From: Michał Mirosław @ 2022-01-11  2:32 UTC (permalink / raw)
  To: Sebastian Reichel; +Cc: linux-pm, linux-kernel

Replace two divisions with a subtraction+shift for a small code size
improvement and less brackets.

Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
---
 drivers/power/supply/ltc2941-battery-gauge.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/power/supply/ltc2941-battery-gauge.c b/drivers/power/supply/ltc2941-battery-gauge.c
index 09f3e78af4e0..c0cbf4cd59ee 100644
--- a/drivers/power/supply/ltc2941-battery-gauge.c
+++ b/drivers/power/supply/ltc2941-battery-gauge.c
@@ -490,13 +490,13 @@ static int ltc294x_i2c_probe(struct i2c_client *client,
 	if (info->id == LTC2943_ID) {
 		if (prescaler_exp > LTC2943_MAX_PRESCALER_EXP)
 			prescaler_exp = LTC2943_MAX_PRESCALER_EXP;
-		info->Qlsb = ((340 * 50000) / r_sense) /
-				(4096 / (1 << (2*prescaler_exp)));
+		info->Qlsb = ((340 * 50000) / r_sense) >>
+			     (12 - 2*prescaler_exp);
 	} else {
 		if (prescaler_exp > LTC2941_MAX_PRESCALER_EXP)
 			prescaler_exp = LTC2941_MAX_PRESCALER_EXP;
-		info->Qlsb = ((85 * 50000) / r_sense) /
-				(128 / (1 << prescaler_exp));
+		info->Qlsb = ((85 * 50000) / r_sense) >>
+			     (7 - prescaler_exp);
 	}
 
 	/* Read status register to check for LTC2942 */
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] power: supply: ltc2941: clean up error messages
  2022-01-11  2:32 [PATCH 1/2] power: supply: ltc2941: simplify Qlsb calculation Michał Mirosław
@ 2022-01-11  2:32 ` Michał Mirosław
  2022-02-11 20:19   ` Sebastian Reichel
  2022-02-11 20:18 ` [PATCH 1/2] power: supply: ltc2941: simplify Qlsb calculation Sebastian Reichel
  1 sibling, 1 reply; 4+ messages in thread
From: Michał Mirosław @ 2022-01-11  2:32 UTC (permalink / raw)
  To: Sebastian Reichel; +Cc: linux-pm, linux-kernel

Replace dev_err() with dev_err_probe() in probe() and extend register
access failure messages. dev_err()s in _reset() are removed as they
are redundant: register access wrappers already log the error.

Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
---
 drivers/power/supply/ltc2941-battery-gauge.c | 53 ++++++++------------
 1 file changed, 20 insertions(+), 33 deletions(-)

diff --git a/drivers/power/supply/ltc2941-battery-gauge.c b/drivers/power/supply/ltc2941-battery-gauge.c
index c0cbf4cd59ee..657305214d68 100644
--- a/drivers/power/supply/ltc2941-battery-gauge.c
+++ b/drivers/power/supply/ltc2941-battery-gauge.c
@@ -112,7 +112,8 @@ static int ltc294x_read_regs(struct i2c_client *client,
 
 	ret = i2c_transfer(client->adapter, &msgs[0], 2);
 	if (ret < 0) {
-		dev_err(&client->dev, "ltc2941 read_reg failed!\n");
+		dev_err(&client->dev, "ltc2941 read_reg(0x%x[%d]) failed: %pe\n",
+			reg, num_regs, ERR_PTR(ret));
 		return ret;
 	}
 
@@ -130,7 +131,8 @@ static int ltc294x_write_regs(struct i2c_client *client,
 
 	ret = i2c_smbus_write_i2c_block_data(client, reg_start, num_regs, buf);
 	if (ret < 0) {
-		dev_err(&client->dev, "ltc2941 write_reg failed!\n");
+		dev_err(&client->dev, "ltc2941 write_reg(0x%x[%d]) failed: %pe\n",
+			reg, num_regs, ERR_PTR(ret));
 		return ret;
 	}
 
@@ -148,11 +150,8 @@ static int ltc294x_reset(const struct ltc294x_info *info, int prescaler_exp)
 
 	/* Read status and control registers */
 	ret = ltc294x_read_regs(info->client, LTC294X_REG_CONTROL, &value, 1);
-	if (ret < 0) {
-		dev_err(&info->client->dev,
-			"Could not read registers from device\n");
-		goto error_exit;
-	}
+	if (ret < 0)
+		return ret;
 
 	control = LTC294X_REG_CONTROL_PRESCALER_SET(prescaler_exp) |
 				LTC294X_REG_CONTROL_ALCC_CONFIG_DISABLED;
@@ -172,17 +171,11 @@ static int ltc294x_reset(const struct ltc294x_info *info, int prescaler_exp)
 	if (value != control) {
 		ret = ltc294x_write_regs(info->client,
 			LTC294X_REG_CONTROL, &control, 1);
-		if (ret < 0) {
-			dev_err(&info->client->dev,
-				"Could not write register\n");
-			goto error_exit;
-		}
+		if (ret < 0)
+			return ret;
 	}
 
 	return 0;
-
-error_exit:
-	return ret;
 }
 
 static int ltc294x_read_charge_register(const struct ltc294x_info *info,
@@ -472,11 +465,9 @@ static int ltc294x_i2c_probe(struct i2c_client *client,
 	/* r_sense can be negative, when sense+ is connected to the battery
 	 * instead of the sense-. This results in reversed measurements. */
 	ret = of_property_read_u32(np, "lltc,resistor-sense", &r_sense);
-	if (ret < 0) {
-		dev_err(&client->dev,
+	if (ret < 0)
+		return dev_err_probe(&client->dev, ret,
 			"Could not find lltc,resistor-sense in devicetree\n");
-		return ret;
-	}
 	info->r_sense = r_sense;
 
 	ret = of_property_read_u32(np, "lltc,prescaler-exponent",
@@ -502,11 +493,9 @@ static int ltc294x_i2c_probe(struct i2c_client *client,
 	/* Read status register to check for LTC2942 */
 	if (info->id == LTC2941_ID || info->id == LTC2942_ID) {
 		ret = ltc294x_read_regs(client, LTC294X_REG_STATUS, &status, 1);
-		if (ret < 0) {
-			dev_err(&client->dev,
+		if (ret < 0)
+			return dev_err_probe(&client->dev, ret,
 				"Could not read status register\n");
-			return ret;
-		}
 		if (status & LTC2941_REG_STATUS_CHIP_ID)
 			info->id = LTC2941_ID;
 		else
@@ -545,19 +534,17 @@ static int ltc294x_i2c_probe(struct i2c_client *client,
 		return ret;
 
 	ret = ltc294x_reset(info, prescaler_exp);
-	if (ret < 0) {
-		dev_err(&client->dev, "Communication with chip failed\n");
-		return ret;
-	}
+	if (ret < 0)
+		return dev_err_probe(&client->dev, ret,
+			"Communication with chip failed\n");
 
 	info->supply = devm_power_supply_register(&client->dev,
 						  &info->supply_desc, &psy_cfg);
-	if (IS_ERR(info->supply)) {
-		dev_err(&client->dev, "failed to register ltc2941\n");
-		return PTR_ERR(info->supply);
-	} else {
-		schedule_delayed_work(&info->work, LTC294X_WORK_DELAY * HZ);
-	}
+	if (IS_ERR(info->supply))
+		return dev_err_probe(&client->dev, PTR_ERR(info->supply),
+			"failed to register ltc2941\n");
+
+	schedule_delayed_work(&info->work, LTC294X_WORK_DELAY * HZ);
 
 	return 0;
 }
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/2] power: supply: ltc2941: simplify Qlsb calculation
  2022-01-11  2:32 [PATCH 1/2] power: supply: ltc2941: simplify Qlsb calculation Michał Mirosław
  2022-01-11  2:32 ` [PATCH 2/2] power: supply: ltc2941: clean up error messages Michał Mirosław
@ 2022-02-11 20:18 ` Sebastian Reichel
  1 sibling, 0 replies; 4+ messages in thread
From: Sebastian Reichel @ 2022-02-11 20:18 UTC (permalink / raw)
  To: Michał Mirosław; +Cc: linux-pm, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1428 bytes --]

Hi,

On Tue, Jan 11, 2022 at 03:32:40AM +0100, Michał Mirosław wrote:
> Replace two divisions with a subtraction+shift for a small code size
> improvement and less brackets.
> 
> Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
> ---

Thanks, queued.

-- Sebastian

>  drivers/power/supply/ltc2941-battery-gauge.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/power/supply/ltc2941-battery-gauge.c b/drivers/power/supply/ltc2941-battery-gauge.c
> index 09f3e78af4e0..c0cbf4cd59ee 100644
> --- a/drivers/power/supply/ltc2941-battery-gauge.c
> +++ b/drivers/power/supply/ltc2941-battery-gauge.c
> @@ -490,13 +490,13 @@ static int ltc294x_i2c_probe(struct i2c_client *client,
>  	if (info->id == LTC2943_ID) {
>  		if (prescaler_exp > LTC2943_MAX_PRESCALER_EXP)
>  			prescaler_exp = LTC2943_MAX_PRESCALER_EXP;
> -		info->Qlsb = ((340 * 50000) / r_sense) /
> -				(4096 / (1 << (2*prescaler_exp)));
> +		info->Qlsb = ((340 * 50000) / r_sense) >>
> +			     (12 - 2*prescaler_exp);
>  	} else {
>  		if (prescaler_exp > LTC2941_MAX_PRESCALER_EXP)
>  			prescaler_exp = LTC2941_MAX_PRESCALER_EXP;
> -		info->Qlsb = ((85 * 50000) / r_sense) /
> -				(128 / (1 << prescaler_exp));
> +		info->Qlsb = ((85 * 50000) / r_sense) >>
> +			     (7 - prescaler_exp);
>  	}
>  
>  	/* Read status register to check for LTC2942 */
> -- 
> 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 2/2] power: supply: ltc2941: clean up error messages
  2022-01-11  2:32 ` [PATCH 2/2] power: supply: ltc2941: clean up error messages Michał Mirosław
@ 2022-02-11 20:19   ` Sebastian Reichel
  0 siblings, 0 replies; 4+ messages in thread
From: Sebastian Reichel @ 2022-02-11 20:19 UTC (permalink / raw)
  To: Michał Mirosław; +Cc: linux-pm, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 4663 bytes --]

Hi,

On Tue, Jan 11, 2022 at 03:32:41AM +0100, Michał Mirosław wrote:
> Replace dev_err() with dev_err_probe() in probe() and extend register
> access failure messages. dev_err()s in _reset() are removed as they
> are redundant: register access wrappers already log the error.
> 
> Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
> ---

Thanks, queued.

-- Sebastian

>  drivers/power/supply/ltc2941-battery-gauge.c | 53 ++++++++------------
>  1 file changed, 20 insertions(+), 33 deletions(-)
> 
> diff --git a/drivers/power/supply/ltc2941-battery-gauge.c b/drivers/power/supply/ltc2941-battery-gauge.c
> index c0cbf4cd59ee..657305214d68 100644
> --- a/drivers/power/supply/ltc2941-battery-gauge.c
> +++ b/drivers/power/supply/ltc2941-battery-gauge.c
> @@ -112,7 +112,8 @@ static int ltc294x_read_regs(struct i2c_client *client,
>  
>  	ret = i2c_transfer(client->adapter, &msgs[0], 2);
>  	if (ret < 0) {
> -		dev_err(&client->dev, "ltc2941 read_reg failed!\n");
> +		dev_err(&client->dev, "ltc2941 read_reg(0x%x[%d]) failed: %pe\n",
> +			reg, num_regs, ERR_PTR(ret));
>  		return ret;
>  	}
>  
> @@ -130,7 +131,8 @@ static int ltc294x_write_regs(struct i2c_client *client,
>  
>  	ret = i2c_smbus_write_i2c_block_data(client, reg_start, num_regs, buf);
>  	if (ret < 0) {
> -		dev_err(&client->dev, "ltc2941 write_reg failed!\n");
> +		dev_err(&client->dev, "ltc2941 write_reg(0x%x[%d]) failed: %pe\n",
> +			reg, num_regs, ERR_PTR(ret));
>  		return ret;
>  	}
>  
> @@ -148,11 +150,8 @@ static int ltc294x_reset(const struct ltc294x_info *info, int prescaler_exp)
>  
>  	/* Read status and control registers */
>  	ret = ltc294x_read_regs(info->client, LTC294X_REG_CONTROL, &value, 1);
> -	if (ret < 0) {
> -		dev_err(&info->client->dev,
> -			"Could not read registers from device\n");
> -		goto error_exit;
> -	}
> +	if (ret < 0)
> +		return ret;
>  
>  	control = LTC294X_REG_CONTROL_PRESCALER_SET(prescaler_exp) |
>  				LTC294X_REG_CONTROL_ALCC_CONFIG_DISABLED;
> @@ -172,17 +171,11 @@ static int ltc294x_reset(const struct ltc294x_info *info, int prescaler_exp)
>  	if (value != control) {
>  		ret = ltc294x_write_regs(info->client,
>  			LTC294X_REG_CONTROL, &control, 1);
> -		if (ret < 0) {
> -			dev_err(&info->client->dev,
> -				"Could not write register\n");
> -			goto error_exit;
> -		}
> +		if (ret < 0)
> +			return ret;
>  	}
>  
>  	return 0;
> -
> -error_exit:
> -	return ret;
>  }
>  
>  static int ltc294x_read_charge_register(const struct ltc294x_info *info,
> @@ -472,11 +465,9 @@ static int ltc294x_i2c_probe(struct i2c_client *client,
>  	/* r_sense can be negative, when sense+ is connected to the battery
>  	 * instead of the sense-. This results in reversed measurements. */
>  	ret = of_property_read_u32(np, "lltc,resistor-sense", &r_sense);
> -	if (ret < 0) {
> -		dev_err(&client->dev,
> +	if (ret < 0)
> +		return dev_err_probe(&client->dev, ret,
>  			"Could not find lltc,resistor-sense in devicetree\n");
> -		return ret;
> -	}
>  	info->r_sense = r_sense;
>  
>  	ret = of_property_read_u32(np, "lltc,prescaler-exponent",
> @@ -502,11 +493,9 @@ static int ltc294x_i2c_probe(struct i2c_client *client,
>  	/* Read status register to check for LTC2942 */
>  	if (info->id == LTC2941_ID || info->id == LTC2942_ID) {
>  		ret = ltc294x_read_regs(client, LTC294X_REG_STATUS, &status, 1);
> -		if (ret < 0) {
> -			dev_err(&client->dev,
> +		if (ret < 0)
> +			return dev_err_probe(&client->dev, ret,
>  				"Could not read status register\n");
> -			return ret;
> -		}
>  		if (status & LTC2941_REG_STATUS_CHIP_ID)
>  			info->id = LTC2941_ID;
>  		else
> @@ -545,19 +534,17 @@ static int ltc294x_i2c_probe(struct i2c_client *client,
>  		return ret;
>  
>  	ret = ltc294x_reset(info, prescaler_exp);
> -	if (ret < 0) {
> -		dev_err(&client->dev, "Communication with chip failed\n");
> -		return ret;
> -	}
> +	if (ret < 0)
> +		return dev_err_probe(&client->dev, ret,
> +			"Communication with chip failed\n");
>  
>  	info->supply = devm_power_supply_register(&client->dev,
>  						  &info->supply_desc, &psy_cfg);
> -	if (IS_ERR(info->supply)) {
> -		dev_err(&client->dev, "failed to register ltc2941\n");
> -		return PTR_ERR(info->supply);
> -	} else {
> -		schedule_delayed_work(&info->work, LTC294X_WORK_DELAY * HZ);
> -	}
> +	if (IS_ERR(info->supply))
> +		return dev_err_probe(&client->dev, PTR_ERR(info->supply),
> +			"failed to register ltc2941\n");
> +
> +	schedule_delayed_work(&info->work, LTC294X_WORK_DELAY * HZ);
>  
>  	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

end of thread, other threads:[~2022-02-11 20:19 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-11  2:32 [PATCH 1/2] power: supply: ltc2941: simplify Qlsb calculation Michał Mirosław
2022-01-11  2:32 ` [PATCH 2/2] power: supply: ltc2941: clean up error messages Michał Mirosław
2022-02-11 20:19   ` Sebastian Reichel
2022-02-11 20:18 ` [PATCH 1/2] power: supply: ltc2941: simplify Qlsb calculation Sebastian Reichel

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.