Writing another email to not muddy the waters in the previous email. I discovered that the femto PHY PM count doesn't seem to be right. Even when the dwc3 core runtime suspends and calls phy_pm_runtime_put_sync(dwc->usb2_generic_phy) [1], the count equals 1 after that and the PHY is not runtime suspended. This is because on boot, the count is incremented twice because phy_power_on() is called twice: First: phy_power_on+0x120/0x184 dwc3_core_init+0x68c/0xda4 dwc3_probe+0xc84/0x1304 Second: phy_power_on+0x120/0x184 usb_phy_roothub_power_on+0x48/0xa0 usb_add_hcd+0x94/0x604 xhci_plat_probe+0x4bc/0x6e4 xhci_generic_plat_probe+0xa0/0x104 That makes the femto PHY runtime PM impossible to test at the moment. I'm not sure if this should be fixed on the dwc3 side or the xhci side, but this should probably be a topic for another patch series. Best, Adrien [1] https://elixir.bootlin.com/linux/latest/source/drivers/usb/dwc3/core.c#L2005