From b1bdd4d3ed3b501063d81618be547be0cfe61b0f Mon Sep 17 00:00:00 2001 From: Kelley Nielsen Date: Tue, 29 Oct 2013 16:06:36 -0700 Subject: [PATCH] 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: Kelley Nielsen Suggested-by: Greg Kroah-Hartman Signed-off-by: Greg Kroah-Hartman --- drivers/staging/ft1000/ft1000-usb/ft1000_download.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/staging/ft1000/ft1000-usb/ft1000_download.c b/drivers/staging/ft1000/ft1000-usb/ft1000_download.c index 72f3cfc..68ded17 100644 --- a/drivers/staging/ft1000/ft1000-usb/ft1000_download.c +++ b/drivers/staging/ft1000/ft1000-usb/ft1000_download.c @@ -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, u32 *state) { - int status = STATUS_SUCCESS; + int status = 0; DEBUG("FT1000:STATE_START_DWNLD\n"); if (ft1000dev->usbboot) @@ -564,9 +564,11 @@ static int scram_start_dwnld(struct ft1000_usb *ft1000dev, u16 *hshake, if (*hshake == HANDSHAKE_DSP_BL_READY) { DEBUG("scram_dnldr: handshake is HANDSHAKE_DSP_BL_READY, call put_handshake(HANDSHAKE_DRIVER_READY)\n"); put_handshake(ft1000dev, HANDSHAKE_DRIVER_READY); + } else if (*hshake == HANDSHAKE_TIMEOUT_VALUE) { + status = -ETIMEDOUT; } else { DEBUG("FT1000:download:Download error: Handshake failed\n"); - status = STATUS_FAILURE; + status = -ENETRESET; } *state = STATE_BOOT_DWNLD; return status; -- 2.7.4