]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
phy: qcom-ufs: Remove common layer phy exit callback
authorVivek Gautam <vivek.gautam@codeaurora.org>
Tue, 8 Nov 2016 10:07:49 +0000 (15:37 +0530)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 8 Nov 2016 23:05:45 +0000 (18:05 -0500)
The common layer phy exit callback ufs_qcom_phy_exit()
calls phy_power_off() that has no meaning when phy_power_off()
callback is already registered with the phy provider and
the consumer makes use of the same.
Instead, add a no-op specific phy_exit() callback for now
to add the exit sequence at a later point.

Signed-off-by: Vivek Gautam <vivek.gautam@codeaurora.org>
Reviewed-by: Subhash Jadavani <subhashj@codeaurora.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/phy/phy-qcom-ufs-i.h
drivers/phy/phy-qcom-ufs-qmp-14nm.c
drivers/phy/phy-qcom-ufs-qmp-20nm.c
drivers/phy/phy-qcom-ufs.c

index 69e836d0ec3e1ef79aa55b5556c28327d04df189..d505d98cf5f8187c1be36c93ca05ac5c7e510804 100644 (file)
@@ -141,7 +141,6 @@ struct ufs_qcom_phy_specific_ops {
 struct ufs_qcom_phy *get_ufs_qcom_phy(struct phy *generic_phy);
 int ufs_qcom_phy_power_on(struct phy *generic_phy);
 int ufs_qcom_phy_power_off(struct phy *generic_phy);
-int ufs_qcom_phy_exit(struct phy *generic_phy);
 int ufs_qcom_phy_init_clks(struct ufs_qcom_phy *phy_common);
 int ufs_qcom_phy_init_vregulators(struct ufs_qcom_phy *phy_common);
 int ufs_qcom_phy_remove(struct phy *generic_phy,
index ae74614baeb27cec34060a2adfa7e6ed70e41694..c71c84734916c80f1a9a6600e9ad8fc533e637fd 100644 (file)
@@ -47,6 +47,11 @@ static int ufs_qcom_phy_qmp_14nm_init(struct phy *generic_phy)
        return 0;
 }
 
+static int ufs_qcom_phy_qmp_14nm_exit(struct phy *generic_phy)
+{
+       return 0;
+}
+
 static
 void ufs_qcom_phy_qmp_14nm_power_control(struct ufs_qcom_phy *phy, bool val)
 {
@@ -94,7 +99,7 @@ static int ufs_qcom_phy_qmp_14nm_is_pcs_ready(struct ufs_qcom_phy *phy_common)
 
 static const struct phy_ops ufs_qcom_phy_qmp_14nm_phy_ops = {
        .init           = ufs_qcom_phy_qmp_14nm_init,
-       .exit           = ufs_qcom_phy_exit,
+       .exit           = ufs_qcom_phy_qmp_14nm_exit,
        .power_on       = ufs_qcom_phy_power_on,
        .power_off      = ufs_qcom_phy_power_off,
        .owner          = THIS_MODULE,
index dfc51755d6613ac03d00c36a44afa720be13401d..1a26a64e06d34ffc9cbc48fc3067376f4b3fadc1 100644 (file)
@@ -66,6 +66,11 @@ static int ufs_qcom_phy_qmp_20nm_init(struct phy *generic_phy)
        return 0;
 }
 
+static int ufs_qcom_phy_qmp_20nm_exit(struct phy *generic_phy)
+{
+       return 0;
+}
+
 static
 void ufs_qcom_phy_qmp_20nm_power_control(struct ufs_qcom_phy *phy, bool val)
 {
@@ -152,7 +157,7 @@ static int ufs_qcom_phy_qmp_20nm_is_pcs_ready(struct ufs_qcom_phy *phy_common)
 
 static const struct phy_ops ufs_qcom_phy_qmp_20nm_phy_ops = {
        .init           = ufs_qcom_phy_qmp_20nm_init,
-       .exit           = ufs_qcom_phy_exit,
+       .exit           = ufs_qcom_phy_qmp_20nm_exit,
        .power_on       = ufs_qcom_phy_power_on,
        .power_off      = ufs_qcom_phy_power_off,
        .owner          = THIS_MODULE,
index fdd9b901983fe9953db363a95c04e53953424a00..c69568b8543dcfaf4958875288cf9b13432169e5 100644 (file)
@@ -602,17 +602,6 @@ int ufs_qcom_phy_calibrate_phy(struct phy *generic_phy, bool is_rate_B)
 }
 EXPORT_SYMBOL_GPL(ufs_qcom_phy_calibrate_phy);
 
-int ufs_qcom_phy_exit(struct phy *generic_phy)
-{
-       struct ufs_qcom_phy *ufs_qcom_phy = get_ufs_qcom_phy(generic_phy);
-
-       if (ufs_qcom_phy->is_powered_on)
-               phy_power_off(generic_phy);
-
-       return 0;
-}
-EXPORT_SYMBOL_GPL(ufs_qcom_phy_exit);
-
 int ufs_qcom_phy_is_pcs_ready(struct phy *generic_phy)
 {
        struct ufs_qcom_phy *ufs_qcom_phy = get_ufs_qcom_phy(generic_phy);
@@ -634,6 +623,9 @@ int ufs_qcom_phy_power_on(struct phy *generic_phy)
        struct device *dev = phy_common->dev;
        int err;
 
+       if (phy_common->is_powered_on)
+               return 0;
+
        err = ufs_qcom_phy_enable_vreg(dev, &phy_common->vdda_phy);
        if (err) {
                dev_err(dev, "%s enable vdda_phy failed, err=%d\n",
@@ -696,6 +688,9 @@ int ufs_qcom_phy_power_off(struct phy *generic_phy)
 {
        struct ufs_qcom_phy *phy_common = get_ufs_qcom_phy(generic_phy);
 
+       if (!phy_common->is_powered_on)
+               return 0;
+
        phy_common->phy_spec_ops->power_control(phy_common, false);
 
        if (phy_common->vddp_ref_clk.reg)