aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/phy
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-04-13 20:07:21 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-04-13 20:07:21 -0400
commit42e3a58b028e0e51746f596a11abfec01cd1c5c4 (patch)
treeb2dd1e8730359dc312519bcdaed9c52bae622990 /drivers/phy
parent4fd48b45ffc4addd3c2963448b05417aa14abbf7 (diff)
parent00fe52deb45b1a5ef42b0aa82e632e2df012eddc (diff)
Merge tag 'usb-4.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
Pull USB driver updates from Greg KH: "Here's the big USB (and PHY) driver patchset for 4.1-rc1. Everything here has been in linux-next, and the full details are below in the shortlog. Nothing major, just the normal round of new drivers,api updates, and other changes, mostly in the USB gadget area, as usual" * tag 'usb-4.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (252 commits) drivers/usb/core: devio.c: Removed an uneeded space before tab usb: dwc2: host: sleep USB_RESUME_TIMEOUT during resume usb: chipidea: debug: add low power mode check before print registers usb: chipidea: udc: bypass pullup DP when gadget connect in OTG fsm mode usb: core: hub: use new USB_RESUME_TIMEOUT usb: isp1760: hcd: use new USB_RESUME_TIMEOUT usb: dwc2: hcd: use new USB_RESUME_TIMEOUT usb: host: sl811: use new USB_RESUME_TIMEOUT usb: host: r8a66597: use new USB_RESUME_TIMEOUT usb: host: oxu210hp: use new USB_RESUME_TIMEOUT usb: host: fusbh200: use new USB_RESUME_TIMEOUT usb: host: fotg210: use new USB_RESUME_TIMEOUT usb: host: isp116x: use new USB_RESUME_TIMEOUT usb: musb: use new USB_RESUME_TIMEOUT usb: host: uhci: use new USB_RESUME_TIMEOUT usb: host: ehci: use new USB_RESUME_TIMEOUT usb: host: xhci: use new USB_RESUME_TIMEOUT usb: define a generic USB_RESUME_TIMEOUT macro usb: musb: dsps: fix build on i386 when COMPILE_TEST is set ehci-hub: use USB_DT_HUB ...
Diffstat (limited to 'drivers/phy')
-rw-r--r--drivers/phy/Kconfig18
-rw-r--r--drivers/phy/Makefile2
-rw-r--r--drivers/phy/phy-berlin-sata.c2
-rw-r--r--drivers/phy/phy-berlin-usb.c19
-rw-r--r--drivers/phy/phy-dm816x-usb.c290
-rw-r--r--drivers/phy/phy-exynos5-usbdrd.c10
-rw-r--r--drivers/phy/phy-miphy28lp.c5
-rw-r--r--drivers/phy/phy-miphy365x.c14
-rw-r--r--drivers/phy/phy-omap-control.c10
-rw-r--r--drivers/phy/phy-omap-usb2.c6
-rw-r--r--drivers/phy/phy-qcom-ufs.c33
-rw-r--r--drivers/phy/phy-samsung-usb2.c10
-rw-r--r--drivers/phy/phy-spear1310-miphy.c4
-rw-r--r--drivers/phy/phy-spear1340-miphy.c4
-rw-r--r--drivers/phy/phy-stih41x-usb.c8
-rw-r--r--drivers/phy/phy-sun9i-usb.c202
-rw-r--r--drivers/phy/phy-ti-pipe3.c9
-rw-r--r--drivers/phy/phy-xgene.c23
18 files changed, 580 insertions, 89 deletions
diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig
index 2962de205ba7..a53bd5b52df9 100644
--- a/drivers/phy/Kconfig
+++ b/drivers/phy/Kconfig
@@ -35,6 +35,13 @@ config ARMADA375_USBCLUSTER_PHY
35 depends on OF 35 depends on OF
36 select GENERIC_PHY 36 select GENERIC_PHY
37 37
38config PHY_DM816X_USB
39 tristate "TI dm816x USB PHY driver"
40 depends on ARCH_OMAP2PLUS
41 select GENERIC_PHY
42 help
43 Enable this for dm816x USB to work.
44
38config PHY_EXYNOS_MIPI_VIDEO 45config PHY_EXYNOS_MIPI_VIDEO
39 tristate "S5P/EXYNOS SoC series MIPI CSI-2/DSI PHY driver" 46 tristate "S5P/EXYNOS SoC series MIPI CSI-2/DSI PHY driver"
40 depends on HAS_IOMEM 47 depends on HAS_IOMEM
@@ -174,6 +181,17 @@ config PHY_SUN4I_USB
174 This driver controls the entire USB PHY block, both the USB OTG 181 This driver controls the entire USB PHY block, both the USB OTG
175 parts, as well as the 2 regular USB 2 host PHYs. 182 parts, as well as the 2 regular USB 2 host PHYs.
176 183
184config PHY_SUN9I_USB
185 tristate "Allwinner sun9i SoC USB PHY driver"
186 depends on ARCH_SUNXI && HAS_IOMEM && OF
187 depends on RESET_CONTROLLER
188 select GENERIC_PHY
189 help
190 Enable this to support the transceiver that is part of Allwinner
191 sun9i SoCs.
192
193 This driver controls each individual USB 2 host PHY.
194
177config PHY_SAMSUNG_USB2 195config PHY_SAMSUNG_USB2
178 tristate "Samsung USB 2.0 PHY driver" 196 tristate "Samsung USB 2.0 PHY driver"
179 depends on HAS_IOMEM 197 depends on HAS_IOMEM
diff --git a/drivers/phy/Makefile b/drivers/phy/Makefile
index f080e1bb2a74..f12625178780 100644
--- a/drivers/phy/Makefile
+++ b/drivers/phy/Makefile
@@ -5,6 +5,7 @@
5obj-$(CONFIG_GENERIC_PHY) += phy-core.o 5obj-$(CONFIG_GENERIC_PHY) += phy-core.o
6obj-$(CONFIG_PHY_BERLIN_USB) += phy-berlin-usb.o 6obj-$(CONFIG_PHY_BERLIN_USB) += phy-berlin-usb.o
7obj-$(CONFIG_PHY_BERLIN_SATA) += phy-berlin-sata.o 7obj-$(CONFIG_PHY_BERLIN_SATA) += phy-berlin-sata.o
8obj-$(CONFIG_PHY_DM816X_USB) += phy-dm816x-usb.o
8obj-$(CONFIG_ARMADA375_USBCLUSTER_PHY) += phy-armada375-usb2.o 9obj-$(CONFIG_ARMADA375_USBCLUSTER_PHY) += phy-armada375-usb2.o
9obj-$(CONFIG_BCM_KONA_USB2_PHY) += phy-bcm-kona-usb2.o 10obj-$(CONFIG_BCM_KONA_USB2_PHY) += phy-bcm-kona-usb2.o
10obj-$(CONFIG_PHY_EXYNOS_DP_VIDEO) += phy-exynos-dp-video.o 11obj-$(CONFIG_PHY_EXYNOS_DP_VIDEO) += phy-exynos-dp-video.o
@@ -20,6 +21,7 @@ obj-$(CONFIG_TWL4030_USB) += phy-twl4030-usb.o
20obj-$(CONFIG_PHY_EXYNOS5250_SATA) += phy-exynos5250-sata.o 21obj-$(CONFIG_PHY_EXYNOS5250_SATA) += phy-exynos5250-sata.o
21obj-$(CONFIG_PHY_HIX5HD2_SATA) += phy-hix5hd2-sata.o 22obj-$(CONFIG_PHY_HIX5HD2_SATA) += phy-hix5hd2-sata.o
22obj-$(CONFIG_PHY_SUN4I_USB) += phy-sun4i-usb.o 23obj-$(CONFIG_PHY_SUN4I_USB) += phy-sun4i-usb.o
24obj-$(CONFIG_PHY_SUN9I_USB) += phy-sun9i-usb.o
23obj-$(CONFIG_PHY_SAMSUNG_USB2) += phy-exynos-usb2.o 25obj-$(CONFIG_PHY_SAMSUNG_USB2) += phy-exynos-usb2.o
24phy-exynos-usb2-y += phy-samsung-usb2.o 26phy-exynos-usb2-y += phy-samsung-usb2.o
25phy-exynos-usb2-$(CONFIG_PHY_EXYNOS4210_USB2) += phy-exynos4210-usb2.o 27phy-exynos-usb2-$(CONFIG_PHY_EXYNOS4210_USB2) += phy-exynos4210-usb2.o
diff --git a/drivers/phy/phy-berlin-sata.c b/drivers/phy/phy-berlin-sata.c
index 099eee8851e5..6f3e06d687de 100644
--- a/drivers/phy/phy-berlin-sata.c
+++ b/drivers/phy/phy-berlin-sata.c
@@ -218,7 +218,7 @@ static int phy_berlin_sata_probe(struct platform_device *pdev)
218 if (priv->nphys == 0) 218 if (priv->nphys == 0)
219 return -ENODEV; 219 return -ENODEV;
220 220
221 priv->phys = devm_kzalloc(dev, priv->nphys * sizeof(*priv->phys), 221 priv->phys = devm_kcalloc(dev, priv->nphys, sizeof(*priv->phys),
222 GFP_KERNEL); 222 GFP_KERNEL);
223 if (!priv->phys) 223 if (!priv->phys)
224 return -ENOMEM; 224 return -ENOMEM;
diff --git a/drivers/phy/phy-berlin-usb.c b/drivers/phy/phy-berlin-usb.c
index c8a8d53a6ece..c6fc95b53083 100644
--- a/drivers/phy/phy-berlin-usb.c
+++ b/drivers/phy/phy-berlin-usb.c
@@ -103,9 +103,6 @@
103#define MODE_TEST_EN BIT(11) 103#define MODE_TEST_EN BIT(11)
104#define ANA_TEST_DC_CTRL(x) ((x) << 12) 104#define ANA_TEST_DC_CTRL(x) ((x) << 12)
105 105
106#define to_phy_berlin_usb_priv(p) \
107 container_of((p), struct phy_berlin_usb_priv, phy)
108
109static const u32 phy_berlin_pll_dividers[] = { 106static const u32 phy_berlin_pll_dividers[] = {
110 /* Berlin 2 */ 107 /* Berlin 2 */
111 CLK_REF_DIV(0xc) | FEEDBACK_CLK_DIV(0x54), 108 CLK_REF_DIV(0xc) | FEEDBACK_CLK_DIV(0x54),
@@ -115,14 +112,13 @@ static const u32 phy_berlin_pll_dividers[] = {
115 112
116struct phy_berlin_usb_priv { 113struct phy_berlin_usb_priv {
117 void __iomem *base; 114 void __iomem *base;
118 struct phy *phy;
119 struct reset_control *rst_ctrl; 115 struct reset_control *rst_ctrl;
120 u32 pll_divider; 116 u32 pll_divider;
121}; 117};
122 118
123static int phy_berlin_usb_power_on(struct phy *phy) 119static int phy_berlin_usb_power_on(struct phy *phy)
124{ 120{
125 struct phy_berlin_usb_priv *priv = dev_get_drvdata(phy->dev.parent); 121 struct phy_berlin_usb_priv *priv = phy_get_drvdata(phy);
126 122
127 reset_control_reset(priv->rst_ctrl); 123 reset_control_reset(priv->rst_ctrl);
128 124
@@ -175,6 +171,7 @@ static int phy_berlin_usb_probe(struct platform_device *pdev)
175 of_match_device(phy_berlin_sata_of_match, &pdev->dev); 171 of_match_device(phy_berlin_sata_of_match, &pdev->dev);
176 struct phy_berlin_usb_priv *priv; 172 struct phy_berlin_usb_priv *priv;
177 struct resource *res; 173 struct resource *res;
174 struct phy *phy;
178 struct phy_provider *phy_provider; 175 struct phy_provider *phy_provider;
179 176
180 priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); 177 priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
@@ -192,20 +189,18 @@ static int phy_berlin_usb_probe(struct platform_device *pdev)
192 189
193 priv->pll_divider = *((u32 *)match->data); 190 priv->pll_divider = *((u32 *)match->data);
194 191
195 priv->phy = devm_phy_create(&pdev->dev, NULL, &phy_berlin_usb_ops); 192 phy = devm_phy_create(&pdev->dev, NULL, &phy_berlin_usb_ops);
196 if (IS_ERR(priv->phy)) { 193 if (IS_ERR(phy)) {
197 dev_err(&pdev->dev, "failed to create PHY\n"); 194 dev_err(&pdev->dev, "failed to create PHY\n");
198 return PTR_ERR(priv->phy); 195 return PTR_ERR(phy);
199 } 196 }
200 197
201 platform_set_drvdata(pdev, priv); 198 platform_set_drvdata(pdev, priv);
199 phy_set_drvdata(phy, priv);
202 200
203 phy_provider = 201 phy_provider =
204 devm_of_phy_provider_register(&pdev->dev, of_phy_simple_xlate); 202 devm_of_phy_provider_register(&pdev->dev, of_phy_simple_xlate);
205 if (IS_ERR(phy_provider)) 203 return PTR_ERR_OR_ZERO(phy_provider);
206 return PTR_ERR(phy_provider);
207
208 return 0;
209} 204}
210 205
211static struct platform_driver phy_berlin_usb_driver = { 206static struct platform_driver phy_berlin_usb_driver = {
diff --git a/drivers/phy/phy-dm816x-usb.c b/drivers/phy/phy-dm816x-usb.c
new file mode 100644
index 000000000000..7b42555ddd51
--- /dev/null
+++ b/drivers/phy/phy-dm816x-usb.c
@@ -0,0 +1,290 @@
1/*
2 * This program is free software; you can redistribute it and/or
3