Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 283421
b: refs/heads/master
c: 35c3ae5
h: refs/heads/master
i:
  283419: 0e0f009
v: v3
  • Loading branch information
Mark Brown authored and Anton Vorontsov committed Aug 19, 2011
1 parent 36d2bc1 commit 91a37f3
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 19 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 9ad63986c606c60e2e916b1b96f22991f966d9cc
refs/heads/master: 35c3ae5eef3fc641c75c5e1e4307835c8efa5f6b
4 changes: 2 additions & 2 deletions trunk/drivers/power/power_supply_sysfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,8 @@ static ssize_t power_supply_show_property(struct device *dev,
dev_dbg(dev, "driver has no data for `%s' property\n",
attr->attr.name);
else if (ret != -ENODEV)
dev_err(dev, "driver failed to report `%s' property\n",
attr->attr.name);
dev_err(dev, "driver failed to report `%s' property: %d\n",
attr->attr.name, ret);
return ret;
}

Expand Down
44 changes: 28 additions & 16 deletions trunk/drivers/power/wm831x_power.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ struct wm831x_power {
char wall_name[20];
char usb_name[20];
char battery_name[20];
bool have_battery;
};

static int wm831x_power_check_online(struct wm831x *wm831x, int supply,
Expand Down Expand Up @@ -449,7 +450,8 @@ static irqreturn_t wm831x_bat_irq(int irq, void *data)

/* The battery charger is autonomous so we don't need to do
* anything except kick user space */
power_supply_changed(&wm831x_power->battery);
if (wm831x_power->have_battery)
power_supply_changed(&wm831x_power->battery);

return IRQ_HANDLED;
}
Expand Down Expand Up @@ -479,7 +481,8 @@ static irqreturn_t wm831x_pwr_src_irq(int irq, void *data)
dev_dbg(wm831x->dev, "Power source changed\n");

/* Just notify for everything - little harm in overnotifying. */
power_supply_changed(&wm831x_power->battery);
if (wm831x_power->have_battery)
power_supply_changed(&wm831x_power->battery);
power_supply_changed(&wm831x_power->usb);
power_supply_changed(&wm831x_power->wall);

Expand Down Expand Up @@ -537,23 +540,30 @@ static __devinit int wm831x_power_probe(struct platform_device *pdev)
if (ret)
goto err_kmalloc;

battery->name = power->battery_name;
battery->properties = wm831x_bat_props;
battery->num_properties = ARRAY_SIZE(wm831x_bat_props);
battery->get_property = wm831x_bat_get_prop;
battery->use_for_apm = 1;
ret = power_supply_register(&pdev->dev, battery);
if (ret)
goto err_wall;

usb->name = power->usb_name,
usb->type = POWER_SUPPLY_TYPE_USB;
usb->properties = wm831x_usb_props;
usb->num_properties = ARRAY_SIZE(wm831x_usb_props);
usb->get_property = wm831x_usb_get_prop;
ret = power_supply_register(&pdev->dev, usb);
if (ret)
goto err_battery;
goto err_wall;

ret = wm831x_reg_read(wm831x, WM831X_CHARGER_CONTROL_1);
if (ret < 0)
goto err_wall;
power->have_battery = ret & WM831X_CHG_ENA;

if (power->have_battery) {
battery->name = power->battery_name;
battery->properties = wm831x_bat_props;
battery->num_properties = ARRAY_SIZE(wm831x_bat_props);
battery->get_property = wm831x_bat_get_prop;
battery->use_for_apm = 1;
ret = power_supply_register(&pdev->dev, battery);
if (ret)
goto err_usb;
}

irq = platform_get_irq_byname(pdev, "SYSLO");
ret = request_threaded_irq(irq, NULL, wm831x_syslo_irq,
Expand All @@ -562,7 +572,7 @@ static __devinit int wm831x_power_probe(struct platform_device *pdev)
if (ret != 0) {
dev_err(&pdev->dev, "Failed to request SYSLO IRQ %d: %d\n",
irq, ret);
goto err_usb;
goto err_battery;
}

irq = platform_get_irq_byname(pdev, "PWR SRC");
Expand Down Expand Up @@ -601,10 +611,11 @@ static __devinit int wm831x_power_probe(struct platform_device *pdev)
err_syslo:
irq = platform_get_irq_byname(pdev, "SYSLO");
free_irq(irq, power);
err_battery:
if (power->have_battery)
power_supply_unregister(battery);
err_usb:
power_supply_unregister(usb);
err_battery:
power_supply_unregister(battery);
err_wall:
power_supply_unregister(wall);
err_kmalloc:
Expand All @@ -628,7 +639,8 @@ static __devexit int wm831x_power_remove(struct platform_device *pdev)
irq = platform_get_irq_byname(pdev, "SYSLO");
free_irq(irq, wm831x_power);

power_supply_unregister(&wm831x_power->battery);
if (wm831x_power->have_battery)
power_supply_unregister(&wm831x_power->battery);
power_supply_unregister(&wm831x_power->wall);
power_supply_unregister(&wm831x_power->usb);
kfree(wm831x_power);
Expand Down

0 comments on commit 91a37f3

Please sign in to comment.