// SPDX-License-Identifier: GPL-2.0-only /* * extcon-qcom-spmi-misc.c - Qualcomm USB extcon driver to support USB ID * and VBUS detection based on extcon-usb-gpio.c. * * Copyright (C) 2016 Linaro, Ltd. * Stephen Boyd <stephen.boyd@linaro.org>
*/
staticvoid qcom_usb_extcon_detect_cable(struct work_struct *work)
{ bool state = false; int ret; union extcon_property_value val; struct qcom_usb_extcon_info *info = container_of(to_delayed_work(work), struct qcom_usb_extcon_info,
wq_detcable);
if (info->id_irq > 0) { /* check ID and update cable state */
ret = irq_get_irqchip_state(info->id_irq,
IRQCHIP_STATE_LINE_LEVEL, &state); if (ret) return;
if (info->vbus_irq > 0) { /* check VBUS and update cable state */
ret = irq_get_irqchip_state(info->vbus_irq,
IRQCHIP_STATE_LINE_LEVEL, &state); if (ret) return;
#ifdef CONFIG_PM_SLEEP staticint qcom_usb_extcon_suspend(struct device *dev)
{ struct qcom_usb_extcon_info *info = dev_get_drvdata(dev); int ret = 0;
if (device_may_wakeup(dev)) { if (info->id_irq > 0)
ret = enable_irq_wake(info->id_irq); if (info->vbus_irq > 0)
ret = enable_irq_wake(info->vbus_irq);
}
return ret;
}
staticint qcom_usb_extcon_resume(struct device *dev)
{ struct qcom_usb_extcon_info *info = dev_get_drvdata(dev); int ret = 0;
if (device_may_wakeup(dev)) { if (info->id_irq > 0)
ret = disable_irq_wake(info->id_irq); if (info->vbus_irq > 0)
ret = disable_irq_wake(info->vbus_irq);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.