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 86665e9dc399..f9c618f0ab6e 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); | ||