Commit 3cc2c646 authored by Bjarni Jonasson's avatar Bjarni Jonasson Committed by David S. Miller

net: phy: mscc: adding LCPLL reset to VSC8514

At Power-On Reset, transients may cause the LCPLL to lock onto a
clock that is momentarily unstable. This is normally seen in QSGMII
setups where the higher speed 6G SerDes is being used.
This patch adds an initial LCPLL Reset to the PHY (first instance)
to avoid this issue.

Fixes: e4f9ba64 ("net: phy: mscc: add support for VSC8514 PHY.")
Signed-off-by: default avatarSteen Hegelund <steen.hegelund@microchip.com>
Signed-off-by: default avatarBjarni Jonasson <bjarni.jonasson@microchip.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 455843d2
...@@ -102,6 +102,7 @@ enum rgmii_clock_delay { ...@@ -102,6 +102,7 @@ enum rgmii_clock_delay {
#define PHY_MCB_S6G_READ BIT(30) #define PHY_MCB_S6G_READ BIT(30)
#define PHY_S6G_PLL5G_CFG0 0x06 #define PHY_S6G_PLL5G_CFG0 0x06
#define PHY_S6G_PLL5G_CFG2 0x08
#define PHY_S6G_LCPLL_CFG 0x11 #define PHY_S6G_LCPLL_CFG 0x11
#define PHY_S6G_PLL_CFG 0x2b #define PHY_S6G_PLL_CFG 0x2b
#define PHY_S6G_COMMON_CFG 0x2c #define PHY_S6G_COMMON_CFG 0x2c
...@@ -121,6 +122,9 @@ enum rgmii_clock_delay { ...@@ -121,6 +122,9 @@ enum rgmii_clock_delay {
#define PHY_S6G_PLL_FSM_CTRL_DATA_POS 8 #define PHY_S6G_PLL_FSM_CTRL_DATA_POS 8
#define PHY_S6G_PLL_FSM_ENA_POS 7 #define PHY_S6G_PLL_FSM_ENA_POS 7
#define PHY_S6G_CFG2_FSM_DIS 1
#define PHY_S6G_CFG2_FSM_CLK_BP 23
#define MSCC_EXT_PAGE_ACCESS 31 #define MSCC_EXT_PAGE_ACCESS 31
#define MSCC_PHY_PAGE_STANDARD 0x0000 /* Standard registers */ #define MSCC_PHY_PAGE_STANDARD 0x0000 /* Standard registers */
#define MSCC_PHY_PAGE_EXTENDED 0x0001 /* Extended registers */ #define MSCC_PHY_PAGE_EXTENDED 0x0001 /* Extended registers */
...@@ -412,6 +416,10 @@ struct vsc8531_edge_rate_table { ...@@ -412,6 +416,10 @@ struct vsc8531_edge_rate_table {
}; };
#endif /* CONFIG_OF_MDIO */ #endif /* CONFIG_OF_MDIO */
enum csr_target {
MACRO_CTRL = 0x07,
};
#if IS_ENABLED(CONFIG_MACSEC) #if IS_ENABLED(CONFIG_MACSEC)
int vsc8584_macsec_init(struct phy_device *phydev); int vsc8584_macsec_init(struct phy_device *phydev);
void vsc8584_handle_macsec_interrupt(struct phy_device *phydev); void vsc8584_handle_macsec_interrupt(struct phy_device *phydev);
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment