Re: [PATCH] usb: chipidea: udc: reject non-control requests while controller is suspended

From: Xu Yang

Date: Wed Apr 01 2026 - 04:38:02 EST


On Tue, Mar 31, 2026 at 12:21:45PM +0000, Andreea.Popescu@xxxxxxxxxxx wrote:
> When Linux runtime PM autosuspends a ChipIdea UDC that is still
> enumerated by the host, the driver gates the PHY clocks and marks
> the controller as suspended (ci->in_lpm = 1) but deliberately leaves
> gadget.speed unchanged so upper-layer gadget drivers do not see a
> spurious disconnect.

It's strange that chipidea UDC will runtime suspend even it's already
enumerated by the host. AFAIK, the udc driver will call pm_runtime_get_sync()
in ci_hdrc_gadget_connect(is_active = true), so it will be in runtime active
state all the time unless a explicit pm_runtime_put/_autosuspend() is called
in somewhere.

Would you share more details how device controller go to runtime suspended?

Thanks,
Xu Yang