[PATCH 1/1] phy: tegra: xusb: Fix UTMI AO sleepwalk trigger programming sequence

JC Kuo jckuo at nvidia.com
Wed Dec 3 23:12:03 PST 2025


Hi Wayne

On 12/3/25 10:47, Wayne Chang wrote:
> From: Haotien Hsu <haotienh at nvidia.com>
> 
> The UTMIP sleepwalk programming sequence requires asserting both
> LINEVAL_WALK_EN and WAKE_WALK_EN when enabling the sleepwalk logic.
> However, the current code mistakenly cleared WAKE_WALK_EN, which
> prevents the sleepwalk trigger from operating correctly.
> 
> Fix this by asserting WAKE_WALK_EN together with LINEVAL_WALK_EN.
> 
> Fixes: 1f9cab6cc20c ("phy: tegra: xusb: Add wake/sleepwalk for Tegra186")
> Cc: stable at vger.kernel.org
> Signed-off-by: Haotien Hsu <haotienh at nvidia.com>
> Signed-off-by: Wayne Chang <waynec at nvidia.com>
> ---
>  drivers/phy/tegra/xusb-tegra186.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/phy/tegra/xusb-tegra186.c b/drivers/phy/tegra/xusb-tegra186.c
> index e818f6c3980e..b2a76710c0c4 100644
> --- a/drivers/phy/tegra/xusb-tegra186.c
> +++ b/drivers/phy/tegra/xusb-tegra186.c
> @@ -401,8 +401,7 @@ static int tegra186_utmi_enable_phy_sleepwalk(struct tegra_xusb_lane *lane,
>  
>  	/* enable the trigger of the sleepwalk logic */
>  	value = ao_readl(priv, XUSB_AO_UTMIP_SLEEPWALK_CFG(index));
> -	value |= LINEVAL_WALK_EN;
> -	value &= ~WAKE_WALK_EN;
> +	value |= LINEVAL_WALK_EN | WAKE_WALK_EN;
>  	ao_writel(priv, value, XUSB_AO_UTMIP_SLEEPWALK_CFG(index));
>  
>  	/* reset the walk pointer and clear the alarm of the sleepwalk logic,
WAKE_WALK_EN has to be set with '0' according to the ASIC designers. Tegra234
and Tegra239 TRMs have been updated. We will get Tegra264 document updated as well.

Thanks,
JC



More information about the linux-phy mailing list