staging: ft1000: return values corrected in scram_start_dwnld
authorKelley Nielsen <kelleynnn@gmail.com>
Tue, 29 Oct 2013 23:06:36 +0000 (16:06 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 30 Oct 2013 00:11:36 +0000 (17:11 -0700)
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 <kelleynnn@gmail.com>
Suggested-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/ft1000/ft1000-usb/ft1000_download.c

index 72f3cfc95aa1adc3ecaa77422160d427b58e585b..68ded17c0f5c7f9302613d37ed48238f9f54422b 100644 (file)
@@ -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;