Lines Matching +full:cros +full:- +full:ec

1 // SPDX-License-Identifier: GPL-2.0-only
14 #define DRV_NAME "cros-usbpd-notify"
15 #define DRV_NAME_PLAT_ACPI "cros-usbpd-notify-acpi"
22 struct cros_ec_device *ec; member
27 * cros_usbpd_register_notify - Register a notifier callback for PD events.
31 * "GOOG0003" ACPI device. On non-ACPI platforms this will filter mkbp events
44 * cros_usbpd_unregister_notify - Unregister notifier callback for PD events.
57 * cros_ec_pd_command - Send a command to the EC.
59 * @ec_dev: EC device
60 * @command: EC command
61 * @outdata: EC command output data
63 * @indata: EC command input data
80 return -ENOMEM; in cros_ec_pd_command()
82 msg->command = command; in cros_ec_pd_command()
83 msg->outsize = outsize; in cros_ec_pd_command()
84 msg->insize = insize; in cros_ec_pd_command()
87 memcpy(msg->data, outdata, outsize); in cros_ec_pd_command()
94 memcpy(indata, msg->data, insize); in cros_ec_pd_command()
113 "EC device inaccessible; sending 0 event status.\n"); in cros_usbpd_get_event_and_notify()
117 /* Check for PD host events on EC. */ in cros_usbpd_get_event_and_notify()
139 cros_usbpd_get_event_and_notify(pdnotify->dev, pdnotify->ec); in cros_usbpd_notify_acpi()
145 struct device *dev = &pdev->dev; in cros_usbpd_notify_probe_acpi()
154 return -ENOMEM; in cros_usbpd_notify_probe_acpi()
156 /* Get the EC device pointer needed to talk to the EC. */ in cros_usbpd_notify_probe_acpi()
157 ec_dev = dev_get_drvdata(dev->parent); in cros_usbpd_notify_probe_acpi()
164 dev_warn(dev, "Couldn't get Chrome EC device pointer.\n"); in cros_usbpd_notify_probe_acpi()
167 pdnotify->dev = dev; in cros_usbpd_notify_probe_acpi()
168 pdnotify->ec = ec_dev; in cros_usbpd_notify_probe_acpi()
170 status = acpi_install_notify_handler(adev->handle, in cros_usbpd_notify_probe_acpi()
177 return -EINVAL; in cros_usbpd_notify_probe_acpi()
185 struct device *dev = &pdev->dev; in cros_usbpd_notify_remove_acpi()
188 acpi_remove_notify_handler(adev->handle, ACPI_ALL_NOTIFY, in cros_usbpd_notify_remove_acpi()
224 cros_usbpd_get_event_and_notify(pdnotify->dev, ec_dev); in cros_usbpd_notify_plat()
232 struct device *dev = &pdev->dev; in cros_usbpd_notify_probe_plat()
233 struct cros_ec_dev *ecdev = dev_get_drvdata(dev->parent); in cros_usbpd_notify_probe_plat()
239 return -ENOMEM; in cros_usbpd_notify_probe_plat()
241 pdnotify->dev = dev; in cros_usbpd_notify_probe_plat()
242 pdnotify->ec = ecdev->ec_dev; in cros_usbpd_notify_probe_plat()
243 pdnotify->nb.notifier_call = cros_usbpd_notify_plat; in cros_usbpd_notify_probe_plat()
247 ret = blocking_notifier_chain_register(&ecdev->ec_dev->event_notifier, in cros_usbpd_notify_probe_plat()
248 &pdnotify->nb); in cros_usbpd_notify_probe_plat()
259 struct device *dev = &pdev->dev; in cros_usbpd_notify_remove_plat()
260 struct cros_ec_dev *ecdev = dev_get_drvdata(dev->parent); in cros_usbpd_notify_remove_plat()
264 blocking_notifier_chain_unregister(&ecdev->ec_dev->event_notifier, in cros_usbpd_notify_remove_plat()
265 &pdnotify->nb); in cros_usbpd_notify_remove_plat()