* [PATCHv1 1/1] [Power Supply]: Fix error handling in max17042 fuel gauge
@ 2011-09-02 6:45 Ramakrishna Pallala
0 siblings, 0 replies; 5+ messages in thread
From: Ramakrishna Pallala @ 2011-09-02 6:45 UTC (permalink / raw)
To: linux-kernel
Cc: Anton Vorontsov, dwmw2, MyungJoo Ham, KyungMin Park, Wolfram Sang,
Ramakrishna Pallala, durgadoss.r
In max17042_get_property(...), the values returned by
max17042_read_reg are directly assigned to the variables,
even if the read results in an error.
This patch checks for the return code from max17042_read_reg and
exits the function if there is any error.
Signed-off-by: Ramakrishna Pallala <ramakrishna.pallala@intel.com>
---
drivers/power/max17042_battery.c | 85 ++++++++++++++++++++++++++------------
1 files changed, 58 insertions(+), 27 deletions(-)
diff --git a/drivers/power/max17042_battery.c b/drivers/power/max17042_battery.c
index 98bfab3..cae910d 100644
--- a/drivers/power/max17042_battery.c
+++ b/drivers/power/max17042_battery.c
@@ -84,55 +84,79 @@ static int max17042_get_property(struct power_supply *psy,
{
struct max17042_chip *chip = container_of(psy,
struct max17042_chip, battery);
+ int ret;
switch (psp) {
case POWER_SUPPLY_PROP_PRESENT:
- val->intval = max17042_read_reg(chip->client,
- MAX17042_STATUS);
- if (val->intval & MAX17042_STATUS_BattAbsent)
+ ret = max17042_read_reg(chip->client, MAX17042_STATUS);
+ if (ret < 0)
+ return ret;
+
+ if (ret & MAX17042_STATUS_BattAbsent)
val->intval = 0;
else
val->intval = 1;
break;
case POWER_SUPPLY_PROP_CYCLE_COUNT:
- val->intval = max17042_read_reg(chip->client,
- MAX17042_Cycles);
+ ret = max17042_read_reg(chip->client, MAX17042_Cycles);
+ if (ret < 0)
+ return ret;
+
+ val->intval = ret;
break;
case POWER_SUPPLY_PROP_VOLTAGE_MAX:
- val->intval = max17042_read_reg(chip->client,
- MAX17042_MinMaxVolt);
- val->intval >>= 8;
+ ret = max17042_read_reg(chip->client, MAX17042_MinMaxVolt);
+ if (ret < 0)
+ return ret;
+
+ val->intval = ret >> 8;
val->intval *= 20000; /* Units of LSB = 20mV */
break;
case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN:
- val->intval = max17042_read_reg(chip->client,
- MAX17042_V_empty);
- val->intval >>= 7;
+ ret = max17042_read_reg(chip->client, MAX17042_V_empty);
+ if (ret < 0)
+ return ret;
+
+ val->intval = ret >> 7;
val->intval *= 10000; /* Units of LSB = 10mV */
break;
case POWER_SUPPLY_PROP_VOLTAGE_NOW:
- val->intval = max17042_read_reg(chip->client,
- MAX17042_VCELL) * 83; /* 1000 / 12 = 83 */
+ ret = max17042_read_reg(chip->client, MAX17042_VCELL);
+ if (ret < 0)
+ return ret;
+
+ val->intval = ret * 83; /* 1000 / 12 = 83 */
break;
case POWER_SUPPLY_PROP_VOLTAGE_AVG:
- val->intval = max17042_read_reg(chip->client,
- MAX17042_AvgVCELL) * 83;
+ ret = max17042_read_reg(chip->client, MAX17042_AvgVCELL);
+ if (ret < 0)
+ return ret;
+
+ val->intval = ret * 83; /* 1000 / 12 = 83 */
break;
case POWER_SUPPLY_PROP_CAPACITY:
- val->intval = max17042_read_reg(chip->client,
- MAX17042_SOC) / 256;
+ ret = max17042_read_reg(chip->client, MAX17042_SOC);
+ if (ret < 0)
+ return ret;
+
+ val->intval = ret >> 8;
break;
case POWER_SUPPLY_PROP_CHARGE_FULL:
- val->intval = max17042_read_reg(chip->client,
- MAX17042_RepSOC);
- if ((val->intval / 256) >= MAX17042_BATTERY_FULL)
+ ret = max17042_read_reg(chip->client, MAX17042_RepSOC);
+ if (ret < 0)
+ return ret;
+
+ if ((ret >> 8) >= MAX17042_BATTERY_FULL)
val->intval = 1;
- else if (val->intval >= 0)
+ else if (ret >= 0)
val->intval = 0;
break;
case POWER_SUPPLY_PROP_TEMP:
- val->intval = max17042_read_reg(chip->client,
- MAX17042_TEMP);
+ ret = max17042_read_reg(chip->client, MAX17042_TEMP);
+ if (ret < 0)
+ return ret;
+
+ val->intval = ret;
/* The value is signed. */
if (val->intval & 0x8000) {
val->intval = (0x7fff & ~val->intval) + 1;
@@ -144,8 +168,11 @@ static int max17042_get_property(struct power_supply *psy,
break;
case POWER_SUPPLY_PROP_CURRENT_NOW:
if (chip->pdata->enable_current_sense) {
- val->intval = max17042_read_reg(chip->client,
- MAX17042_Current);
+ ret = max17042_read_reg(chip->client, MAX17042_Current);
+ if (ret < 0)
+ return ret;
+
+ val->intval = ret;
if (val->intval & 0x8000) {
/* Negative */
val->intval = ~val->intval & 0x7fff;
@@ -160,8 +187,12 @@ static int max17042_get_property(struct power_supply *psy,
break;
case POWER_SUPPLY_PROP_CURRENT_AVG:
if (chip->pdata->enable_current_sense) {
- val->intval = max17042_read_reg(chip->client,
- MAX17042_AvgCurrent);
+ ret = max17042_read_reg(chip->client,
+ MAX17042_AvgCurrent);
+ if (ret < 0)
+ return ret;
+
+ val->intval = ret;
if (val->intval & 0x8000) {
/* Negative */
val->intval = ~val->intval & 0x7fff;
--
1.7.0.4
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCHv1 1/1] [Power Supply]: Fix error handling in max17042 fuel gauge
@ 2011-09-05 1:24 MyungJoo Ham
2011-09-07 8:30 ` Pallala, Ramakrishna
0 siblings, 1 reply; 5+ messages in thread
From: MyungJoo Ham @ 2011-09-05 1:24 UTC (permalink / raw)
To: Ramakrishna Pallala, linux-kernel@vger.kernel.org
Cc: Anton Vorontsov, dwmw2@infradead.org, 박경민,
Wolfram Sang, durgadoss.r@intel.com
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=euc-kr, Size: 763 bytes --]
Sender : Ramakrishna Pallala<ramakrishna.pallala@intel.com> Date : 2011-09-02 15:45 (GMT+09:00)
>
> In max17042_get_property(...), the values returned by
> max17042_read_reg are directly assigned to the variables,
> even if the read results in an error.
>
> This patch checks for the return code from max17042_read_reg and
> exits the function if there is any error.
>
> Signed-off-by: Ramakrishna Pallala
> ---
> drivers/power/max17042_battery.c | 85 ++++++++++++++++++++++++++------------
> 1 files changed, 58 insertions(+), 27 deletions(-)
>
Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com>ÿôèº{.nÇ+·®+%Ëÿ±éݶ\x17¥wÿº{.nÇ+·¥{±þG«éÿ{ayº\x1dÊÚë,j\a¢f£¢·hïêÿêçz_è®\x03(éÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?¨èÚ&£ø§~á¶iOæ¬z·vØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?I¥
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: [PATCHv1 1/1] [Power Supply]: Fix error handling in max17042 fuel gauge
2011-09-05 1:24 [PATCHv1 1/1] [Power Supply]: Fix error handling in max17042 fuel gauge MyungJoo Ham
@ 2011-09-07 8:30 ` Pallala, Ramakrishna
2011-11-26 0:15 ` Anton Vorontsov
0 siblings, 1 reply; 5+ messages in thread
From: Pallala, Ramakrishna @ 2011-09-07 8:30 UTC (permalink / raw)
To: myungjoo.ham@samsung.com, linux-kernel@vger.kernel.org
Cc: Anton Vorontsov, dwmw2@infradead.org, 박경민,
Wolfram Sang, R, Durgadoss
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="ks_c_5601-1987", Size: 1237 bytes --]
Hi MyungJoo,
> -----Original Message-----
> From: MyungJoo Ham [mailto:myungjoo.ham@samsung.com]
> Sent: Monday, September 05, 2011 6:55 AM
> To: Pallala, Ramakrishna; linux-kernel@vger.kernel.org
> Cc: Anton Vorontsov; dwmw2@infradead.org; ¹Ú°æ¹Î; Wolfram Sang; R, Durgadoss
> Subject: Re: [PATCHv1 1/1] [Power Supply]: Fix error handling in max17042 fuel gauge
>
> Sender : Ramakrishna Pallala<ramakrishna.pallala@intel.com> Date : 2011-09-02 15:45
> (GMT+09:00)
> >
> > In max17042_get_property(...), the values returned by
> > max17042_read_reg are directly assigned to the variables,
> > even if the read results in an error.
> >
> > This patch checks for the return code from max17042_read_reg and
> > exits the function if there is any error.
> >
> > Signed-off-by: Ramakrishna Pallala
> > ---
> > drivers/power/max17042_battery.c | 85 ++++++++++++++++++++++++++------------
> > 1 files changed, 58 insertions(+), 27 deletions(-)
> >
>
> Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Thanks for the Ack.
When can I expect the patch to be merged ?
Thanks,
Ram
ÿôèº{.nÇ+·®+%Ëÿ±éݶ\x17¥wÿº{.nÇ+·¥{±þG«éÿ{ayº\x1dÊÚë,j\a¢f£¢·hïêÿêçz_è®\x03(éÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?¨èÚ&£ø§~á¶iOæ¬z·vØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?I¥
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCHv1 1/1] [Power Supply]: Fix error handling in max17042 fuel gauge
2011-09-07 8:30 ` Pallala, Ramakrishna
@ 2011-11-26 0:15 ` Anton Vorontsov
2011-11-28 6:01 ` Pallala, Ramakrishna
0 siblings, 1 reply; 5+ messages in thread
From: Anton Vorontsov @ 2011-11-26 0:15 UTC (permalink / raw)
To: Pallala, Ramakrishna
Cc: myungjoo.ham@samsung.com, linux-kernel@vger.kernel.org,
dwmw2@infradead.org, �ڰ���,
Wolfram Sang, R, Durgadoss
On Wed, Sep 07, 2011 at 02:00:29PM +0530, Pallala, Ramakrishna wrote:
> > > In max17042_get_property(...), the values returned by
> > > max17042_read_reg are directly assigned to the variables,
> > > even if the read results in an error.
> > >
> > > This patch checks for the return code from max17042_read_reg and
> > > exits the function if there is any error.
> > >
> > > Signed-off-by: Ramakrishna Pallala
> > > ---
> > > drivers/power/max17042_battery.c | 85 ++++++++++++++++++++++++++------------
> > > 1 files changed, 58 insertions(+), 27 deletions(-)
> > >
> >
> > Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com>
>
> Thanks for the Ack.
> When can I expect the patch to be merged ?
Merged, much thanks!
Note that I had to manually fix conflicts with
commit cf7a8c03db792894f436db5f3ffc44d947b9b068
Author: MyungJoo Ham <myungjoo.ham@samsung.com>
Date: Wed Aug 17 10:18:34 2011 +0900
max17042_battery: Bugfix of incorrect voltage register value interpretation
So, the resulting patch in battery-2.6.git tree as follows, please
check if everything is OK:
- - - -
From: Ramakrishna Pallala <ramakrishna.pallala@intel.com>
Date: Sat, 26 Nov 2011 04:11:15 +0400
Subject: [PATCH] max17042_battery: Fix error handling
In max17042_get_property(...), the values returned by
max17042_read_reg are directly assigned to the variables,
even if the read results in an error.
This patch checks for the return code from max17042_read_reg and
exits the function if there is any error.
Signed-off-by: Ramakrishna Pallala <ramakrishna.pallala@intel.com>
Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Signed-off-by: Anton Vorontsov <cbouatmailru@gmail.com>
---
drivers/power/max17042_battery.c | 85 ++++++++++++++++++++++++++------------
1 files changed, 58 insertions(+), 27 deletions(-)
diff --git a/drivers/power/max17042_battery.c b/drivers/power/max17042_battery.c
index a6dc9c7..10ffa8c 100644
--- a/drivers/power/max17042_battery.c
+++ b/drivers/power/max17042_battery.c
@@ -84,55 +84,79 @@ static int max17042_get_property(struct power_supply *psy,
{
struct max17042_chip *chip = container_of(psy,
struct max17042_chip, battery);
+ int ret;
switch (psp) {
case POWER_SUPPLY_PROP_PRESENT:
- val->intval = max17042_read_reg(chip->client,
- MAX17042_STATUS);
- if (val->intval & MAX17042_STATUS_BattAbsent)
+ ret = max17042_read_reg(chip->client, MAX17042_STATUS);
+ if (ret < 0)
+ return ret;
+
+ if (ret & MAX17042_STATUS_BattAbsent)
val->intval = 0;
else
val->intval = 1;
break;
case POWER_SUPPLY_PROP_CYCLE_COUNT:
- val->intval = max17042_read_reg(chip->client,
- MAX17042_Cycles);
+ ret = max17042_read_reg(chip->client, MAX17042_Cycles);
+ if (ret < 0)
+ return ret;
+
+ val->intval = ret;
break;
case POWER_SUPPLY_PROP_VOLTAGE_MAX:
- val->intval = max17042_read_reg(chip->client,
- MAX17042_MinMaxVolt);
- val->intval >>= 8;
+ ret = max17042_read_reg(chip->client, MAX17042_MinMaxVolt);
+ if (ret < 0)
+ return ret;
+
+ val->intval = ret >> 8;
val->intval *= 20000; /* Units of LSB = 20mV */
break;
case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN:
- val->intval = max17042_read_reg(chip->client,
- MAX17042_V_empty);
- val->intval >>= 7;
+ ret = max17042_read_reg(chip->client, MAX17042_V_empty);
+ if (ret < 0)
+ return ret;
+
+ val->intval = ret >> 7;
val->intval *= 10000; /* Units of LSB = 10mV */
break;
case POWER_SUPPLY_PROP_VOLTAGE_NOW:
- val->intval = max17042_read_reg(chip->client, MAX17042_VCELL)
- * 625 / 8;
+ ret = max17042_read_reg(chip->client, MAX17042_VCELL);
+ if (ret < 0)
+ return ret;
+
+ val->intval = ret * 625 / 8;
break;
case POWER_SUPPLY_PROP_VOLTAGE_AVG:
- val->intval = max17042_read_reg(chip->client, MAX17042_AvgVCELL)
- * 625 / 8;
+ ret = max17042_read_reg(chip->client, MAX17042_AvgVCELL);
+ if (ret < 0)
+ return ret;
+
+ val->intval = ret * 625 / 8;
break;
case POWER_SUPPLY_PROP_CAPACITY:
- val->intval = max17042_read_reg(chip->client,
- MAX17042_SOC) / 256;
+ ret = max17042_read_reg(chip->client, MAX17042_SOC);
+ if (ret < 0)
+ return ret;
+
+ val->intval = ret >> 8;
break;
case POWER_SUPPLY_PROP_CHARGE_FULL:
- val->intval = max17042_read_reg(chip->client,
- MAX17042_RepSOC);
- if ((val->intval / 256) >= MAX17042_BATTERY_FULL)
+ ret = max17042_read_reg(chip->client, MAX17042_RepSOC);
+ if (ret < 0)
+ return ret;
+
+ if ((ret >> 8) >= MAX17042_BATTERY_FULL)
val->intval = 1;
- else if (val->intval >= 0)
+ else if (ret >= 0)
val->intval = 0;
break;
case POWER_SUPPLY_PROP_TEMP:
- val->intval = max17042_read_reg(chip->client,
- MAX17042_TEMP);
+ ret = max17042_read_reg(chip->client, MAX17042_TEMP);
+ if (ret < 0)
+ return ret;
+
+ val->intval = ret;
/* The value is signed. */
if (val->intval & 0x8000) {
val->intval = (0x7fff & ~val->intval) + 1;
@@ -144,8 +168,11 @@ static int max17042_get_property(struct power_supply *psy,
break;
case POWER_SUPPLY_PROP_CURRENT_NOW:
if (chip->pdata->enable_current_sense) {
- val->intval = max17042_read_reg(chip->client,
- MAX17042_Current);
+ ret = max17042_read_reg(chip->client, MAX17042_Current);
+ if (ret < 0)
+ return ret;
+
+ val->intval = ret;
if (val->intval & 0x8000) {
/* Negative */
val->intval = ~val->intval & 0x7fff;
@@ -159,8 +186,12 @@ static int max17042_get_property(struct power_supply *psy,
break;
case POWER_SUPPLY_PROP_CURRENT_AVG:
if (chip->pdata->enable_current_sense) {
- val->intval = max17042_read_reg(chip->client,
- MAX17042_AvgCurrent);
+ ret = max17042_read_reg(chip->client,
+ MAX17042_AvgCurrent);
+ if (ret < 0)
+ return ret;
+
+ val->intval = ret;
if (val->intval & 0x8000) {
/* Negative */
val->intval = ~val->intval & 0x7fff;
--
1.7.5.3
^ permalink raw reply related [flat|nested] 5+ messages in thread
* RE: [PATCHv1 1/1] [Power Supply]: Fix error handling in max17042 fuel gauge
2011-11-26 0:15 ` Anton Vorontsov
@ 2011-11-28 6:01 ` Pallala, Ramakrishna
0 siblings, 0 replies; 5+ messages in thread
From: Pallala, Ramakrishna @ 2011-11-28 6:01 UTC (permalink / raw)
To: Anton Vorontsov
Cc: myungjoo.ham@samsung.com, linux-kernel@vger.kernel.org,
dwmw2@infradead.org, �ڰ���,
Wolfram Sang, R, Durgadoss
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="utf-8", Size: 1756 bytes --]
> -----Original Message-----
> From: Anton Vorontsov [mailto:cbouatmailru@gmail.com]
> Sent: Saturday, November 26, 2011 5:46 AM
> To: Pallala, Ramakrishna
> Cc: myungjoo.ham@samsung.com; linux-kernel@vger.kernel.org; dwmw2@infradead.org; �ڰ���;
> Wolfram Sang; R, Durgadoss
> Subject: Re: [PATCHv1 1/1] [Power Supply]: Fix error handling in max17042 fuel gauge
>
> On Wed, Sep 07, 2011 at 02:00:29PM +0530, Pallala, Ramakrishna wrote:
> > > > In max17042_get_property(...), the values returned by
> > > > max17042_read_reg are directly assigned to the variables,
> > > > even if the read results in an error.
> > > >
> > > > This patch checks for the return code from max17042_read_reg and
> > > > exits the function if there is any error.
> > > >
> > > > Signed-off-by: Ramakrishna Pallala
> > > > ---
> > > > drivers/power/max17042_battery.c | 85 ++++++++++++++++++++++++++------------
> > > > 1 files changed, 58 insertions(+), 27 deletions(-)
> > > >
> > >
> > > Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com>
> >
> > Thanks for the Ack.
> > When can I expect the patch to be merged ?
>
> Merged, much thanks!
>
> Note that I had to manually fix conflicts with
>
> commit cf7a8c03db792894f436db5f3ffc44d947b9b068
> Author: MyungJoo Ham <myungjoo.ham@samsung.com>
> Date: Wed Aug 17 10:18:34 2011 +0900
>
> max17042_battery: Bugfix of incorrect voltage register value interpretation
>
>
> So, the resulting patch in battery-2.6.git tree as follows, please
> check if everything is OK:
The patch looks good.
Thanks for resolving the conflicts :)
Thanks,
Ram
ÿôèº{.nÇ+·®+%Ëÿ±éݶ\x17¥wÿº{.nÇ+·¥{±þG«éÿ{ayº\x1dÊÚë,j\a¢f£¢·hïêÿêçz_è®\x03(éÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?¨èÚ&£ø§~á¶iOæ¬z·vØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?I¥
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2011-11-28 6:01 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-09-05 1:24 [PATCHv1 1/1] [Power Supply]: Fix error handling in max17042 fuel gauge MyungJoo Ham
2011-09-07 8:30 ` Pallala, Ramakrishna
2011-11-26 0:15 ` Anton Vorontsov
2011-11-28 6:01 ` Pallala, Ramakrishna
-- strict thread matches above, loose matches on Subject: below --
2011-09-02 6:45 Ramakrishna Pallala
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox