diff options
| -rw-r--r-- | drivers/usb/chipidea/udc.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c index 519ead2443c5..b501346484ae 100644 --- a/drivers/usb/chipidea/udc.c +++ b/drivers/usb/chipidea/udc.c | |||
| @@ -1678,8 +1678,11 @@ static int udc_start(struct ci13xxx *ci) | |||
| 1678 | 1678 | ||
| 1679 | ci->gadget.ep0 = &ci->ep0in->ep; | 1679 | ci->gadget.ep0 = &ci->ep0in->ep; |
| 1680 | 1680 | ||
| 1681 | if (ci->global_phy) | 1681 | if (ci->global_phy) { |
| 1682 | ci->transceiver = usb_get_phy(USB_PHY_TYPE_USB2); | 1682 | ci->transceiver = usb_get_phy(USB_PHY_TYPE_USB2); |
| 1683 | if (IS_ERR(ci->transceiver)) | ||
| 1684 | ci->transceiver = NULL; | ||
| 1685 | } | ||
| 1683 | 1686 | ||
| 1684 | if (ci->platdata->flags & CI13XXX_REQUIRE_TRANSCEIVER) { | 1687 | if (ci->platdata->flags & CI13XXX_REQUIRE_TRANSCEIVER) { |
| 1685 | if (ci->transceiver == NULL) { | 1688 | if (ci->transceiver == NULL) { |
| @@ -1694,7 +1697,7 @@ static int udc_start(struct ci13xxx *ci) | |||
| 1694 | goto put_transceiver; | 1697 | goto put_transceiver; |
| 1695 | } | 1698 | } |
| 1696 | 1699 | ||
| 1697 | if (!IS_ERR_OR_NULL(ci->transceiver)) { | 1700 | if (ci->transceiver) { |
| 1698 | retval = otg_set_peripheral(ci->transceiver->otg, | 1701 | retval = otg_set_peripheral(ci->transceiver->otg, |
| 1699 | &ci->gadget); | 1702 | &ci->gadget); |
| 1700 | if (retval) | 1703 | if (retval) |
| @@ -1711,7 +1714,7 @@ static int udc_start(struct ci13xxx *ci) | |||
| 1711 | return retval; | 1714 | return retval; |
| 1712 | 1715 | ||
| 1713 | remove_trans: | 1716 | remove_trans: |
| 1714 | if (!IS_ERR_OR_NULL(ci->transceiver)) { | 1717 | if (ci->transceiver) { |
| 1715 | otg_set_peripheral(ci->transceiver->otg, NULL); | 1718 | otg_set_peripheral(ci->transceiver->otg, NULL); |
| 1716 | if (ci->global_phy) | 1719 | if (ci->global_phy) |
| 1717 | usb_put_phy(ci->transceiver); | 1720 | usb_put_phy(ci->transceiver); |
| @@ -1719,7 +1722,7 @@ remove_trans: | |||
| 1719 | 1722 | ||
| 1720 | dev_err(dev, "error = %i\n", retval); | 1723 | dev_err(dev, "error = %i\n", retval); |
| 1721 | put_transceiver: | 1724 | put_transceiver: |
| 1722 | if (!IS_ERR_OR_NULL(ci->transceiver) && ci->global_phy) | 1725 | if (ci->transceiver && ci->global_phy) |
| 1723 | usb_put_phy(ci->transceiver); | 1726 | usb_put_phy(ci->transceiver); |
| 1724 | destroy_eps: | 1727 | destroy_eps: |
| 1725 | destroy_eps(ci); | 1728 | destroy_eps(ci); |
| @@ -1747,7 +1750,7 @@ static void udc_stop(struct ci13xxx *ci) | |||
| 1747 | dma_pool_destroy(ci->td_pool); | 1750 | dma_pool_destroy(ci->td_pool); |
| 1748 | dma_pool_destroy(ci->qh_pool); | 1751 | dma_pool_destroy(ci->qh_pool); |
| 1749 | 1752 | ||
| 1750 | if (!IS_ERR_OR_NULL(ci->transceiver)) { | 1753 | if (ci->transceiver) { |
| 1751 | otg_set_peripheral(ci->transceiver->otg, NULL); | 1754 | otg_set_peripheral(ci->transceiver->otg, NULL); |
| 1752 | if (ci->global_phy) | 1755 | if (ci->global_phy) |
| 1753 | usb_put_phy(ci->transceiver); | 1756 | usb_put_phy(ci->transceiver); |
