aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/phy
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/phy')
-rw-r--r--drivers/phy/Kconfig3
-rw-r--r--drivers/phy/phy-core.c14
-rw-r--r--drivers/phy/phy-exynos-dp-video.c8
-rw-r--r--drivers/phy/phy-exynos-mipi-video.c10
-rw-r--r--drivers/phy/phy-mvebu-sata.c10
-rw-r--r--drivers/phy/phy-omap-usb2.c10
-rw-r--r--drivers/phy/phy-twl4030-usb.c10
7 files changed, 32 insertions, 33 deletions
diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig
index afa2354f6600..c7a551c2d5f1 100644
--- a/drivers/phy/Kconfig
+++ b/drivers/phy/Kconfig
@@ -5,7 +5,7 @@
5menu "PHY Subsystem" 5menu "PHY Subsystem"
6 6
7config GENERIC_PHY 7config GENERIC_PHY
8 tristate "PHY Core" 8 bool "PHY Core"
9 help 9 help
10 Generic PHY support. 10 Generic PHY support.
11 11
@@ -61,6 +61,7 @@ config PHY_EXYNOS_DP_VIDEO
61config BCM_KONA_USB2_PHY 61config BCM_KONA_USB2_PHY
62 tristate "Broadcom Kona USB2 PHY Driver" 62 tristate "Broadcom Kona USB2 PHY Driver"
63 depends on GENERIC_PHY 63 depends on GENERIC_PHY
64 depends on HAS_IOMEM
64 help 65 help
65 Enable this to support the Broadcom Kona USB 2.0 PHY. 66 Enable this to support the Broadcom Kona USB 2.0 PHY.
66 67
diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
index 5f5b0f4be5be..6c738376daff 100644
--- a/drivers/phy/phy-core.c
+++ b/drivers/phy/phy-core.c
@@ -176,6 +176,8 @@ int phy_init(struct phy *phy)
176 dev_err(&phy->dev, "phy init failed --> %d\n", ret); 176 dev_err(&phy->dev, "phy init failed --> %d\n", ret);
177 goto out; 177 goto out;
178 } 178 }
179 } else {
180 ret = 0; /* Override possible ret == -ENOTSUPP */
179 } 181 }
180 ++phy->init_count; 182 ++phy->init_count;
181 183
@@ -232,6 +234,8 @@ int phy_power_on(struct phy *phy)
232 dev_err(&phy->dev, "phy poweron failed --> %d\n", ret); 234 dev_err(&phy->dev, "phy poweron failed --> %d\n", ret);
233 goto out; 235 goto out;
234 } 236 }
237 } else {
238 ret = 0; /* Override possible ret == -ENOTSUPP */
235 } 239 }
236 ++phy->power_count; 240 ++phy->power_count;
237 mutex_unlock(&phy->mutex); 241 mutex_unlock(&phy->mutex);
@@ -404,17 +408,11 @@ struct phy *phy_get(struct device *dev, const char *string)
404 index = of_property_match_string(dev->of_node, "phy-names", 408 index = of_property_match_string(dev->of_node, "phy-names",
405 string); 409 string);
406 phy = of_phy_get(dev, index); 410 phy = of_phy_get(dev, index);
407 if (IS_ERR(phy)) {
408 dev_err(dev, "unable to find phy\n");
409 return phy;
410 }
411 } else { 411 } else {
412 phy = phy_lookup(dev, string); 412 phy = phy_lookup(dev, string);
413 if (IS_ERR(phy)) {
414 dev_err(dev, "unable to find phy\n");
415 return phy;
416 }
417 } 413 }
414 if (IS_ERR(phy))
415 return phy;
418 416
419 if (!try_module_get(phy->ops->owner)) 417 if (!try_module_get(phy->ops->owner))
420 return ERR_PTR(-EPROBE_DEFER); 418 return ERR_PTR(-EPROBE_DEFER);
diff --git a/drivers/phy/phy-exynos-dp-video.c b/drivers/phy/phy-exynos-dp-video.c
index 1dbe6ce7b2ce..0786fef842e7 100644
--- a/drivers/phy/phy-exynos-dp-video.c
+++ b/drivers/phy/phy-exynos-dp-video.c
@@ -76,10 +76,6 @@ static int exynos_dp_video_phy_probe(struct platform_device *pdev)
76 if (IS_ERR(state->regs)) 76 if (IS_ERR(state->regs))
77 return PTR_ERR(state->regs); 77 return PTR_ERR(state->regs);
78 78
79 phy_provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate);
80 if (IS_ERR(phy_provider))
81 return PTR_ERR(phy_provider);
82
83 phy = devm_phy_create(dev, &exynos_dp_video_phy_ops, NULL); 79 phy = devm_phy_create(dev, &exynos_dp_video_phy_ops, NULL);
84 if (IS_ERR(phy)) { 80 if (IS_ERR(phy)) {
85 dev_err(dev, "failed to create Display Port PHY\n"); 81 dev_err(dev, "failed to create Display Port PHY\n");
@@ -87,6 +83,10 @@ static int exynos_dp_video_phy_probe(struct platform_device *pdev)
87 } 83 }
88 phy_set_drvdata(phy, state); 84 phy_set_drvdata(phy, state);
89 85
86 phy_provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate);
87 if (IS_ERR(phy_provider))
88 return PTR_ERR(phy_provider);
89
90 return 0; 90 return 0;
91} 91}
92 92
diff --git a/drivers/phy/phy-exynos-mipi-video.c b/drivers/phy/phy-exynos-mipi-video.c
index 0c5efab11af1..7f139326a642 100644
--- a/drivers/phy/phy-exynos-mipi-video.c
+++ b/drivers/phy/phy-exynos-mipi-video.c
@@ -134,11 +134,6 @@ static int exynos_mipi_video_phy_probe(struct platform_device *pdev)
134 dev_set_drvdata(dev, state); 134 dev_set_drvdata(dev, state);
135 spin_lock_init(&state->slock); 135 spin_lock_init(&state->slock);
136 136
137 phy_provider = devm_of_phy_provider_register(dev,
138 exynos_mipi_video_phy_xlate);
139 if (IS_ERR(phy_provider))
140 return PTR_ERR(phy_provider);
141
142 for (i = 0; i < EXYNOS_MIPI_PHYS_NUM; i++) { 137 for (i = 0; i < EXYNOS_MIPI_PHYS_NUM; i++) {
143 struct phy *phy = devm_phy_create(dev, 138 struct phy *phy = devm_phy_create(dev,
144 &exynos_mipi_video_phy_ops, NULL); 139 &exynos_mipi_video_phy_ops, NULL);
@@ -152,6 +147,11 @@ static int exynos_mipi_video_phy_probe(struct platform_device *pdev)
152 phy_set_drvdata(phy, &state->phys[i]); 147 phy_set_drvdata(phy, &state->phys[i]);
153 } 148 }
154 149
150 phy_provider = devm_of_phy_provider_register(dev,
151 exynos_mipi_video_phy_xlate);
152 if (IS_ERR(phy_provider))
153 return PTR_ERR(phy_provider);
154
155 return 0; 155 return 0;
156} 156}
157 157
diff --git a/drivers/phy/phy-mvebu-sata.c b/drivers/phy/phy-mvebu-sata.c
index d43786f62437..d70ecd6a1b3f 100644
--- a/drivers/phy/phy-mvebu-sata.c
+++ b/drivers/phy/phy-mvebu-sata.c
@@ -99,17 +99,17 @@ static int phy_mvebu_sata_probe(struct platform_device *pdev)
99 if (IS_ERR(priv->clk)) 99 if (IS_ERR(priv->clk))
100 return PTR_ERR(priv->clk); 100 return PTR_ERR(priv->clk);
101 101
102 phy_provider = devm_of_phy_provider_register(&pdev->dev,
103 of_phy_simple_xlate);
104 if (IS_ERR(phy_provider))
105 return PTR_ERR(phy_provider);
106
107 phy = devm_phy_create(&pdev->dev, &phy_mvebu_sata_ops, NULL); 102 phy = devm_phy_create(&pdev->dev, &phy_mvebu_sata_ops, NULL);
108 if (IS_ERR(phy)) 103 if (IS_ERR(phy))
109 return PTR_ERR(phy); 104 return PTR_ERR(phy);
110 105
111 phy_set_drvdata(phy, priv); 106 phy_set_drvdata(phy, priv);
112 107
108 phy_provider = devm_of_phy_provider_register(&pdev->dev,
109 of_phy_simple_xlate);
110 if (IS_ERR(phy_provider))
111 return PTR_ERR(phy_provider);
112
113 /* The boot loader may of left it on. Turn it off. */ 113 /* The boot loader may of left it on. Turn it off. */
114 phy_mvebu_sata_power_off(phy); 114 phy_mvebu_sata_power_off(phy);
115 115
diff --git a/drivers/phy/phy-omap-usb2.c b/drivers/phy/phy-omap-usb2.c
index bfc5c337f99a..7699752fba11 100644
--- a/drivers/phy/phy-omap-usb2.c
+++ b/drivers/phy/phy-omap-usb2.c
@@ -177,11 +177,6 @@ static int omap_usb2_probe(struct platform_device *pdev)
177 phy->phy.otg = otg; 177 phy->phy.otg = otg;
178 phy->phy.type = USB_PHY_TYPE_USB2; 178 phy->phy.type = USB_PHY_TYPE_USB2;
179 179
180 phy_provider = devm_of_phy_provider_register(phy->dev,
181 of_phy_simple_xlate);
182 if (IS_ERR(phy_provider))
183 return PTR_ERR(phy_provider);
184
185 control_node = of_parse_phandle(node, "ctrl-module", 0); 180 control_node = of_parse_phandle(node, "ctrl-module", 0);
186 if (!control_node) { 181 if (!control_node) {
187 dev_err(&pdev->dev, "Failed to get control device phandle\n"); 182 dev_err(&pdev->dev, "Failed to get control device phandle\n");
@@ -214,6 +209,11 @@ static int omap_usb2_probe(struct platform_device *pdev)
214 209
215 phy_set_drvdata(generic_phy, phy); 210 phy_set_drvdata(generic_phy, phy);
216 211
212 phy_provider = devm_of_phy_provider_register(phy->dev,
213 of_phy_simple_xlate);
214 if (IS_ERR(phy_provider))
215 return PTR_ERR(phy_provider);
216
217 phy->wkupclk = devm_clk_get(phy->dev, "usb_phy_cm_clk32k"); 217 phy->wkupclk = devm_clk_get(phy->dev, "usb_phy_cm_clk32k");
218 if (IS_ERR(phy->wkupclk)) { 218 if (IS_ERR(phy->wkupclk)) {
219 dev_err(&pdev->dev, "unable to get usb_phy_cm_clk32k\n"); 219 dev_err(&pdev->dev, "unable to get usb_phy_cm_clk32k\n");
diff --git a/drivers/phy/phy-twl4030-usb.c b/drivers/phy/phy-twl4030-usb.c
index daf65e68aaab..c3ace1db8136 100644
--- a/drivers/phy/phy-twl4030-usb.c
+++ b/drivers/phy/phy-twl4030-usb.c
@@ -695,11 +695,6 @@ static int twl4030_usb_probe(struct platform_device *pdev)
695 otg->set_host = twl4030_set_host; 695 otg->set_host = twl4030_set_host;
696 otg->set_peripheral = twl4030_set_peripheral; 696 otg->set_peripheral = twl4030_set_peripheral;
697 697
698 phy_provider = devm_of_phy_provider_register(twl->dev,
699 of_phy_simple_xlate);
700 if (IS_ERR(phy_provider))
701 return PTR_ERR(phy_provider);
702
703 phy = devm_phy_create(twl->dev, &ops, init_data); 698 phy = devm_phy_create(twl->dev, &ops, init_data);
704 if (IS_ERR(phy)) { 699 if (IS_ERR(phy)) {
705 dev_dbg(&pdev->dev, "Failed to create PHY\n"); 700 dev_dbg(&pdev->dev, "Failed to create PHY\n");
@@ -708,6 +703,11 @@ static int twl4030_usb_probe(struct platform_device *pdev)
708 703
709 phy_set_drvdata(phy, twl); 704 phy_set_drvdata(phy, twl);
710 705
706 phy_provider = devm_of_phy_provider_register(twl->dev,
707 of_phy_simple_xlate);
708 if (IS_ERR(phy_provider))
709 return PTR_ERR(phy_provider);
710
711 /* init spinlock for workqueue */ 711 /* init spinlock for workqueue */
712 spin_lock_init(&twl->lock); 712 spin_lock_init(&twl->lock);
713 713