Skip to content

Commit

Permalink
phy: tegra: p2u: Set ENABLE_L2_EXIT_RATE_CHANGE in calibration
Browse files Browse the repository at this point in the history
Set ENABLE_L2_EXIT_RATE_CHANGE to request UPHY PLL rate change to Gen1
during initialization. This helps in the below surprise down cases,
  - Surprise down happens at Gen3/Gen4 link speed
  - Surprise down happens and external REFCLK is cut off which causes
UPHY PLL rate to deviate to an invalid rate

ENABLE_L2_EXIT_RATE_CHANGE needs to be set to bring the UPHY PLL rate
back to Gen1 during controller initialization for the link up.

Signed-off-by: Vidya Sagar <vidyas@nvidia.com>
  • Loading branch information
Vidya Sagar authored and intel-lab-lkp committed Sep 19, 2022
1 parent 9429f0b commit 3b12c1a
Showing 1 changed file with 14 additions and 0 deletions.
14 changes: 14 additions & 0 deletions drivers/phy/tegra/phy-tegra194-p2u.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#include <linux/phy/phy.h>

#define P2U_CONTROL_CMN 0x74
#define P2U_CONTROL_CMN_ENABLE_L2_EXIT_RATE_CHANGE BIT(13)
#define P2U_CONTROL_CMN_SKP_SIZE_PROTECTION_EN BIT(20)

#define P2U_PERIODIC_EQ_CTRL_GEN3 0xc0
Expand Down Expand Up @@ -85,8 +86,21 @@ static int tegra_p2u_power_on(struct phy *x)
return 0;
}

int tegra_p2u_calibrate(struct phy *x)
{
struct tegra_p2u *phy = phy_get_drvdata(x);
u32 val;

val = p2u_readl(phy, P2U_CONTROL_CMN);
val |= P2U_CONTROL_CMN_ENABLE_L2_EXIT_RATE_CHANGE;
p2u_writel(phy, val, P2U_CONTROL_CMN);

return 0;
}

static const struct phy_ops ops = {
.power_on = tegra_p2u_power_on,
.calibrate = tegra_p2u_calibrate,
.owner = THIS_MODULE,
};

Expand Down

0 comments on commit 3b12c1a

Please sign in to comment.