aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/phy/phy-qcom-ufs.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/phy/phy-qcom-ufs.c')
-rw-r--r--drivers/phy/phy-qcom-ufs.c33
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,
73out: 73out:
74 return ret; 74 return ret;
75} 75}
76EXPORT_SYMBOL_GPL(ufs_qcom_phy_calibrate);
76 77
77struct phy *ufs_qcom_phy_generic_probe(struct platform_device *pdev, 78struct 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,
110out: 112out:
111 return generic_phy; 113 return generic_phy;
112} 114}
115EXPORT_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}
127EXPORT_SYMBOL_GPL(get_ufs_qcom_phy);
124 128
125static 129static
126int ufs_qcom_phy_base_init(struct platform_device *pdev, 130int 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
166out: 154 return 0;
167 return err;
168} 155}
169 156
170static int __ufs_qcom_phy_clk_get(struct phy *phy, 157static int __ufs_qcom_phy_clk_get(struct phy *phy,
@@ -228,6 +215,7 @@ ufs_qcom_phy_init_clks(struct phy *generic_phy,
228out: 215out:
229 return err; 216 return err;
230} 217}
218EXPORT_SYMBOL_GPL(ufs_qcom_phy_init_clks);
231 219
232int 220int
233ufs_qcom_phy_init_vregulators(struct phy *generic_phy, 221ufs_qcom_phy_init_vregulators(struct phy *generic_phy,
@@ -252,6 +240,7 @@ ufs_qcom_phy_init_vregulators(struct phy *generic_phy,
252out: 240out:
253 return err; 241 return err;
254} 242}
243EXPORT_SYMBOL_GPL(ufs_qcom_phy_init_vregulators);
255 244
256static int __ufs_qcom_phy_init_vreg(struct phy *phy, 245static 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}
639EXPORT_SYMBOL_GPL(ufs_qcom_phy_remove);
650 640
651int ufs_qcom_phy_exit(struct phy *generic_phy) 641int 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}
650EXPORT_SYMBOL_GPL(ufs_qcom_phy_exit);
660 651
661int ufs_qcom_phy_is_pcs_ready(struct phy *generic_phy) 652int ufs_qcom_phy_is_pcs_ready(struct phy *generic_phy)
662{ 653{
@@ -725,6 +716,7 @@ out_disable_phy:
725out: 716out:
726 return err; 717 return err;
727} 718}
719EXPORT_SYMBOL_GPL(ufs_qcom_phy_power_on);
728 720
729int ufs_qcom_phy_power_off(struct phy *generic_phy) 721int 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}
738EXPORT_SYMBOL_GPL(ufs_qcom_phy_power_off);