linux-yocto/drivers/phy
Wayne Chang cdcb0ffd64 phy: tegra: xusb: Fix unbalanced regulator disable in UTMI PHY mode
commit cefc1caee9 upstream.

When transitioning from USB_ROLE_DEVICE to USB_ROLE_NONE, the code
assumed that the regulator should be disabled. However, if the regulator
is marked as always-on, regulator_is_enabled() continues to return true,
leading to an incorrect attempt to disable a regulator which is not
enabled.

This can result in warnings such as:

[  250.155624] WARNING: CPU: 1 PID: 7326 at drivers/regulator/core.c:3004
_regulator_disable+0xe4/0x1a0
[  250.155652] unbalanced disables for VIN_SYS_5V0

To fix this, we move the regulator control logic into
tegra186_xusb_padctl_id_override() function since it's directly related
to the ID override state. The regulator is now only disabled when the role
transitions from USB_ROLE_HOST to USB_ROLE_NONE, by checking the VBUS_ID
register. This ensures that regulator enable/disable operations are
properly balanced and only occur when actually transitioning to/from host
mode.

Fixes: 49d46e3c7e ("phy: tegra: xusb: Add set_mode support for UTMI phy on Tegra186")
Cc: stable@vger.kernel.org
Signed-off-by: Wayne Chang <waynec@nvidia.com>
Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Tested-by: Jon Hunter <jonathanh@nvidia.com>
Link: https://lore.kernel.org/r/20250502092606.2275682-1-waynec@nvidia.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-08-28 16:23:58 +02:00
..
allwinner
amlogic
broadcom phy: usb: Fix clock imbalance for suspend/resume 2025-01-23 17:15:57 +01:00
cadence
freescale
hisilicon
ingenic
intel
lantiq
marvell
mediatek
microchip
motorola
mscc
qualcomm
ralink
renesas phy: renesas: rcar-gen3-usb2: Set timing registers only once 2025-05-22 14:08:26 +02:00
rockchip
samsung phy: exynos5-usbdrd: fix MPLL_MULTIPLIER and SSC_REFCLKSEL masks in refclk 2025-03-13 12:51:00 +01:00
socionext
st
tegra phy: tegra: xusb: Fix unbalanced regulator disable in UTMI PHY mode 2025-08-28 16:23:58 +02:00
ti
xilinx
Kconfig
Makefile
phy-can-transceiver.c
phy-core-mipi-dphy.c
phy-core.c phy: core: don't require set_mode() callback for phy_get_mode() to work 2025-06-04 14:38:02 +02:00
phy-lgm-usb.c
phy-lpc18xx-usb-otg.c
phy-pistachio-usb.c
phy-xgene.c