usb: gadget: tegra-xudc: fix PM use count underflow
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Fri, 1 Aug 2025 17:40:41 +0000 (18:40 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 13 Aug 2025 15:15:45 +0000 (17:15 +0200)
commit202ad1aaca777dc7fd24f459f5f808f5abd2bfda
treebab370a4339bcceebf78a7b45fd81d488b4b4fa6
parente664036cf36480414936cd91f4cfa2179a3d8367
usb: gadget: tegra-xudc: fix PM use count underflow

Upon resume from system suspend, the PM runtime core issues the
following warning:

tegra-xudc 3550000.usb: Runtime PM usage count underflow!

This is because tegra_xudc_resume() unconditionally calls
schedule_work(&xudc->usb_role_sw_work) whether or not anything has
changed, which causes tegra_xudc_device_mode_off() to be called
even when we're already in that mode.

Keep track of the current state of "device_mode", and only schedule
this work if it has changed from the hardware state on resume.

Signed-off-by: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>
Link: https://lore.kernel.org/r/E1uhtkH-007KDZ-JT@rmk-PC.armlinux.org.uk
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/gadget/udc/tegra-xudc.c