diff options
Diffstat (limited to 'drivers/phy/phy-qcom-ufs.c')
| -rw-r--r-- | drivers/phy/phy-qcom-ufs.c | 33 |
1 files changed, 13 insertions, 20 deletions
diff --git a/drivers/phy/phy-qcom-ufs.c b/drivers/phy/phy-qcom-ufs.c index 44ee983d57fe..c4199e605ce2 100644 --- a/drivers/phy/phy-qcom-ufs.c +++ b/drivers/phy/phy-qcom-ufs.c | |||
| @@ -73,6 +73,7 @@ int ufs_qcom_phy_calibrate(struct ufs_qcom_phy *ufs_qcom_phy, | |||
| 73 | out: | 73 | out: |
| 74 | return ret; | 74 | return ret; |
| 75 | } | 75 | } |
| 76 | EXPORT_SYMBOL_GPL(ufs_qcom_phy_calibrate); | ||
| 76 | 77 | ||
| 77 | struct phy *ufs_qcom_phy_generic_probe(struct platform_device *pdev, | 78 | struct phy *ufs_qcom_phy_generic_probe(struct platform_device *pdev, |
| 78 | struct ufs_qcom_phy *common_cfg, | 79 | struct ufs_qcom_phy *common_cfg, |
| @@ -101,6 +102,7 @@ struct phy *ufs_qcom_phy_generic_probe(struct platform_device *pdev, | |||
| 101 | if (IS_ERR(generic_phy)) { | 102 | if (IS_ERR(generic_phy)) { |
| 102 | err = PTR_ERR(generic_phy); | 103 | err = PTR_ERR(generic_phy); |
| 103 | dev_err(dev, "%s: failed to create phy %d\n", __func__, err); | 104 | dev_err(dev, "%s: failed to create phy %d\n", __func__, err); |
| 105 | generic_phy = NULL; | ||
| 104 | goto out; | 106 | goto out; |
| 105 | } | 107 | } |
| 106 | 108 | ||
| @@ -110,6 +112,7 @@ struct phy *ufs_qcom_phy_generic_probe(struct platform_device *pdev, | |||
| 110 | out: | 112 | out: |
| 111 | return generic_phy; | 113 | return generic_phy; |
| 112 | } | 114 | } |
| 115 | EXPORT_SYMBOL_GPL(ufs_qcom_phy_generic_probe); | ||
| 113 | 116 | ||
| 114 | /* | 117 | /* |
| 115 | * This assumes the embedded phy structure inside generic_phy is of type | 118 | * This assumes the embedded phy structure inside generic_phy is of type |
| @@ -121,6 +124,7 @@ struct ufs_qcom_phy *get_ufs_qcom_phy(struct phy *generic_phy) | |||
| 121 | { | 124 | { |
| 122 | return (struct ufs_qcom_phy *)phy_get_drvdata(generic_phy); | 125 | return (struct ufs_qcom_phy *)phy_get_drvdata(generic_phy); |
| 123 | } | 126 | } |
| 127 | EXPORT_SYMBOL_GPL(get_ufs_qcom_phy); | ||
| 124 | 128 | ||
| 125 | static | 129 | static |
| 126 | int ufs_qcom_phy_base_init(struct platform_device *pdev, | 130 | int ufs_qcom_phy_base_init(struct platform_device *pdev, |
| @@ -131,40 +135,23 @@ int ufs_qcom_phy_base_init(struct platform_device *pdev, | |||
| 131 | int err = 0; | 135 | int err = 0; |
| 132 | 136 | ||
| 133 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "phy_mem"); | 137 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "phy_mem"); |
| 134 | if (!res) { | ||
| 135 | dev_err(dev, "%s: phy_mem resource not found\n", __func__); | ||
| 136 | err = -ENOMEM; | ||
| 137 | goto out; | ||
| 138 | } | ||
| 139 | |||
| 140 | phy_common->mmio = devm_ioremap_resource(dev, res); | 138 | phy_common->mmio = devm_ioremap_resource(dev, res); |
| 141 | if (IS_ERR((void const *)phy_common->mmio)) { | 139 | if (IS_ERR((void const *)phy_common->mmio)) { |
| 142 | err = PTR_ERR((void const *)phy_common->mmio); | 140 | err = PTR_ERR((void const *)phy_common->mmio); |
| 143 | phy_common->mmio = NULL; | 141 | phy_common->mmio = NULL; |
| 144 | dev_err(dev, "%s: ioremap for phy_mem resource failed %d\n", | 142 | dev_err(dev, "%s: ioremap for phy_mem resource failed %d\n", |
| 145 | __func__, err); | 143 | __func__, err); |
| 146 | goto out; | 144 | return err; |
| 147 | } | 145 | } |
| 148 | 146 | ||
| 149 | /* "dev_ref_clk_ctrl_mem" is optional resource */ | 147 | /* "dev_ref_clk_ctrl_mem" is optional resource */ |
| 150 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, | 148 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, |
| 151 | "dev_ref_clk_ctrl_mem"); | 149 | "dev_ref_clk_ctrl_mem"); |
| 152 | if (!res) { | ||
| 153 | dev_dbg(dev, "%s: dev_ref_clk_ctrl_mem resource not found\n", | ||
| 154 | __func__); | ||
| 155 | goto out; | ||
| 156 | } | ||
| 157 | |||
| 158 | phy_common->dev_ref_clk_ctrl_mmio = devm_ioremap_resource(dev, res); | 150 | phy_common->dev_ref_clk_ctrl_mmio = devm_ioremap_resource(dev, res); |
| 159 | if (IS_ERR((void const *)phy_common->dev_ref_clk_ctrl_mmio)) { | 151 | if (IS_ERR((void const *)phy_common->dev_ref_clk_ctrl_mmio)) |
| 160 | err = PTR_ERR((void const *)phy_common->dev_ref_clk_ctrl_mmio); | ||
| 161 | phy_common->dev_ref_clk_ctrl_mmio = NULL; | 152 | phy_common->dev_ref_clk_ctrl_mmio = NULL; |
| 162 | dev_err(dev, "%s: ioremap for dev_ref_clk_ctrl_mem resource failed %d\n", | ||
| 163 | __func__, err); | ||
| 164 | } | ||
| 165 | 153 | ||
| 166 | out: | 154 | return 0; |
| 167 | return err; | ||
| 168 | } | 155 | } |
| 169 | 156 | ||
| 170 | static int __ufs_qcom_phy_clk_get(struct phy *phy, | 157 | static int __ufs_qcom_phy_clk_get(struct phy *phy, |
| @@ -228,6 +215,7 @@ ufs_qcom_phy_init_clks(struct phy *generic_phy, | |||
| 228 | out: | 215 | out: |
| 229 | return err; | 216 | return err; |
| 230 | } | 217 | } |
| 218 | EXPORT_SYMBOL_GPL(ufs_qcom_phy_init_clks); | ||
| 231 | 219 | ||
| 232 | int | 220 | int |
| 233 | ufs_qcom_phy_init_vregulators(struct phy *generic_phy, | 221 | ufs_qcom_phy_init_vregulators(struct phy *generic_phy, |
| @@ -252,6 +240,7 @@ ufs_qcom_phy_init_vregulators(struct phy *generic_phy, | |||
| 252 | out: | 240 | out: |
| 253 | return err; | 241 | return err; |
| 254 | } | 242 | } |
| 243 | EXPORT_SYMBOL_GPL(ufs_qcom_phy_init_vregulators); | ||
| 255 | 244 | ||
| 256 | static int __ufs_qcom_phy_init_vreg(struct phy *phy, | 245 | static int __ufs_qcom_phy_init_vreg(struct phy *phy, |
| 257 | struct ufs_qcom_phy_vreg *vreg, const char *name, bool optional) | 246 | struct ufs_qcom_phy_vreg *vreg, const char *name, bool optional) |
| @@ -647,6 +636,7 @@ int ufs_qcom_phy_remove(struct phy *generic_phy, | |||
| 647 | 636 | ||
| 648 | return 0; | 637 | return 0; |
| 649 | } | 638 | } |
| 639 | EXPORT_SYMBOL_GPL(ufs_qcom_phy_remove); | ||
| 650 | 640 | ||
| 651 | int ufs_qcom_phy_exit(struct phy *generic_phy) | 641 | int ufs_qcom_phy_exit(struct phy *generic_phy) |
| 652 | { | 642 | { |
| @@ -657,6 +647,7 @@ int ufs_qcom_phy_exit(struct phy *generic_phy) | |||
| 657 | 647 | ||
| 658 | return 0; | 648 | return 0; |
| 659 | } | 649 | } |
| 650 | EXPORT_SYMBOL_GPL(ufs_qcom_phy_exit); | ||
| 660 | 651 | ||
| 661 | int ufs_qcom_phy_is_pcs_ready(struct phy *generic_phy) | 652 | int ufs_qcom_phy_is_pcs_ready(struct phy *generic_phy) |
| 662 | { | 653 | { |
| @@ -725,6 +716,7 @@ out_disable_phy: | |||
| 725 | out: | 716 | out: |
| 726 | return err; | 717 | return err; |
| 727 | } | 718 | } |
| 719 | EXPORT_SYMBOL_GPL(ufs_qcom_phy_power_on); | ||
| 728 | 720 | ||
| 729 | int ufs_qcom_phy_power_off(struct phy *generic_phy) | 721 | int ufs_qcom_phy_power_off(struct phy *generic_phy) |
| 730 | { | 722 | { |
| @@ -743,3 +735,4 @@ int ufs_qcom_phy_power_off(struct phy *generic_phy) | |||
| 743 | 735 | ||
| 744 | return 0; | 736 | return 0; |
| 745 | } | 737 | } |
| 738 | EXPORT_SYMBOL_GPL(ufs_qcom_phy_power_off); | ||
