if (pdata->min_voltage >= 0)
props++; /* POWER_SUPPLY_PROP_VOLTAGE_MIN */
- prop = kcalloc(props, sizeof(*prop), GFP_KERNEL);
+ prop = devm_kcalloc(&dev->dev, props, sizeof(*prop), GFP_KERNEL);
if (!prop)
return -ENOMEM;
bat_psy_desc.num_properties = props;
bat_psy = power_supply_register(&dev->dev, &bat_psy_desc, &cfg);
- if (!IS_ERR(bat_psy)) {
- schedule_work(&bat_work);
- } else {
- ret = PTR_ERR(bat_psy);
- goto free;
- }
+ if (IS_ERR(bat_psy))
+ return PTR_ERR(bat_psy);
+
+ schedule_work(&bat_work);
if (charge_gpiod) {
ret = request_irq(gpiod_to_irq(charge_gpiod), wm97xx_chrg_irq,
unregister:
power_supply_unregister(bat_psy);
-free:
- kfree(prop);
-
return ret;
}
free_irq(gpiod_to_irq(charge_gpiod), dev);
cancel_work_sync(&bat_work);
power_supply_unregister(bat_psy);
- kfree(prop);
}
static struct platform_driver wm97xx_bat_driver = {