flash/nor/psoc6: remove setting of xPSR.T bit from sromalgo_prepare()
[fw/openocd] / src / flash / nor / psoc6.c
index a8f8d3f0856485fd20b8560c6d382aff2bad7cab..931404e3eab5eac75dcd4c3cef0c653383bc0977 100644 (file)
@@ -151,12 +151,6 @@ static int sromalgo_prepare(struct target *target)
        if (hr != ERROR_OK)
                return hr;
 
-       /* Restore THUMB bit in xPSR register */
-       const struct armv7m_common *cm = target_to_armv7m(target);
-       hr = cm->store_core_reg_u32(target, ARMV7M_xPSR, 0x01000000);
-       if (hr != ERROR_OK)
-               return hr;
-
        /* Allocate Working Area for Stack and Flash algorithm */
        hr = target_alloc_working_area(target, RAM_STACK_WA_SIZE, &g_stack_area);
        if (hr != ERROR_OK)
@@ -325,7 +319,7 @@ static int ipc_acquire(struct target *target, char ipc_id)
  * @brief Invokes SROM API functions which are responsible for Flash operations
  *
  * @param target current target
- * @param req_and_params requect id of the function to invoke
+ * @param req_and_params request id of the function to invoke
  * @param working_area address of memory buffer in target's memory space for SROM API parameters
  * @param data_out pointer to variable which will be populated with execution status
  * @return ERROR_OK in case of success, ERROR_XXX code otherwise
@@ -378,7 +372,7 @@ static int call_sromapi(struct target *target,
 
        bool is_success = (*data_out & SROMAPI_STATUS_MSK) == SROMAPI_STAT_SUCCESS;
        if (!is_success) {
-               LOG_ERROR("SROM API execution failed. Status: 0x%08X", (uint32_t)*data_out);
+               LOG_ERROR("SROM API execution failed. Status: 0x%08" PRIX32, *data_out);
                return ERROR_TARGET_FAILURE;
        }
 
@@ -450,7 +444,7 @@ static int psoc6_protect_check(struct flash_bank *bank)
                        break;
        }
 
-       for (int i = 0; i < bank->num_sectors; i++)
+       for (unsigned int i = 0; i < bank->num_sectors; i++)
                bank->sectors[i].is_protected = is_protected;
 
        return ERROR_OK;
@@ -460,7 +454,8 @@ static int psoc6_protect_check(struct flash_bank *bank)
  * @brief Dummy function, Life Cycle transition is not currently supported
  * @return ERROR_OK always
  *************************************************************************************************/
