stm32 : change returned value of mass_erase function
authorgcembed <gcembed@gmail.com>
Tue, 1 Jun 2010 11:48:22 +0000 (13:48 +0200)
committerØyvind Harboe <oyvind.harboe@zylin.com>
Thu, 3 Jun 2010 18:40:00 +0000 (20:40 +0200)
Hello,
"stm32x mass_erase" return ERROR_OK even if something goes wrong.
Here is a summary of changes :
* in stm32x_mass_erase : return ERROR_FLASH_OPERATION_FAILED when error
detected in FLASH_SR register;
* in COMMAND_HANDLER(stm32x_handle_mass_erase_command) : return the
returned value of stm32x_mass_erase().

I don't know if there is reason to always return ERROR_OK ?

Gaëtan

src/flash/nor/stm32x.c

index 8a3b83232c1d8806b5b3b8c4436b5a34bef76283..47ed6406074ef997261d79e1d23f8b1207e7d1c5 100644 (file)
@@ -1196,13 +1196,13 @@ static int stm32x_mass_erase(struct flash_bank *bank)
        if (status & FLASH_WRPRTERR)
        {
                LOG_ERROR("stm32x device protected");
-               return ERROR_OK;
+               return ERROR_FLASH_OPERATION_FAILED;
        }
 
        if (status & FLASH_PGERR)
        {
                LOG_ERROR("stm32x device programming failed");
-               return ERROR_OK;
+               return ERROR_FLASH_OPERATION_FAILED;
        }
 
        return ERROR_OK;
@@ -1223,7 +1223,8 @@ COMMAND_HANDLER(stm32x_handle_mass_erase_command)
        if (ERROR_OK != retval)
                return retval;
 
-       if (stm32x_mass_erase(bank) == ERROR_OK)
+       retval = stm32x_mass_erase(bank);
+       if (retval == ERROR_OK)
        {
                /* set all sectors as erased */
                for (i = 0; i < bank->num_sectors; i++)
@@ -1238,7 +1239,7 @@ COMMAND_HANDLER(stm32x_handle_mass_erase_command)
                command_print(CMD_CTX, "stm32x mass erase failed");
        }
 
-       return ERROR_OK;
+       return retval;
 }
 
 static const struct command_registration stm32x_exec_command_handlers[] = {