Commit b1bdd4d3 authored by Kelley Nielsen's avatar Kelley Nielsen Committed by Greg Kroah-Hartman

staging: ft1000: return values corrected in scram_start_dwnld

The ft1000 usb driver ignores expected Linux error codes, and uses two
values defined in ft1000_usb.h: STATUS_SUCCESS 0, and STATUS_FAILURE
0x1001; and sometimes -1. This patch changes the return values of the
function scram_start_dwnld to match the status of the handshake returned
by its helper functions, get_handshake and get_handshake_usb. If the
handshake fails, -ENETRESET is returned instead of the inappropriate
STATUS_FAILURE. Also, a new test has been added to differentiate failure
due to timeout from failure due to net reset (the default). -ETIMEDOUT
is returned in this case. Finally, 0 is returned on success instead of
STATUS_SUCCESS.
Signed-off-by: default avatarKelley Nielsen <kelleynnn@gmail.com>
Suggested-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 43fc69b1
...@@ -554,7 +554,7 @@ static int write_blk_fifo(struct ft1000_usb *ft1000dev, u16 **pUsFile, ...@@ -554,7 +554,7 @@ static int write_blk_fifo(struct ft1000_usb *ft1000dev, u16 **pUsFile,
static int scram_start_dwnld(struct ft1000_usb *ft1000dev, u16 *hshake, static int scram_start_dwnld(struct ft1000_usb *ft1000dev, u16 *hshake,
u32 *state) u32 *state)
{ {
int status = STATUS_SUCCESS; int status = 0;
DEBUG("FT1000:STATE_START_DWNLD\n"); DEBUG("FT1000:STATE_START_DWNLD\n");
if (ft1000dev->usbboot) if (ft1000dev->usbboot)
...@@ -564,9 +564,11 @@ static int scram_start_dwnld(struct ft1000_usb *ft1000dev, u16 *hshake, ...@@ -564,9 +564,11 @@ static int scram_start_dwnld(struct ft1000_usb *ft1000dev, u16 *hshake,
if (*hshake == HANDSHAKE_DSP_BL_READY) { if (*hshake == HANDSHAKE_DSP_BL_READY) {
DEBUG("scram_dnldr: handshake is HANDSHAKE_DSP_BL_READY, call put_handshake(HANDSHAKE_DRIVER_READY)\n"); DEBUG("scram_dnldr: handshake is HANDSHAKE_DSP_BL_READY, call put_handshake(HANDSHAKE_DRIVER_READY)\n");
put_handshake(ft1000dev, HANDSHAKE_DRIVER_READY); put_handshake(ft1000dev, HANDSHAKE_DRIVER_READY);
} else if (*hshake == HANDSHAKE_TIMEOUT_VALUE) {
status = -ETIMEDOUT;
} else { } else {
DEBUG("FT1000:download:Download error: Handshake failed\n"); DEBUG("FT1000:download:Download error: Handshake failed\n");
status = STATUS_FAILURE; status = -ENETRESET;
} }
*state = STATE_BOOT_DWNLD; *state = STATE_BOOT_DWNLD;
return status; return status;
......
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