diff options
| -rw-r--r-- | drivers/usb/chipidea/core.c | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c index 06204b77fc4c..5d8981c5235e 100644 --- a/drivers/usb/chipidea/core.c +++ b/drivers/usb/chipidea/core.c | |||
| @@ -392,18 +392,6 @@ static irqreturn_t ci_irq(int irq, void *data) | |||
| 392 | static int ci_get_platdata(struct device *dev, | 392 | static int ci_get_platdata(struct device *dev, |
| 393 | struct ci_hdrc_platform_data *platdata) | 393 | struct ci_hdrc_platform_data *platdata) |
| 394 | { | 394 | { |
| 395 | /* Get the vbus regulator */ | ||
| 396 | platdata->reg_vbus = devm_regulator_get(dev, "vbus"); | ||
| 397 | if (PTR_ERR(platdata->reg_vbus) == -EPROBE_DEFER) { | ||
| 398 | return -EPROBE_DEFER; | ||
| 399 | } else if (PTR_ERR(platdata->reg_vbus) == -ENODEV) { | ||
| 400 | platdata->reg_vbus = NULL; /* no vbus regualator is needed */ | ||
| 401 | } else if (IS_ERR(platdata->reg_vbus)) { | ||
| 402 | dev_err(dev, "Getting regulator error: %ld\n", | ||
| 403 | PTR_ERR(platdata->reg_vbus)); | ||
| 404 | return PTR_ERR(platdata->reg_vbus); | ||
| 405 | } | ||
| 406 | |||
| 407 | if (!platdata->phy_mode) | 395 | if (!platdata->phy_mode) |
| 408 | platdata->phy_mode = of_usb_get_phy_mode(dev->of_node); | 396 | platdata->phy_mode = of_usb_get_phy_mode(dev->of_node); |
| 409 | 397 | ||
| @@ -413,6 +401,21 @@ static int ci_get_platdata(struct device *dev, | |||
| 413 | if (platdata->dr_mode == USB_DR_MODE_UNKNOWN) | 401 | if (platdata->dr_mode == USB_DR_MODE_UNKNOWN) |
| 414 | platdata->dr_mode = USB_DR_MODE_OTG; | 402 | platdata->dr_mode = USB_DR_MODE_OTG; |
| 415 | 403 | ||
| 404 | if (platdata->dr_mode != USB_DR_MODE_PERIPHERAL) { | ||
| 405 | /* Get the vbus regulator */ | ||
| 406 | platdata->reg_vbus = devm_regulator_get(dev, "vbus"); | ||
| 407 | if (PTR_ERR(platdata->reg_vbus) == -EPROBE_DEFER) { | ||
| 408 | return -EPROBE_DEFER; | ||
| 409 | } else if (PTR_ERR(platdata->reg_vbus) == -ENODEV) { | ||
| 410 | /* no vbus regualator is needed */ | ||
| 411 | platdata->reg_vbus = NULL; | ||
| 412 | } else if (IS_ERR(platdata->reg_vbus)) { | ||
| 413 | dev_err(dev, "Getting regulator error: %ld\n", | ||
| 414 | PTR_ERR(platdata->reg_vbus)); | ||
| 415 | return PTR_ERR(platdata->reg_vbus); | ||
| 416 | } | ||
| 417 | } | ||
| 418 | |||
| 416 | return 0; | 419 | return 0; |
| 417 | } | 420 | } |
| 418 | 421 | ||
