diff options
| author | Kukjin Kim <kgene.kim@samsung.com> | 2014-05-30 13:36:49 -0400 |
|---|---|---|
| committer | Kukjin Kim <kgene.kim@samsung.com> | 2014-05-30 13:36:49 -0400 |
| commit | fced6dee29f6fb143fe16ea90331176ff77e6120 (patch) | |
| tree | 5b6e57e7a757adc2a6518ce291a4d2914397b917 /drivers/usb/phy | |
| parent | bfed1074f213051e94648bfad0d0611a16d81366 (diff) | |
| parent | be1f7c8d7e2bc8b8c76846aa6f276e8d2ef8975a (diff) | |
Merge branch 'v3.16-next/cleanup-samsung' into v3.16-next/platform-exynos
Diffstat (limited to 'drivers/usb/phy')
| -rw-r--r-- | drivers/usb/phy/phy-am335x-control.c | 9 | ||||
| -rw-r--r-- | drivers/usb/phy/phy.c | 3 |
2 files changed, 12 insertions, 0 deletions
diff --git a/drivers/usb/phy/phy-am335x-control.c b/drivers/usb/phy/phy-am335x-control.c index d75196ad5f2f..35b6083b7999 100644 --- a/drivers/usb/phy/phy-am335x-control.c +++ b/drivers/usb/phy/phy-am335x-control.c | |||
| @@ -3,6 +3,7 @@ | |||
| 3 | #include <linux/err.h> | 3 | #include <linux/err.h> |
| 4 | #include <linux/of.h> | 4 | #include <linux/of.h> |
| 5 | #include <linux/io.h> | 5 | #include <linux/io.h> |
| 6 | #include <linux/delay.h> | ||
| 6 | #include "am35x-phy-control.h" | 7 | #include "am35x-phy-control.h" |
| 7 | 8 | ||
| 8 | struct am335x_control_usb { | 9 | struct am335x_control_usb { |
| @@ -86,6 +87,14 @@ static void am335x_phy_power(struct phy_control *phy_ctrl, u32 id, bool on) | |||
| 86 | } | 87 | } |
| 87 | 88 | ||
| 88 | writel(val, usb_ctrl->phy_reg + reg); | 89 | writel(val, usb_ctrl->phy_reg + reg); |
| 90 | |||
| 91 | /* | ||
| 92 | * Give the PHY ~1ms to complete the power up operation. | ||
| 93 | * Tests have shown unstable behaviour if other USB PHY related | ||
| 94 | * registers are written too shortly after such a transition. | ||
| 95 | */ | ||
| 96 | if (on) | ||
| 97 | mdelay(1); | ||
| 89 | } | 98 | } |
| 90 | 99 | ||
| 91 | static const struct phy_control ctrl_am335x = { | 100 | static const struct phy_control ctrl_am335x = { |
diff --git a/drivers/usb/phy/phy.c b/drivers/usb/phy/phy.c index 8afa813d690b..36b6bce33b20 100644 --- a/drivers/usb/phy/phy.c +++ b/drivers/usb/phy/phy.c | |||
| @@ -132,6 +132,9 @@ struct usb_phy *usb_get_phy(enum usb_phy_type type) | |||
| 132 | if (IS_ERR(phy) || !try_module_get(phy->dev->driver->owner)) { | 132 | if (IS_ERR(phy) || !try_module_get(phy->dev->driver->owner)) { |
| 133 | pr_debug("PHY: unable to find transceiver of type %s\n", | 133 | pr_debug("PHY: unable to find transceiver of type %s\n", |
| 134 | usb_phy_type_string(type)); | 134 | usb_phy_type_string(type)); |
| 135 | if (!IS_ERR(phy)) | ||
| 136 | phy = ERR_PTR(-ENODEV); | ||
| 137 | |||
| 135 | goto err0; | 138 | goto err0; |
| 136 | } | 139 | } |
| 137 | 140 | ||
