Re: [PATCH] arm64: dts: qcom: hamoa/x1: Fix TODO in system power domain node

Bjorn Andersson
2026-02-23T16:02:05Z

On Mon, Feb 23, 2026 at 02:51:44AM -0300, Val Packett wrote:
> On 2/23/26 1:11 AM, Maulik Shah (mkshah) wrote:
> > On 2/21/2026 4:21 PM, Daniel J Blueman wrote:
[..]
> That issue with runtime-suspending all four USB controllers shutting the
> system down, does that mean there's some rail where USB ends up being the
> last load-bearing thing holding it up and we'd like to let it go down
> properly?
>

The three USB nodes have power-domains = <&gcc GCC_USB30_*_GDSC> and
required-opps = <&opp_nom>. &gcc has power-domains = < &rpmhpd CX>.
This means that as long as the USB controllers are active, CX is kept at
at least nominal corner.

The reason why the USB node has &opp_nom is because it's required by the
200MHz MASTER_CLK, which iirc relates to the possibility that you might
have something SuperSpeed connected. (But as we flatten dwc3, we should
be able to scale this based on what is actually connected)

I don't know why there's multiple pm_runtime_forbid() in the USB stack,
this needs to be revisited.

Then to your actual question, yes, if you suspend the USB controllers
and the result is that the system dies, then we have other resources
piggybacking on the USB controllers' votes for CX.

I did some experiments on SC8280XP earlier and was able to drop the
pm_runtime_forbid() - and see CX drop below NOM. Iirc more work was
needed to get reasonable behavior in terms of plug-detect, so the
patches got stuck in their topic branch...

Regards,
Bjorn

>
> Thanks
> ~val
>