.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | /* |
---|
2 | 3 | * TI LP8788 MFD - battery charger driver |
---|
3 | 4 | * |
---|
4 | 5 | * Copyright 2012 Texas Instruments |
---|
5 | 6 | * |
---|
6 | 7 | * Author: Milo(Woogyom) Kim <milo.kim@ti.com> |
---|
7 | | - * |
---|
8 | | - * This program is free software; you can redistribute it and/or modify |
---|
9 | | - * it under the terms of the GNU General Public License version 2 as |
---|
10 | | - * published by the Free Software Foundation. |
---|
11 | | - * |
---|
12 | 8 | */ |
---|
13 | 9 | |
---|
14 | 10 | #include <linux/err.h> |
---|
.. | .. |
---|
410 | 406 | .get_property = lp8788_battery_get_property, |
---|
411 | 407 | }; |
---|
412 | 408 | |
---|
413 | | -static int lp8788_psy_register(struct platform_device *pdev, |
---|
414 | | - struct lp8788_charger *pchg) |
---|
415 | | -{ |
---|
416 | | - struct power_supply_config charger_cfg = {}; |
---|
417 | | - |
---|
418 | | - charger_cfg.supplied_to = battery_supplied_to; |
---|
419 | | - charger_cfg.num_supplicants = ARRAY_SIZE(battery_supplied_to); |
---|
420 | | - |
---|
421 | | - pchg->charger = power_supply_register(&pdev->dev, |
---|
422 | | - &lp8788_psy_charger_desc, |
---|
423 | | - &charger_cfg); |
---|
424 | | - if (IS_ERR(pchg->charger)) |
---|
425 | | - return -EPERM; |
---|
426 | | - |
---|
427 | | - pchg->battery = power_supply_register(&pdev->dev, |
---|
428 | | - &lp8788_psy_battery_desc, NULL); |
---|
429 | | - if (IS_ERR(pchg->battery)) { |
---|
430 | | - power_supply_unregister(pchg->charger); |
---|
431 | | - return -EPERM; |
---|
432 | | - } |
---|
433 | | - |
---|
434 | | - return 0; |
---|
435 | | -} |
---|
436 | | - |
---|
437 | 409 | static void lp8788_psy_unregister(struct lp8788_charger *pchg) |
---|
438 | 410 | { |
---|
439 | 411 | power_supply_unregister(pchg->battery); |
---|
.. | .. |
---|
677 | 649 | static DEVICE_ATTR(eoc_time, S_IRUSR, lp8788_show_eoc_time, NULL); |
---|
678 | 650 | static DEVICE_ATTR(eoc_level, S_IRUSR, lp8788_show_eoc_level, NULL); |
---|
679 | 651 | |
---|
680 | | -static struct attribute *lp8788_charger_attr[] = { |
---|
| 652 | +static struct attribute *lp8788_charger_sysfs_attrs[] = { |
---|
681 | 653 | &dev_attr_charger_status.attr, |
---|
682 | 654 | &dev_attr_eoc_time.attr, |
---|
683 | 655 | &dev_attr_eoc_level.attr, |
---|
684 | 656 | NULL, |
---|
685 | 657 | }; |
---|
686 | 658 | |
---|
687 | | -static const struct attribute_group lp8788_attr_group = { |
---|
688 | | - .attrs = lp8788_charger_attr, |
---|
689 | | -}; |
---|
| 659 | +ATTRIBUTE_GROUPS(lp8788_charger_sysfs); |
---|
| 660 | + |
---|
| 661 | +static int lp8788_psy_register(struct platform_device *pdev, |
---|
| 662 | + struct lp8788_charger *pchg) |
---|
| 663 | +{ |
---|
| 664 | + struct power_supply_config charger_cfg = {}; |
---|
| 665 | + |
---|
| 666 | + charger_cfg.attr_grp = lp8788_charger_sysfs_groups; |
---|
| 667 | + charger_cfg.supplied_to = battery_supplied_to; |
---|
| 668 | + charger_cfg.num_supplicants = ARRAY_SIZE(battery_supplied_to); |
---|
| 669 | + |
---|
| 670 | + pchg->charger = power_supply_register(&pdev->dev, |
---|
| 671 | + &lp8788_psy_charger_desc, |
---|
| 672 | + &charger_cfg); |
---|
| 673 | + if (IS_ERR(pchg->charger)) |
---|
| 674 | + return -EPERM; |
---|
| 675 | + |
---|
| 676 | + pchg->battery = power_supply_register(&pdev->dev, |
---|
| 677 | + &lp8788_psy_battery_desc, NULL); |
---|
| 678 | + if (IS_ERR(pchg->battery)) { |
---|
| 679 | + power_supply_unregister(pchg->charger); |
---|
| 680 | + return -EPERM; |
---|
| 681 | + } |
---|
| 682 | + |
---|
| 683 | + return 0; |
---|
| 684 | +} |
---|
690 | 685 | |
---|
691 | 686 | static int lp8788_charger_probe(struct platform_device *pdev) |
---|
692 | 687 | { |
---|
.. | .. |
---|
713 | 708 | if (ret) |
---|
714 | 709 | return ret; |
---|
715 | 710 | |
---|
716 | | - ret = sysfs_create_group(&pdev->dev.kobj, &lp8788_attr_group); |
---|
717 | | - if (ret) { |
---|
718 | | - lp8788_psy_unregister(pchg); |
---|
719 | | - return ret; |
---|
720 | | - } |
---|
721 | | - |
---|
722 | 711 | ret = lp8788_irq_register(pdev, pchg); |
---|
723 | 712 | if (ret) |
---|
724 | 713 | dev_warn(dev, "failed to register charger irq: %d\n", ret); |
---|
.. | .. |
---|
732 | 721 | |
---|
733 | 722 | flush_work(&pchg->charger_work); |
---|
734 | 723 | lp8788_irq_unregister(pdev, pchg); |
---|
735 | | - sysfs_remove_group(&pdev->dev.kobj, &lp8788_attr_group); |
---|
736 | 724 | lp8788_psy_unregister(pchg); |
---|
737 | 725 | |
---|
738 | 726 | return 0; |
---|