diff options
author | 2019-03-19 13:12:18 +0000 | |
---|---|---|
committer | 2019-03-19 13:12:18 +0000 | |
commit | c9e48084c88cf901ad0d99a889f2628a5622d90b (patch) | |
tree | e95ef2305fa14e0c6e218a6aba8de8df4a0b5798 /drivers/usb/core/phy.c | |
parent | regulator: axp20x: Use rdev_get_id at appropriate places (diff) | |
parent | Linux 5.1-rc1 (diff) | |
download | wireguard-linux-c9e48084c88cf901ad0d99a889f2628a5622d90b.tar.xz wireguard-linux-c9e48084c88cf901ad0d99a889f2628a5622d90b.zip |
Merge tag 'v5.1-rc1' into regulator-5.2
Linux 5.1-rc1
Diffstat (limited to 'drivers/usb/core/phy.c')
-rw-r--r-- | drivers/usb/core/phy.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/usb/core/phy.c b/drivers/usb/core/phy.c index 38b2c776c4b4..7580493b867a 100644 --- a/drivers/usb/core/phy.c +++ b/drivers/usb/core/phy.c @@ -123,6 +123,34 @@ int usb_phy_roothub_exit(struct usb_phy_roothub *phy_roothub) } EXPORT_SYMBOL_GPL(usb_phy_roothub_exit); +int usb_phy_roothub_set_mode(struct usb_phy_roothub *phy_roothub, + enum phy_mode mode) +{ + struct usb_phy_roothub *roothub_entry; + struct list_head *head; + int err; + + if (!phy_roothub) + return 0; + + head = &phy_roothub->list; + + list_for_each_entry(roothub_entry, head, list) { + err = phy_set_mode(roothub_entry->phy, mode); + if (err) + goto err_out; + } + + return 0; + +err_out: + list_for_each_entry_continue_reverse(roothub_entry, head, list) + phy_power_off(roothub_entry->phy); + + return err; +} +EXPORT_SYMBOL_GPL(usb_phy_roothub_set_mode); + int usb_phy_roothub_power_on(struct usb_phy_roothub *phy_roothub) { struct usb_phy_roothub *roothub_entry; |