diff mbox series

[v2,1/1] phy: phy-cadence-salvo: add phy .init API

Message ID 20200513125605.5545-1-peter.chen@nxp.com (mailing list archive)
State Mainlined
Commit 11c82afac8d19eb0364521ebfc3b76cb6863dcb8
Headers show
Series [v2,1/1] phy: phy-cadence-salvo: add phy .init API | expand

Commit Message

Peter Chen May 13, 2020, 12:56 p.m. UTC
The .init is used for one-time PHY's initialization, and .power_on
is called many times during the device lifecycle.

Signed-off-by: Peter Chen <peter.chen@nxp.com>
---
Changes for v2:
- Apply to linux-phy -next tree
- Change commit log a bit

 drivers/phy/cadence/phy-cadence-salvo.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

Comments

Vinod Koul May 15, 2020, 7:50 a.m. UTC | #1
On 13-05-20, 20:56, Peter Chen wrote:
> The .init is used for one-time PHY's initialization, and .power_on
> is called many times during the device lifecycle.

Applied, thanks
diff mbox series

Patch

diff --git a/drivers/phy/cadence/phy-cadence-salvo.c b/drivers/phy/cadence/phy-cadence-salvo.c
index 292e9b4dd41a..1ecbb964cd21 100644
--- a/drivers/phy/cadence/phy-cadence-salvo.c
+++ b/drivers/phy/cadence/phy-cadence-salvo.c
@@ -205,7 +205,7 @@  static struct cdns_reg_pairs cdns_nxp_sequence_pair[] = {
 	{0x0090, TB_ADDR_XCVR_DIAG_LANE_FCM_EN_MGN_TMR},
 };
 
-static int cdns_salvo_phy_power_on(struct phy *phy)
+static int cdns_salvo_phy_init(struct phy *phy)
 {
 	struct cdns_salvo_phy *salvo_phy = phy_get_drvdata(phy);
 	struct cdns_salvo_data *data = salvo_phy->data;
@@ -230,9 +230,18 @@  static int cdns_salvo_phy_power_on(struct phy *phy)
 
 	udelay(10);
 
+	clk_disable_unprepare(salvo_phy->clk);
+
 	return ret;
 }
 
+static int cdns_salvo_phy_power_on(struct phy *phy)
+{
+	struct cdns_salvo_phy *salvo_phy = phy_get_drvdata(phy);
+
+	return clk_prepare_enable(salvo_phy->clk);
+}
+
 static int cdns_salvo_phy_power_off(struct phy *phy)
 {
 	struct cdns_salvo_phy *salvo_phy = phy_get_drvdata(phy);
@@ -243,6 +252,7 @@  static int cdns_salvo_phy_power_off(struct phy *phy)
 }
 
 static struct phy_ops cdns_salvo_phy_ops = {
+	.init		= cdns_salvo_phy_init,
 	.power_on	= cdns_salvo_phy_power_on,
 	.power_off	= cdns_salvo_phy_power_off,
 	.owner		= THIS_MODULE,