Messages in this thread | | | Date | Thu, 6 Sep 2012 14:35:30 -0400 | From | Rhyland Klein <> | Subject | Re: [PATCH] sbs-battery: probe should try talking to the device |
| |
On 09/06/2012 02:32 PM, Olof Johansson wrote: > Turns out this driver doesn't actually try talking to the device at > probe time, so if it's incorrectly configured in the device tree or > platform data (or if the battery has been removed from the system), then > probe will succeed and every access will sit there and time out. The > end result is a possibly laggy system that thinks it has a battery but > can never read status, which isn't very useful. > > Instead, just read any register (I chose status) at probe, and if that > fails, don't register the device. > > Signed-off-by: Olof Johansson <olof@lixom.net> > --- > drivers/power/sbs-battery.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/drivers/power/sbs-battery.c b/drivers/power/sbs-battery.c > index a65e8f5..2f24253 100644 > --- a/drivers/power/sbs-battery.c > +++ b/drivers/power/sbs-battery.c > @@ -760,6 +760,16 @@ static int __devinit sbs_probe(struct i2c_client *client, > > skip_gpio: > > + /* Before we register, we need to make sure we can actually talk > + * to the battery. > + */ > + rc = sbs_read_word_data(client, sbs_data[REG_STATUS].addr); > + if (rc < 0) { > + dev_err(&client->dev, "%s: Failed to get device status\n", > + __func__); > + goto exit_psupply; > + } > + > rc = power_supply_register(&client->dev, &chip->power_supply); > if (rc) { > dev_err(&client->dev, >
Acked-by: Rhyland Klein <rklein@nvidia.com>
-- nvpublic
| |