aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/power/wm831x_power.c
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2011-05-31 08:30:11 -0400
committerAnton Vorontsov <cbouatmailru@gmail.com>2011-07-08 08:57:21 -0400
commitccf8fa2d1b4dd8660aadc830f22645781628b894 (patch)
treecb3cb711fc9367c72d1c9e8c9f4cd6ccd03255a1 /drivers/power/wm831x_power.c
parentd03760318edbc78b72cb7fa96bddb65263384d24 (diff)
wm831x_power: Support multiple instances
If there are multiple wm831x devices in the system we need to assign different names to the power supply devices in order to ensure we can create the sysfs entries for them. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Anton Vorontsov <cbouatmailru@gmail.com>
Diffstat (limited to 'drivers/power/wm831x_power.c')
-rw-r--r--drivers/power/wm831x_power.c26
1 files changed, 23 insertions, 3 deletions
diff --git a/drivers/power/wm831x_power.c b/drivers/power/wm831x_power.c
index ddf8cf5f3204..6cc2ca6427f3 100644
--- a/drivers/power/wm831x_power.c
+++ b/drivers/power/wm831x_power.c
@@ -24,6 +24,9 @@ struct wm831x_power {
24 struct power_supply wall; 24 struct power_supply wall;
25 struct power_supply usb; 25 struct power_supply usb;
26 struct power_supply battery; 26 struct power_supply battery;
27 char wall_name[20];
28 char usb_name[20];
29 char battery_name[20];
27}; 30};
28 31
29static int wm831x_power_check_online(struct wm831x *wm831x, int supply, 32static int wm831x_power_check_online(struct wm831x *wm831x, int supply,
@@ -486,6 +489,7 @@ static irqreturn_t wm831x_pwr_src_irq(int irq, void *data)
486static __devinit int wm831x_power_probe(struct platform_device *pdev) 489static __devinit int wm831x_power_probe(struct platform_device *pdev)
487{ 490{
488 struct wm831x *wm831x = dev_get_drvdata(pdev->dev.parent); 491 struct wm831x *wm831x = dev_get_drvdata(pdev->dev.parent);
492 struct wm831x_pdata *wm831x_pdata = wm831x->dev->platform_data;
489 struct wm831x_power *power; 493 struct wm831x_power *power;
490 struct power_supply *usb; 494 struct power_supply *usb;
491 struct power_supply *battery; 495 struct power_supply *battery;
@@ -503,12 +507,28 @@ static __devinit int wm831x_power_probe(struct platform_device *pdev)
503 battery = &power->battery; 507 battery = &power->battery;
504 wall = &power->wall; 508 wall = &power->wall;
505 509
510 if (wm831x_pdata && wm831x_pdata->wm831x_num) {
511 snprintf(power->wall_name, sizeof(power->wall_name),
512 "wm831x-wall.%d", wm831x_pdata->wm831x_num);
513 snprintf(power->battery_name, sizeof(power->wall_name),
514 "wm831x-battery.%d", wm831x_pdata->wm831x_num);
515 snprintf(power->usb_name, sizeof(power->wall_name),
516 "wm831x-usb.%d", wm831x_pdata->wm831x_num);
517 } else {
518 snprintf(power->wall_name, sizeof(power->wall_name),
519 "wm831x-wall");
520 snprintf(power->battery_name, sizeof(power->wall_name),
521 "wm831x-battery");
522 snprintf(power->usb_name, sizeof(power->wall_name),
523 "wm831x-usb");
524 }
525
506 /* We ignore configuration failures since we can still read back 526 /* We ignore configuration failures since we can still read back
507 * the status without enabling the charger. 527 * the status without enabling the charger.
508 */ 528 */
509 wm831x_config_battery(wm831x); 529 wm831x_config_battery(wm831x);
510 530
511 wall->name = "wm831x-wall"; 531 wall->name = power->wall_name;
512 wall->type = POWER_SUPPLY_TYPE_MAINS; 532 wall->type = POWER_SUPPLY_TYPE_MAINS;
513 wall->properties = wm831x_wall_props; 533 wall->properties = wm831x_wall_props;
514 wall->num_properties = ARRAY_SIZE(wm831x_wall_props); 534 wall->num_properties = ARRAY_SIZE(wm831x_wall_props);
@@ -517,7 +537,7 @@ static __devinit int wm831x_power_probe(struct platform_device *pdev)
517 if (ret) 537 if (ret)
518 goto err_kmalloc; 538 goto err_kmalloc;
519 539
520 battery->name = "wm831x-battery"; 540 battery->name = power->battery_name;
521 battery->properties = wm831x_bat_props; 541 battery->properties = wm831x_bat_props;
522 battery->num_properties = ARRAY_SIZE(wm831x_bat_props); 542 battery->num_properties = ARRAY_SIZE(wm831x_bat_props);
523 battery->get_property = wm831x_bat_get_prop; 543 battery->get_property = wm831x_bat_get_prop;
@@ -526,7 +546,7 @@ static __devinit int wm831x_power_probe(struct platform_device *pdev)
526 if (ret) 546 if (ret)
527 goto err_wall; 547 goto err_wall;
528 548
529 usb->name = "wm831x-usb", 549 usb->name = power->usb_name,
530 usb->type = POWER_SUPPLY_TYPE_USB; 550 usb->type = POWER_SUPPLY_TYPE_USB;
531 usb->properties = wm831x_usb_props; 551 usb->properties = wm831x_usb_props;
532 usb->num_properties = ARRAY_SIZE(wm831x_usb_props); 552 usb->num_properties = ARRAY_SIZE(wm831x_usb_props);