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);