From: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
To: Peter Chen <peter.chen@oss.qualcomm.com>
Cc: Thinh Nguyen <Thinh.Nguyen@synopsys.com>,
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>,
"cros-qcom-dts-watchers@chromium.org"
<cros-qcom-dts-watchers@chromium.org>,
"linux-arm-msm@vger.kernel.org" <linux-arm-msm@vger.kernel.org>,
"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 0/1] usb: dwc3: qcom: Keep wakeup option default off
Date: Thu, 12 Nov 2026 01:14:44 +0000 [thread overview]
Message-ID: <avUMs981FKk7Kr3a@vbox> (raw)
In-Reply-To: <20261110092157.2989350-1-peter.chen@oss.qualcomm.com>
Hi,
On Tue, Nov 10, 2026, Peter Chen wrote:
> 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
That won't work in host mode. dwc->sys_wakeup is read only once in
dwc3_core_probe(), so enabling wakeup later from sysfs won't reach the
xhci-plat device, and xhci_suspend() clears the port wake bits. Moving
the wakeup setup before dwc3_core_probe() won't work either, since
wakeup is off at that point. The setting needs to be passed to xhci at
suspend time (perhaps in dwc3_pm_prepare()?).
>
> 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 PHYs powered (dwc3_core_exit() is skipped) and necessary logic
> for detecting wakeup must be on, 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.
Sounds good, but there are some concerns.
>
> 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
> 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 rings my alarm bells for me any time we mention a user behavior
change or possible regression. Perhaps you can add this to the commit
message.
> 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,
This will be the default in host mode for every qcom platform with
"wakeup-source". Which platforms have you tested?
> system suspend takes the full power down path in
> dwc3_suspend_common() (dwc3_core_exit()). Platforms where this
> power down path has not been tested may fail to resume.
>
BR,
Thinh
next prev parent reply other threads:[~2026-11-12 1:15 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-10 9:21 [PATCH 0/1] usb: dwc3: qcom: Keep wakeup option default off Peter Chen
2026-11-10 9:21 ` [PATCH 1/1] " Peter Chen
2026-11-12 1:14 ` Thinh Nguyen [this message]
2026-11-12 8:10 ` [PATCH 0/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=avUMs981FKk7Kr3a@vbox \
--to=thinh.nguyen@synopsys.com \
--cc=andersson@kernel.org \
--cc=cros-qcom-dts-watchers@chromium.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=peter.chen@oss.qualcomm.com \
--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