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 519ead2443c..b501346484a 100644 --- a/drivers/usb/chipidea/udc.c +++ b/drivers/usb/chipidea/udc.c @@ -1678,8 +1678,11 @@ static int udc_start(struct ci13xxx *ci)  	ci->gadget.ep0 = &ci->ep0in->ep; -	if (ci->global_phy) +	if (ci->global_phy) {  		ci->transceiver = usb_get_phy(USB_PHY_TYPE_USB2); +		if (IS_ERR(ci->transceiver)) +			ci->transceiver = NULL; +	}  	if (ci->platdata->flags & CI13XXX_REQUIRE_TRANSCEIVER) {  		if (ci->transceiver == NULL) { @@ -1694,7 +1697,7 @@ static int udc_start(struct ci13xxx *ci)  			goto put_transceiver;  	} -	if (!IS_ERR_OR_NULL(ci->transceiver)) { +	if (ci->transceiver) {  		retval = otg_set_peripheral(ci->transceiver->otg,  						&ci->gadget);  		if (retval) @@ -1711,7 +1714,7 @@ static int udc_start(struct ci13xxx *ci)  	return retval;  remove_trans: -	if (!IS_ERR_OR_NULL(ci->transceiver)) { +	if (ci->transceiver) {  		otg_set_peripheral(ci->transceiver->otg, NULL);  		if (ci->global_phy)  			usb_put_phy(ci->transceiver); @@ -1719,7 +1722,7 @@ remove_trans:  	dev_err(dev, "error = %i\n", retval);  put_transceiver: -	if (!IS_ERR_OR_NULL(ci->transceiver) && ci->global_phy) +	if (ci->transceiver && ci->global_phy)  		usb_put_phy(ci->transceiver);  destroy_eps:  	destroy_eps(ci); @@ -1747,7 +1750,7 @@ static void udc_stop(struct ci13xxx *ci)  	dma_pool_destroy(ci->td_pool);  	dma_pool_destroy(ci->qh_pool); -	if (!IS_ERR_OR_NULL(ci->transceiver)) { +	if (ci->transceiver) {  		otg_set_peripheral(ci->transceiver->otg, NULL);  		if (ci->global_phy)  			usb_put_phy(ci->transceiver);  |