[U-Boot] USB mass storage gadget patch

victor
2012-11-05T02:30:14Z

Lukasz,

>> 2) Now I can use the patch and process till SCSI MODE_SELECT_6
>> command, and then problem is encountered. Basically the SCSI
>> MODE_SELECT_6 is sent to EP1 Out, then data is sent to EP1 out, and
>> the fsg_main_thread only sees the data. I change the code to force the
>> CSW.
>
>Can you explain further problems which you encounter?
>
>I'm using this UMS version internally (the version w hich you
pointed out with the link) for debugging our targets.
>
>I'm using Debian Linux as a host with standard tools like dd and
parted/fdisk. I don't have any problems with it (even with debug messages
enabled).
>
>

In cmd_usb_mass_storage.c, do_usb_mass_storage(), the while(1) loop, the
usb_gadget_handle_interrupts() will handle the interrupts that is triggered,
and received data from EP1 out, and bh->state is set to BUF_STATE_FULL in
bulk_out_complete(). And then fsg_main_thread() in file_storage.c is called.
And then get_next_command() is called. And then start_transfer() is called.
In that function, the bh->state will be set to BUF_STATE_BUSY. Because of
this change, for two consecutive data from EP1 out, one data is missed.

I can send the full source code to you if it is helpful. Thanks.