usb_master: Return when no async transfers is to be used

The asynchronous transfer loop is only concerned with transfers of endpoint
sized packets. When there is less than a packet worth of data to transfer,
return immediately.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
usb_master: Update address range on successful bulk read

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
usb_master: Return an error on out of range reads

When we are requested to read more data than what was specified in
set_address(), return immediately with an error.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
usb_master: Print the address range which is being read

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
usb_master: Handle leftover transfers on bulk read

Handle readn() requests for which the last transfer is not a multiple of
the endpoint size. The last transfer usually requires buffering, and is
handled separately from the other transfers.

This change allows the qiprog's test_alignment to complete succesfully.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>