From 1cb6f114065584de708ce0773ad6eb0d96a67ad2 Mon Sep 17 00:00:00 2001 From: speriaka Date: Mon, 29 Jul 2019 12:40:17 +0530 Subject: [PATCH] drivers: net: ipq6018: Update XPCS reset This patch updates the XPCS reset function. It makes sure only the 2nd bit is modified and not the entire register. Only 2nd bit needs to be toggled for XPCS assert and deassert. Change-Id: I7d11674f253d9b55825d1b285572e824ca218b95 Signed-off-by: speriaka --- drivers/net/ipq6018/ipq6018_uniphy.c | 6 ++++-- drivers/net/ipq6018/ipq6018_uniphy.h | 1 - 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/net/ipq6018/ipq6018_uniphy.c b/drivers/net/ipq6018/ipq6018_uniphy.c index a450e1a87c..35687a67bd 100644 --- a/drivers/net/ipq6018/ipq6018_uniphy.c +++ b/drivers/net/ipq6018/ipq6018_uniphy.c @@ -77,10 +77,12 @@ static void ppe_gcc_uniphy_xpcs_reset(uint32_t uniphy_index, bool enable) { uint32_t reg_value; + reg_value = readl(GCC_UNIPHY0_MISC + (uniphy_index * GCC_UNIPHY_REG_INC)); + if(enable) - reg_value = GCC_UNIPHY_USXGMII_XPCS_RESET; + reg_value |= GCC_UNIPHY_USXGMII_XPCS_RESET; else - reg_value = GCC_UNIPHY_USXGMII_XPCS_RELEASE_RESET; + reg_value &= ~GCC_UNIPHY_USXGMII_XPCS_RESET; writel(reg_value, GCC_UNIPHY0_MISC + (uniphy_index * GCC_UNIPHY_REG_INC)); } diff --git a/drivers/net/ipq6018/ipq6018_uniphy.h b/drivers/net/ipq6018/ipq6018_uniphy.h index 224fb69b21..04151ef7de 100644 --- a/drivers/net/ipq6018/ipq6018_uniphy.h +++ b/drivers/net/ipq6018/ipq6018_uniphy.h @@ -27,7 +27,6 @@ #define GCC_UNIPHY0_MISC 0x01856004 #define GCC_UNIPHY_REG_INC 0x100 #define GCC_UNIPHY_USXGMII_XPCS_RESET 0x4 -#define GCC_UNIPHY_USXGMII_XPCS_RELEASE_RESET 0x0 #define PPE_UNIPHY_OFFSET_CALIB_4 0x1E0 #define UNIPHY_CALIBRATION_DONE 0x1