usb: rockchip: fix command failed on host side due to missing data
authorAlberto Panizzo <alberto@amarulasolutions.com>
Thu, 12 Jul 2018 11:05:41 +0000 (13:05 +0200)
committerMarek Vasut <marex@denx.de>
Wed, 8 Aug 2018 20:22:07 +0000 (22:22 +0200)
commitcad66e324d31e14d1f9eb19b52c4fe81bdad6951
treeff6b0035fffcf47d5a7eacfbec19b7202c51fe4a
parentc194bdf226030e45bcb2db3dcbb2d72e5052820a
usb: rockchip: fix command failed on host side due to missing data

Two consecutive rockusb_tx_write without waiting for request complete
do results in transfer reset of first request and thus no or incomplete
data transfer. This because rockusb_tx_write do use just one USB request
to keep serialization.

So calls like:
rockusb_tx_write_str(emmc_id);
rockusb_tx_write_csw(cbw->tag, cbw->data_transfer_length, CSW_GOOD);

was succeeding only when DEBUG was defined because the time spent
printing debug info was enough for transfer to complete.

This patch fixes the issue adding a simple request complete handler
called rockusb_tx_write_csw to be set as complete handler of in_req
when sending back simple payload + CSW replies to commands.

This new handler will always send CSW_GOOD replies because in case
of error the command callback itself must send back an error CSW as
unique reply to command.

This patch fixes execution of:
$ rkdeveloptool rfi
when DEBUG is not defined.

Signed-off-by: Alberto Panizzo <alberto@amarulasolutions.com>
drivers/usb/gadget/f_rockusb.c