[U-Boot] [PATCH] usb: gadget: ci_udc: fix suspend/resume of USB Mass Storage
Fabio Estevam
festevam at gmail.com
Wed Aug 24 00:49:13 CEST 2016
Adding Marek on Cc
On Mon, Aug 22, 2016 at 4:38 PM, John Tobias <john.tobias.ph at gmail.com> wrote:
> When the host machine went to suspend mode and then wake it up, it send
> a USB_REQ_GET_STATUS. The existing case condition below, never
> become true and it causes the host machine to reset the connection. Once,
> it reset you will see an error "Disk Not Ejected Properly".
>
> case SETUP(USB_DIR_IN | USB_RECIP_DEVICE, USB_REQ_GET_STATUS):
>
> By applying this patch, the device could respond to the USB_REQ_GET_STATUS
> command correctly.
> ---
> drivers/usb/gadget/ci_udc.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/usb/gadget/ci_udc.c b/drivers/usb/gadget/ci_udc.c
> index d36bcf6..fdec613 100644
> --- a/drivers/usb/gadget/ci_udc.c
> +++ b/drivers/usb/gadget/ci_udc.c
> @@ -703,8 +703,8 @@ static void handle_setup(void)
> list_del_init(&ci_req->queue);
> ci_ep->req_primed = false;
>
> - switch (SETUP(r.bRequestType, r.bRequest)) {
> - case SETUP(USB_RECIP_ENDPOINT, USB_REQ_CLEAR_FEATURE):
> + switch (r.bRequest) {
> + case USB_REQ_CLEAR_FEATURE:
> _num = r.wIndex & 15;
> _in = !!(r.wIndex & 0x80);
>
> @@ -729,7 +729,7 @@ static void handle_setup(void)
> }
> return;
>
> - case SETUP(USB_RECIP_DEVICE, USB_REQ_SET_ADDRESS):
> + case USB_REQ_SET_ADDRESS:
> /*
> * write address delayed (will take effect
> * after the next IN txn)
> @@ -739,7 +739,7 @@ static void handle_setup(void)
> usb_ep_queue(controller.gadget.ep0, req, 0);
> return;
>
> - case SETUP(USB_DIR_IN | USB_RECIP_DEVICE, USB_REQ_GET_STATUS):
> + case USB_REQ_GET_STATUS:
> req->length = 2;
> buf = (char *)req->buf;
> buf[0] = 1 << USB_DEVICE_SELF_POWERED;
> --
> 2.9.3
>
More information about the U-Boot
mailing list