aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>2011-04-21 01:09:58 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2011-04-29 20:24:31 -0400
commit45e13e6e0aa954af2d4779a07262f4c12d6f032f (patch)
tree31067107be638d85102ac5347d69e029473802fe /drivers/usb
parenta0c25c20502e0c4a467f5d7e27b2a599cfe57abe (diff)
usb: renesas_usbhs: modify fifo clear timing
Pipe buffer should be cleaned before using it, but should NOT be cleaned in pipe "prepare" function. Because the pipe might be working in such timing. This patch fixup this issue. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/renesas_usbhs/pipe.c14
1 files changed, 4 insertions, 10 deletions
diff --git a/drivers/usb/renesas_usbhs/pipe.c b/drivers/usb/renesas_usbhs/pipe.c
index b7a9137f599..4852c073e2f 100644
--- a/drivers/usb/renesas_usbhs/pipe.c
+++ b/drivers/usb/renesas_usbhs/pipe.c
@@ -369,15 +369,7 @@ static int usbhsp_fifo_select(struct usbhs_pipe *pipe, int write)
369 369
370int usbhs_fifo_prepare_write(struct usbhs_pipe *pipe) 370int usbhs_fifo_prepare_write(struct usbhs_pipe *pipe)
371{ 371{
372 int ret; 372 return usbhsp_fifo_select(pipe, 1);
373
374 ret = usbhsp_fifo_select(pipe, 1);
375 if (ret < 0)
376 return ret;
377
378 usbhsp_fifo_clear(pipe);
379
380 return ret;
381} 373}
382 374
383int usbhs_fifo_write(struct usbhs_pipe *pipe, u8 *buf, int len) 375int usbhs_fifo_write(struct usbhs_pipe *pipe, u8 *buf, int len)
@@ -392,7 +384,7 @@ int usbhs_fifo_write(struct usbhs_pipe *pipe, u8 *buf, int len)
392 if (ret < 0) 384 if (ret < 0)
393 return ret; 385 return ret;
394 386
395 ret = usbhs_fifo_prepare_write(pipe); 387 ret = usbhsp_fifo_select(pipe, 1);
396 if (ret < 0) 388 if (ret < 0)
397 return ret; 389 return ret;
398 390
@@ -750,6 +742,8 @@ void usbhs_pipe_init(struct usbhs_priv *priv)
750 742
751 usbhsp_flags_init(pipe); 743 usbhsp_flags_init(pipe);
752 pipe->mod_private = NULL; 744 pipe->mod_private = NULL;
745
746 usbhsp_fifo_clear(pipe);
753 } 747 }
754} 748}
755 749