Commit 72a472d2 authored by Takeyoshi Kikuchi's avatar Takeyoshi Kikuchi Committed by Felipe Balbi

usb: musb: cppi41: fix condition to call cppi41_trans_done().

connect AR9271(USB wifi) to AM335x, and send a flood ping from Mac OSX,
AR9271 is stopped.

on USB bus, the following occurs.

 - OUT transaction is ACKed (NYET).
 - IN transaction is ACKed (512bytes).
 - PING-NAK transaction is continued for about 2 seconds (AR9271 timeout?).

In current imprementation, IN-transaction is not completed because it
checks the empty of TX-FIFO in cppi41_dma_callback().
As a result, communication to AR9271 stops.

This patch modified to check the empty of TX-FIFO only when OUT-transaction.
Signed-off-by: default avatarTakeyoshi Kikuchi <kikuchi@centurysys.co.jp>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 168bdb88
...@@ -250,8 +250,10 @@ static void cppi41_dma_callback(void *private_data) ...@@ -250,8 +250,10 @@ static void cppi41_dma_callback(void *private_data)
transferred < cppi41_channel->packet_sz) transferred < cppi41_channel->packet_sz)
cppi41_channel->prog_len = 0; cppi41_channel->prog_len = 0;
empty = musb_is_tx_fifo_empty(hw_ep); if (cppi41_channel->is_tx)
if (empty) { empty = musb_is_tx_fifo_empty(hw_ep);
if (!cppi41_channel->is_tx || empty) {
cppi41_trans_done(cppi41_channel); cppi41_trans_done(cppi41_channel);
goto out; goto out;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment