]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/staging/nvec/nvec_power.c
Merge remote-tracking branch 'staging/staging-next'
[karo-tx-linux.git] / drivers / staging / nvec / nvec_power.c
index 6a1459d4f8fbab1da3d1203c2f727ada62131e4c..04a7402ae2df4531fee978a24c1fc82e3e712095 100644 (file)
@@ -82,8 +82,8 @@ struct bat_response {
        };
 };
 
-static struct power_supply nvec_bat_psy;
-static struct power_supply nvec_psy;
+static struct power_supply *nvec_bat_psy;
+static struct power_supply *nvec_psy;
 
 static int nvec_power_notifier(struct notifier_block *nb,
                               unsigned long event_type, void *data)
@@ -98,7 +98,7 @@ static int nvec_power_notifier(struct notifier_block *nb,
        if (res->sub_type == 0) {
                if (power->on != res->plu) {
                        power->on = res->plu;
-                       power_supply_changed(&nvec_psy);
+                       power_supply_changed(nvec_psy);
                }
                return NOTIFY_STOP;
        }
@@ -167,7 +167,7 @@ static int nvec_power_bat_notifier(struct notifier_block *nb,
                }
                power->bat_cap = res->plc[1];
                if (status_changed)
-                       power_supply_changed(&nvec_bat_psy);
+                       power_supply_changed(nvec_bat_psy);
                break;
        case VOLTAGE:
                power->bat_voltage_now = res->plu * 1000;
@@ -225,7 +225,7 @@ static int nvec_power_get_property(struct power_supply *psy,
                                   enum power_supply_property psp,
                                   union power_supply_propval *val)
 {
-       struct nvec_power *power = dev_get_drvdata(psy->dev->parent);
+       struct nvec_power *power = dev_get_drvdata(psy->dev.parent);
 
        switch (psp) {
        case POWER_SUPPLY_PROP_ONLINE:
@@ -241,7 +241,7 @@ static int nvec_battery_get_property(struct power_supply *psy,
                                     enum power_supply_property psp,
                                     union power_supply_propval *val)
 {
-       struct nvec_power *power = dev_get_drvdata(psy->dev->parent);
+       struct nvec_power *power = dev_get_drvdata(psy->dev.parent);
 
        switch (psp) {
        case POWER_SUPPLY_PROP_STATUS:
@@ -323,7 +323,7 @@ static char *nvec_power_supplied_to[] = {
        "battery",
 };
 
-static struct power_supply nvec_bat_psy = {
+static const struct power_supply_desc nvec_bat_psy_desc = {
        .name = "battery",
        .type = POWER_SUPPLY_TYPE_BATTERY,
        .properties = nvec_battery_props,
@@ -331,11 +331,9 @@ static struct power_supply nvec_bat_psy = {
        .get_property = nvec_battery_get_property,
 };
 
-static struct power_supply nvec_psy = {
+static const struct power_supply_desc nvec_psy_desc = {
        .name = "ac",
        .type = POWER_SUPPLY_TYPE_MAINS,
-       .supplied_to = nvec_power_supplied_to,
-       .num_supplicants = ARRAY_SIZE(nvec_power_supplied_to),
        .properties = nvec_power_props,
        .num_properties = ARRAY_SIZE(nvec_power_props),
        .get_property = nvec_power_get_property,
@@ -373,12 +371,14 @@ static void nvec_power_poll(struct work_struct *work)
 
 static int nvec_power_probe(struct platform_device *pdev)
 {
-       struct power_supply *psy;
+       struct power_supply **psy;
+       const struct power_supply_desc *psy_desc;
        struct nvec_power *power;
        struct nvec_chip *nvec = dev_get_drvdata(pdev->dev.parent);
+       struct power_supply_config psy_cfg = {};
 
        power = devm_kzalloc(&pdev->dev, sizeof(struct nvec_power), GFP_NOWAIT);
-       if (power == NULL)
+       if (!power)
                return -ENOMEM;
 
        dev_set_drvdata(&pdev->dev, power);
@@ -387,6 +387,9 @@ static int nvec_power_probe(struct platform_device *pdev)
        switch (pdev->id) {
        case AC:
                psy = &nvec_psy;
+               psy_desc = &nvec_psy_desc;
+               psy_cfg.supplied_to = nvec_power_supplied_to;
+               psy_cfg.num_supplicants = ARRAY_SIZE(nvec_power_supplied_to);
 
                power->notifier.notifier_call = nvec_power_notifier;
 
@@ -395,6 +398,7 @@ static int nvec_power_probe(struct platform_device *pdev)
                break;
        case BAT:
                psy = &nvec_bat_psy;
+               psy_desc = &nvec_bat_psy_desc;
 
                power->notifier.notifier_call = nvec_power_bat_notifier;
                break;
@@ -407,7 +411,9 @@ static int nvec_power_probe(struct platform_device *pdev)
        if (pdev->id == BAT)
                get_bat_mfg_data(power);
 
-       return power_supply_register(&pdev->dev, psy);
+       *psy = power_supply_register(&pdev->dev, psy_desc, &psy_cfg);
+
+       return PTR_ERR_OR_ZERO(*psy);
 }
 
 static int nvec_power_remove(struct platform_device *pdev)
@@ -418,10 +424,10 @@ static int nvec_power_remove(struct platform_device *pdev)
        nvec_unregister_notifier(power->nvec, &power->notifier);
        switch (pdev->id) {
        case AC:
-               power_supply_unregister(&nvec_psy);
+               power_supply_unregister(nvec_psy);
                break;
        case BAT:
-               power_supply_unregister(&nvec_bat_psy);
+               power_supply_unregister(nvec_bat_psy);
        }
 
        return 0;