]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/power/power_supply_core.c
Driver Core: add ability for class_for_each_device to start in middle of list
[linux-2.6-omap-h63xx.git] / drivers / power / power_supply_core.c
index 138dd76ee347b005aaf21b01f3b68a0869731045..cb1ccb4729210c1a3cfd8901bf7dea5c56117146 100644 (file)
@@ -41,7 +41,7 @@ static void power_supply_changed_work(struct work_struct *work)
 
        dev_dbg(psy->dev, "%s\n", __func__);
 
-       class_for_each_device(power_supply_class, psy,
+       class_for_each_device(power_supply_class, NULL, psy,
                              __power_supply_changed_work);
 
        power_supply_update_leds(psy);
@@ -79,7 +79,7 @@ int power_supply_am_i_supplied(struct power_supply *psy)
 {
        int error;
 
-       error = class_for_each_device(power_supply_class, psy,
+       error = class_for_each_device(power_supply_class, NULL, psy,
                                      __power_supply_am_i_supplied);
 
        dev_dbg(psy->dev, "%s %d\n", __func__, error);
@@ -91,15 +91,13 @@ int power_supply_register(struct device *parent, struct power_supply *psy)
 {
        int rc = 0;
 
-       psy->dev = device_create(power_supply_class, parent, 0,
-                                "%s", psy->name);
+       psy->dev = device_create_drvdata(power_supply_class, parent, 0,
+                                        psy, "%s", psy->name);
        if (IS_ERR(psy->dev)) {
                rc = PTR_ERR(psy->dev);
                goto dev_create_failed;
        }
 
-       dev_set_drvdata(psy->dev, psy);
-
        INIT_WORK(&psy->changed_work, power_supply_changed_work);
 
        rc = power_supply_create_attrs(psy);