Received: by 2002:a05:6602:18e:0:0:0:0 with SMTP id m14csp2433028ioo; Sat, 28 May 2022 13:30:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyXuhzhRSsNakTY19gvFz/zsHjfPKaAZ7FYVOMYJHArwA3QQYuXa/SI8XuUVCw/PdRvDFrr X-Received: by 2002:a63:d209:0:b0:3fb:b455:deb2 with SMTP id a9-20020a63d209000000b003fbb455deb2mr6923058pgg.323.1653769848928; Sat, 28 May 2022 13:30:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1653769848; cv=none; d=google.com; s=arc-20160816; b=zv3YZgKmH4Mar0KyWl8nfj+h1zUBPJ8K4Yj9CqLpCpzwWr0l2iJ671fNYlEUYkeT9K OZQm8HCt4G7csQFFDUg20yZaFTKxX0jiP46IoxNZaeKfIqWHx/imzJpWSrhxcECT4iFX cbVxx727Hc0BC0QbWCbIHvEbrWFYs/0v3ZGeYmIwiOePQqmqoaYnlKUwe6B+pIp4fHBM BBz6fZm0GFAxXTXxuDoT3dWrFGU+ZNPgX81IJhc4qidWxllCDldneQMF8XUYMragY1qC u5QcmpYEqBqQI+G5uOPgV3VPC0X2sWmxw29/h+zT++6hBfz/Fqgxflvam/NH6859zn3v gucg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from :dkim-signature; bh=0t1DGejBLqrGuaKm5GDs3t3WPZiALR9whEGvT3f5TaU=; b=ER8D5opOJ9C6FXmBwZQuLWR09F+pmDbI8SrNBU67+CUNkBfAYHzxYrcaHX+mOUBOMu icXBwijMiohwaSoIo6O3sF7UrJZjfsxMF6qBMdlJBLj4EaKaYK6O37uEC4AwVte2ZlIn UaGDqZzs3dxB5cySyPK9r0mvTj42vQfjUwrCWcgZ+SzLCHXGV/e5I3xVQd3iUGXORqgL 1s3ssujEzcgTmV56gwN0hiWt+U5IEjptJNaHY3QbTvaJegEW4bFCvejaYvIMu6gU+CyD uteIPTeJ3NwOAzn8DLLTU3N97ALMArRTxgZJaNR2j2v/hBwhjxO0nTPQ/h+IerdWtQKu gvYA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcdkim header.b=w4rrdtan; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id t12-20020a1709027fcc00b0016152774876si8886227plb.144.2022.05.28.13.30.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 28 May 2022 13:30:48 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcdkim header.b=w4rrdtan; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 9D76A12DBF1; Sat, 28 May 2022 12:40:44 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237102AbiE0GtW (ORCPT + 99 others); Fri, 27 May 2022 02:49:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33320 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344155AbiE0GtP (ORCPT ); Fri, 27 May 2022 02:49:15 -0400 Received: from alexa-out-sd-01.qualcomm.com (alexa-out-sd-01.qualcomm.com [199.106.114.38]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EBA6BED8D5; Thu, 26 May 2022 23:49:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1653634155; x=1685170155; h=from:to:cc:subject:date:message-id:mime-version; bh=0t1DGejBLqrGuaKm5GDs3t3WPZiALR9whEGvT3f5TaU=; b=w4rrdtanXzZfPVL+EAnqPUVXpbR6bP61HNJ0fcPvu9vClxDNgplGmQCF YXe/B8C6bwJRN+5L59qFDZZ1HELxKjzN/pA9I+jN9cVvQPmR+Sl6a1dC6 5hGViQXaaH6YRlqa9WY9tzd/tMjRl5IjHkdvMr2lzGVjbsiUkV/Pm2e8B M=; Received: from unknown (HELO ironmsg03-sd.qualcomm.com) ([10.53.140.143]) by alexa-out-sd-01.qualcomm.com with ESMTP; 26 May 2022 23:49:14 -0700 X-QCInternal: smtphost Received: from nasanex01c.na.qualcomm.com ([10.47.97.222]) by ironmsg03-sd.qualcomm.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 May 2022 23:49:14 -0700 Received: from nalasex01a.na.qualcomm.com (10.47.209.196) by nasanex01c.na.qualcomm.com (10.47.97.222) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.22; Thu, 26 May 2022 23:49:13 -0700 Received: from hu-prashk-hyd.qualcomm.com (10.80.80.8) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.22; Thu, 26 May 2022 23:49:11 -0700 From: Prashanth K To: Matthias Brugger , Greg Kroah-Hartman CC: Pavankumar Kondeti , Pratham Pratap , , , Prashanth K Subject: [PATCH] usb: common: usb-conn-gpio: Allow wakeup from system suspend Date: Fri, 27 May 2022 12:19:06 +0530 Message-ID: <1653634146-12215-1-git-send-email-quic_prashk@quicinc.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To nalasex01a.na.qualcomm.com (10.47.209.196) X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently the VBUS/ID detection interrupts are disabled during system suspend. So the USB cable connect/disconnect event can't wakeup the system from low power mode. To allow this, we keep these interrupts enabled and configure them as wakeup capable. This behavior can be controlled through device wakeup source policy by the user space. Signed-off-by: Prashanth K --- drivers/usb/common/usb-conn-gpio.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/drivers/usb/common/usb-conn-gpio.c b/drivers/usb/common/usb-conn-gpio.c index 395f9bb..b39c9f1c 100644 --- a/drivers/usb/common/usb-conn-gpio.c +++ b/drivers/usb/common/usb-conn-gpio.c @@ -257,6 +257,7 @@ static int usb_conn_probe(struct platform_device *pdev) } platform_set_drvdata(pdev, info); + device_set_wakeup_capable(&pdev->dev, true); /* Perform initial detection */ usb_conn_queue_dwork(info, 0); @@ -286,6 +287,14 @@ static int __maybe_unused usb_conn_suspend(struct device *dev) { struct usb_conn_info *info = dev_get_drvdata(dev); + if (device_may_wakeup(dev)) { + if (info->id_gpiod) + enable_irq_wake(info->id_irq); + if (info->vbus_gpiod) + enable_irq_wake(info->vbus_irq); + return 0; + } + if (info->id_gpiod) disable_irq(info->id_irq); if (info->vbus_gpiod) @@ -300,6 +309,14 @@ static int __maybe_unused usb_conn_resume(struct device *dev) { struct usb_conn_info *info = dev_get_drvdata(dev); + if (device_may_wakeup(dev)) { + if (info->id_gpiod) + disable_irq_wake(info->id_irq); + if (info->vbus_gpiod) + disable_irq_wake(info->vbus_irq); + return 0; + } + pinctrl_pm_select_default_state(dev); if (info->id_gpiod) -- 2.7.4