|
8 | 8 | #include <linux/module.h>
|
9 | 9 | #include <linux/platform_data/cros_ec_commands.h>
|
10 | 10 | #include <linux/platform_data/cros_ec_proto.h>
|
| 11 | +#include <linux/platform_data/cros_usbpd_notify.h> |
11 | 12 | #include <linux/platform_device.h>
|
12 | 13 | #include <linux/power_supply.h>
|
13 | 14 | #include <linux/slab.h>
|
@@ -517,32 +518,21 @@ static int cros_usbpd_charger_property_is_writeable(struct power_supply *psy,
|
517 | 518 | }
|
518 | 519 |
|
519 | 520 | static int cros_usbpd_charger_ec_event(struct notifier_block *nb,
|
520 |
| - unsigned long queued_during_suspend, |
| 521 | + unsigned long host_event, |
521 | 522 | void *_notify)
|
522 | 523 | {
|
523 |
| - struct cros_ec_device *ec_device; |
524 |
| - struct charger_data *charger; |
525 |
| - u32 host_event; |
| 524 | + struct charger_data *charger = container_of(nb, struct charger_data, |
| 525 | + notifier); |
526 | 526 |
|
527 |
| - charger = container_of(nb, struct charger_data, notifier); |
528 |
| - ec_device = charger->ec_device; |
529 |
| - |
530 |
| - host_event = cros_ec_get_host_event(ec_device); |
531 |
| - if (host_event & EC_HOST_EVENT_MASK(EC_HOST_EVENT_PD_MCU)) { |
532 |
| - cros_usbpd_charger_power_changed(charger->ports[0]->psy); |
533 |
| - return NOTIFY_OK; |
534 |
| - } else { |
535 |
| - return NOTIFY_DONE; |
536 |
| - } |
| 527 | + cros_usbpd_charger_power_changed(charger->ports[0]->psy); |
| 528 | + return NOTIFY_OK; |
537 | 529 | }
|
538 | 530 |
|
539 | 531 | static void cros_usbpd_charger_unregister_notifier(void *data)
|
540 | 532 | {
|
541 | 533 | struct charger_data *charger = data;
|
542 |
| - struct cros_ec_device *ec_device = charger->ec_device; |
543 | 534 |
|
544 |
| - blocking_notifier_chain_unregister(&ec_device->event_notifier, |
545 |
| - &charger->notifier); |
| 535 | + cros_usbpd_unregister_notify(&charger->notifier); |
546 | 536 | }
|
547 | 537 |
|
548 | 538 | static int cros_usbpd_charger_probe(struct platform_device *pd)
|
@@ -676,21 +666,17 @@ static int cros_usbpd_charger_probe(struct platform_device *pd)
|
676 | 666 | goto fail;
|
677 | 667 | }
|
678 | 668 |
|
679 |
| - if (ec_device->mkbp_event_supported) { |
680 |
| - /* Get PD events from the EC */ |
681 |
| - charger->notifier.notifier_call = cros_usbpd_charger_ec_event; |
682 |
| - ret = blocking_notifier_chain_register( |
683 |
| - &ec_device->event_notifier, |
684 |
| - &charger->notifier); |
685 |
| - if (ret < 0) { |
686 |
| - dev_warn(dev, "failed to register notifier\n"); |
687 |
| - } else { |
688 |
| - ret = devm_add_action_or_reset(dev, |
689 |
| - cros_usbpd_charger_unregister_notifier, |
690 |
| - charger); |
691 |
| - if (ret < 0) |
692 |
| - goto fail; |
693 |
| - } |
| 669 | + /* Get PD events from the EC */ |
| 670 | + charger->notifier.notifier_call = cros_usbpd_charger_ec_event; |
| 671 | + ret = cros_usbpd_register_notify(&charger->notifier); |
| 672 | + if (ret < 0) { |
| 673 | + dev_warn(dev, "failed to register notifier\n"); |
| 674 | + } else { |
| 675 | + ret = devm_add_action_or_reset(dev, |
| 676 | + cros_usbpd_charger_unregister_notifier, |
| 677 | + charger); |
| 678 | + if (ret < 0) |
| 679 | + goto fail; |
694 | 680 | }
|
695 | 681 |
|
696 | 682 | return 0;
|
|
0 commit comments