From: Peter Chen <peter.chen@oss.qualcomm.com>
To: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Johan Hovold <johan@kernel.org>,
Bjorn Andersson <andersson@kernel.org>,
Konrad Dybcio <konradybcio@kernel.org>,
Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,
Wesley Cheng <wesley.cheng@oss.qualcomm.com>,
Udipto Goswami <udipto.goswami@oss.qualcomm.com>,
Jack Pham <jack.pham@oss.qualcomm.com>,
Pratham Pratap <pratham.pratap@oss.qualcomm.com>,
Krishna Kurapati <krishna.kurapati@oss.qualcomm.com>,
Prashanth K <prashanth.k@oss.qualcomm.com>,
Elson Serrao <elson.serrao@oss.qualcomm.com>,
linux-arm-msm@vger.kernel.org, linux-usb@vger.kernel.org,
linux-kernel@vger.kernel.org,
Peter Chen <peter.chen@oss.qualcomm.com>
Subject: [RFC PATCH 0/1] usb: dwc3: qcom: Keep wakeup option default off
Date: Mon, 2 Nov 2026 22:14:00 -0800 [thread overview]
Message-ID: <20261103061401.2942139-1-peter.chen@oss.qualcomm.com> (raw)
This RFC proposes changing the default USB system wakeup policy of the
Qualcomm DWC3 glue driver, and asks for feedback on whether the change
of default is acceptable.
Current policy
--------------
When the controller node has the "wakeup-source" property, dwc3-qcom
calls device_init_wakeup(dev, true). USB is then a system wakeup
source by default. Users who do NOT want the system woken up by USB
have to disable it:
echo disabled > /sys/devices/.../<dwc3 device>/power/wakeup
Proposed policy
---------------
"wakeup-source" only describes that the controller is capable of
waking up the system (see
Documentation/devicetree/bindings/power/wakeup-source.txt), so with
this patch the driver only marks the device as wakeup capable, and
power/wakeup starts out "disabled". Users who NEED USB as a wakeup
source have to enable it:
echo enabled > /sys/devices/.../<dwc3 device>/power/wakeup
The motivation is:
- Users do not expect USB activity (connect/disconnect or USB line status
changes) to wake up the system unless they asked for it.
- Power consumption. With wakeup enabled, host mode system suspend
keeps the controller and PHYs powered (dwc3_core_exit() is skipped
and the genpd is not powered off) so that the wakeup interrupts can
fire. Today this extra power is spent by default, even on systems
where USB is never used as a wakeup source and the controller could
be fully powered off during suspend.
Comparison
----------
Current (default on) Proposed (default off)
-------------------- ----------------------
Initial power/wakeup enabled disabled
User action write "disabled" if USB write "enabled" if USB
wakeup is NOT wanted wakeup IS wanted
Unexpected wakeups possible (connect, none unless the user
disconnect, noise) opted in
Host mode suspend controller/PHYs powered, dwc3_core_exit() and
wakeup IRQs armed, genpd genpd powered off
kept on
Suspend power higher, even if USB lower, USB fully powered
wakeup is never used off
Attached devices on stay suspended, resume reset-resumed or
resume quickly re-enumerated
Possible regression
-------------------
This is a user-visible change for existing platforms. Many Qualcomm
arm64 DTs set "wakeup-source" on the USB controller, with this patch:
- USB wakeup stops working until userspace (or a udev
rule) writes "enabled" to the controller's power/wakeup.
- In host mode, because device_may_wakeup() is now false by default,
system suspend takes the full power down path in
dwc3_suspend_common() (dwc3_core_exit()) and dwc3_qcom_suspend()
powers off the genpd. The controller resume may fail if power down
path has not tested.
Comments on which policy is preferred for USB controllers, and whether
the regression above is acceptable, are welcome.
Peter Chen (1):
usb: dwc3: qcom: Keep wakeup option default off
drivers/usb/dwc3/dwc3-qcom.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
--
2.43.0
next reply other threads:[~2026-11-03 6:14 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-03 6:14 Peter Chen [this message]
2026-11-03 6:14 ` [RFC PATCH 1/1] " Peter Chen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261103061401.2942139-1-peter.chen@oss.qualcomm.com \
--to=peter.chen@oss.qualcomm.com \
--cc=Thinh.Nguyen@synopsys.com \
--cc=andersson@kernel.org \
--cc=dmitry.baryshkov@oss.qualcomm.com \
--cc=elson.serrao@oss.qualcomm.com \
--cc=gregkh@linuxfoundation.org \
--cc=jack.pham@oss.qualcomm.com \
--cc=johan@kernel.org \
--cc=konradybcio@kernel.org \
--cc=krishna.kurapati@oss.qualcomm.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=prashanth.k@oss.qualcomm.com \
--cc=pratham.pratap@oss.qualcomm.com \
--cc=udipto.goswami@oss.qualcomm.com \
--cc=wesley.cheng@oss.qualcomm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®