From: Peter Chen Date: Wed, 14 Aug 2013 09:44:15 +0000 (+0300) Subject: usb: chipidea: udc: .pullup is valid only when vbus is there X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=4a64783b66bbeed06a1f10ab56a1dd401dd5bfba;p=linux-beck.git usb: chipidea: udc: .pullup is valid only when vbus is there For chipidea, the IP must know vbus before the controller begins to run. So the .pullup should only be called when the vbus is there. Tested-by: Marek Vasut Signed-off-by: Peter Chen Signed-off-by: Alexander Shishkin Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c index 90c3572bd1b0..6b4c2f2eb946 100644 --- a/drivers/usb/chipidea/udc.c +++ b/drivers/usb/chipidea/udc.c @@ -1511,6 +1511,9 @@ static int ci_udc_pullup(struct usb_gadget *_gadget, int is_on) { struct ci_hdrc *ci = container_of(_gadget, struct ci_hdrc, gadget); + if (!ci->vbus_active) + return -EOPNOTSUPP; + if (is_on) hw_write(ci, OP_USBCMD, USBCMD_RS, USBCMD_RS); else