-static int psoc6_protect(struct flash_bank *bank, int set, int first, int last)
+static int psoc6_protect(struct flash_bank *bank, int set, unsigned int first,
+               unsigned int last)
 {
        (void)bank;
        (void)set;
@@ -474,7 +469,7 @@ static int psoc6_protect(struct flash_bank *bank, int set, int first, int last)
 /** ***********************************************************************************************
  * @brief Translates Protection status to string
  * @param protection protection value
- * @return pointer to const string describintg protection status
+ * @return pointer to const string describing protection status
  *************************************************************************************************/
 static const char *protection_to_str(uint8_t protection)
 {
@@ -512,9 +507,9 @@ static int psoc6_get_info(struct flash_bank *bank, char *buf, int buf_size)
                return hr;
 
        snprintf(buf, buf_size,
-               "PSoC6 Silicon ID: 0x%08X\n"
+               "PSoC6 Silicon ID: 0x%08" PRIX32 "\n"
                "Protection: %s\n"
-               "Main Flash size: %d kB\n"
+               "Main Flash size: %" PRIu32 " kB\n"
                "Work Flash size: 32 kB\n",
                psoc6_info->silicon_id,
                protection_to_str(psoc6_info->protection),
@@ -573,7 +568,7 @@ static int psoc6_probe(struct flash_bank *bank)
 
        int hr = ERROR_OK;
 
-       /* Retrieve data from SPCIF_GEOMATRY */
+       /* Retrieve data from SPCIF_GEOMETRY */
        uint32_t geom;
        target_read_u32(target, PSOC6_SPCIF_GEOMETRY, &geom);
        uint32_t row_sz_lg2 = (geom & 0xF0) >> 4;
@@ -584,10 +579,8 @@ static int psoc6_probe(struct flash_bank *bank)
        /* Calculate size of Main Flash*/
        uint32_t flash_sz_bytes = bank_cnt * row_cnt * row_sz;
 
-       if (bank->sectors) {
-               free(bank->sectors);
-               bank->sectors = NULL;
-       }
+       free(bank->sectors);
+       bank->sectors = NULL;
 
        size_t bank_size = 0;
 
@@ -609,7 +602,7 @@ static int psoc6_probe(struct flash_bank *bank)
                return ERROR_FLASH_BANK_INVALID;
        }
 
-       size_t num_sectors = bank_size / row_sz;
+       unsigned int num_sectors = bank_size / row_sz;
        bank->size = bank_size;
        bank->chip_width = 4;
        bank->bus_width = 4;
@@ -618,7 +611,7 @@ static int psoc6_probe(struct flash_bank *bank)
 
        bank->num_sectors = num_sectors;
        bank->sectors = calloc(num_sectors, sizeof(struct flash_sector));
-       for (size_t i = 0; i < num_sectors; i++) {
+       for (unsigned int i = 0; i < num_sectors; i++) {
                bank->sectors[i].size = row_sz;
                bank->sectors[i].offset = i * row_sz;
                bank->sectors[i].is_erased = -1;
@@ -661,7 +654,7 @@ static int psoc6_erase_sector(struct flash_bank *bank, struct working_area *wa,
 {
        struct target *target = bank->target;
 
-       LOG_DEBUG("Erasing SECTOR @%08X", addr);
+       LOG_DEBUG("Erasing SECTOR @%08" PRIX32, addr);
 
        int hr = target_write_u32(target, wa->address, SROMAPI_ERASESECTOR_REQ);
        if (hr != ERROR_OK)
@@ -674,7 +667,7 @@ static int psoc6_erase_sector(struct flash_bank *bank, struct working_area *wa,
        uint32_t data_out;
        hr = call_sromapi(target, SROMAPI_ERASESECTOR_REQ, wa->address, &data_out);
        if (hr != ERROR_OK)
-               LOG_ERROR("SECTOR @%08X not erased!", addr);
+               LOG_ERROR("SECTOR @%08" PRIX32 " not erased!", addr);
 
        return hr;
 }
@@ -690,7 +683,7 @@ static int psoc6_erase_row(struct flash_bank *bank, struct working_area *wa, uin
 {
        struct target *target = bank->target;
 
-       LOG_DEBUG("Erasing ROW @%08X", addr);
+       LOG_DEBUG("Erasing ROW @%08" PRIX32, addr);
 
        int hr = target_write_u32(target, wa->address, SROMAPI_ERASEROW_REQ);
        if (hr != ERROR_OK)
@@ -703,7 +696,7 @@ static int psoc6_erase_row(struct flash_bank *bank, struct working_area *wa, uin
        uint32_t data_out;
        hr = call_sromapi(target, SROMAPI_ERASEROW_REQ, wa->address, &data_out);
        if (hr != ERROR_OK)
-               LOG_ERROR("ROW @%08X not erased!", addr);
+               LOG_ERROR("ROW @%08" PRIX32 " not erased!", addr);
 
        return hr;
 }
@@ -717,7 +710,8 @@ static int psoc6_erase_row(struct flash_bank *bank, struct working_area *wa, uin
  * @param last last sector to erase
  * @return ERROR_OK in case of success, ERROR_XXX code otherwise
  *************************************************************************************************/
-static int psoc6_erase(struct flash_bank *bank, int first, int last)
+static int psoc6_erase(struct flash_bank *bank, unsigned int first,
+               unsigned int last)
 {
        struct target *target = bank->target;
        struct psoc6_target_info *psoc6_info = bank->driver_priv;
@@ -740,7 +734,7 @@ static int psoc6_erase(struct flash_bank *bank, int first, int last)
                goto exit;
 
        /* Number of rows in single sector */
-       const int rows_in_sector = sector_size / psoc6_info->row_sz;
+       const unsigned int rows_in_sector = sector_size / psoc6_info->row_sz;
 
        while (last >= first) {
                /* Erase Sector if we are on sector boundary and erase size covers whole sector */
@@ -750,7 +744,7 @@ static int psoc6_erase(struct flash_bank *bank, int first, int last)
                        if (hr != ERROR_OK)
                                goto exit_free_wa;
 
-                       for (int i = first; i < first + rows_in_sector; i++)
+                       for (unsigned int i = first; i < first + rows_in_sector; i++)
                                bank->sectors[i].is_erased = 1;
 
                        first += rows_in_sector;
@@ -792,7 +786,7 @@ static int psoc6_program_row(struct flash_bank *bank,
        uint32_t data_out;
        int hr = ERROR_OK;
 
-       LOG_DEBUG("Programming ROW @%08X", addr);
+       LOG_DEBUG("Programming ROW @%08" PRIX32, addr);
 
        hr = target_alloc_working_area(target, psoc6_info->row_sz + 32, &wa);
        if (hr != ERROR_OK)
@@ -833,7 +827,7 @@ exit:
  * @brief Performs Program operation
  * @param bank current flash bank
  * @param buffer pointer to the buffer with data
- * @param offset starting offset in falsh bank
+ * @param offset starting offset in flash bank
  * @param count number of bytes in buffer
  * @return ERROR_OK in case of success, ERROR_XXX code otherwise
  *************************************************************************************************/
@@ -863,7 +857,7 @@ static int psoc6_program(struct flash_bank *bank,
 
                hr = psoc6_program_row(bank, aligned_addr, page_buf, is_sflash);
                if (hr != ERROR_OK) {
-                       LOG_ERROR("Failed to program Flash at address 0x%08X", aligned_addr);
+                       LOG_ERROR("Failed to program Flash at address 0x%08" PRIX32, aligned_addr);
                        goto exit;
                }
 
@@ -908,7 +902,7 @@ COMMAND_HANDLER(psoc6_handle_mass_erase_command)
  * @param target current target
  * @return ERROR_OK in case of success, ERROR_XXX code otherwise
  *************************************************************************************************/
-int handle_reset_halt(struct target *target)
+static int handle_reset_halt(struct target *target)
 {
        int hr;
        uint32_t reset_addr;
@@ -954,16 +948,16 @@ int handle_reset_halt(struct target *target)
 
        const struct armv7m_common *cm = target_to_armv7m(target);
 
-       /* PSoC6 reboots immediatelly after issuing SYSRESETREQ / VECTRESET
+       /* PSoC6 reboots immediately after issuing SYSRESETREQ / VECTRESET
         * this disables SWD/JTAG pins momentarily and may break communication
         * Ignoring return value of mem_ap_write_atomic_u32 seems to be ok here */
        if (is_cm0) {
                /* Reset the CM0 by asserting SYSRESETREQ. This will also reset CM4 */
-               LOG_INFO("psoc6.cm0: bkpt @0x%08X, issuing SYSRESETREQ", reset_addr);
+               LOG_INFO("psoc6.cm0: bkpt @0x%08" PRIX32 ", issuing SYSRESETREQ", reset_addr);
                mem_ap_write_atomic_u32(cm->debug_ap, NVIC_AIRCR,
                        AIRCR_VECTKEY | AIRCR_SYSRESETREQ);
        } else {
-               LOG_INFO("psoc6.cm4: bkpt @0x%08X, issuing VECTRESET", reset_addr);
+               LOG_INFO("psoc6.cm4: bkpt @0x%08" PRIX32 ", issuing VECTRESET", reset_addr);
                mem_ap_write_atomic_u32(cm->debug_ap, NVIC_AIRCR,
                        AIRCR_VECTKEY | AIRCR_VECTRESET);
        }