diff --git a/drivers/phy/phy-mixel-lvds.c b/drivers/phy/phy-mixel-lvds.c
index 824b251020a49ee4ecdce92bbbd069cb81971932..31188884f3317ffee4f5416043f098f064e4e5ee 100644
--- a/drivers/phy/phy-mixel-lvds.c
+++ b/drivers/phy/phy-mixel-lvds.c
@@ -96,6 +96,13 @@ void mixel_phy_lvds_set_phy_speed(struct phy *phy, unsigned long phy_clk_rate)
 	mutex_unlock(&priv->lock);
 	clk_disable_unprepare(priv->phy_clk);
 
+	/*
+	 * To workaround setting clock rate failure issue
+	 * when the system resumes back from PM sleep mode,
+	 * we need to get the clock rate before setting it's
+	 * rate, otherwise, setting the clock rate will fail.
+	 */
+	clk_get_rate(priv->phy_clk);
 	clk_set_rate(priv->phy_clk, phy_clk_rate);
 }
 EXPORT_SYMBOL_GPL(mixel_phy_lvds_set_phy_speed);