tap post reset event added. Allows omap3530 to send 100 runtest idle tickle's after...
[fw/openocd] / src / flash / str9xpec.c
index c614d7697290a481298e5816570f3dda138e5859..33471e6b3a67c4d054701833d8d173f7e1636920 100644 (file)
@@ -101,7 +101,7 @@ static int str9xpec_register_commands(struct command_context_s *cmd_ctx)
 
 int str9xpec_set_instr(jtag_tap_t *tap, uint32_t new_instr, tap_state_t end_state)
 {
-       if ( tap == NULL ){
+       if (tap == NULL) {
                return ERROR_TARGET_INVALID;
        }
 
@@ -318,14 +318,14 @@ static int str9xpec_flash_bank_command(struct command_context_s *cmd_ctx, char *
        str9xpec_info = malloc(sizeof(str9xpec_flash_controller_t));
        bank->driver_priv = str9xpec_info;
 
-       /* find out jtag position of flash controller
-        * it is always after the arm966 core */
-
+       /* REVISIT verify that the jtag position of flash controller is
+        * right after *THIS* core, which must be a STR9xx core ...
+        */
        armv4_5 = bank->target->arch_info;
        arm7_9 = armv4_5->arch_info;
        jtag_info = &arm7_9->jtag_info;
 
-       str9xpec_info->tap = jtag_tap_by_position( jtag_info->tap->abs_chain_position - 1);
+       str9xpec_info->tap = bank->target->tap;
        str9xpec_info->isc_enable = 0;
 
        str9xpec_build_block_list(bank);
@@ -349,7 +349,7 @@ static int str9xpec_blank_check(struct flash_bank_s *bank, int first, int last)
        tap = str9xpec_info->tap;
 
        if (!str9xpec_info->isc_enable) {
-               str9xpec_isc_enable( bank );
+               str9xpec_isc_enable(bank);
        }
 
        if (!str9xpec_info->isc_enable) {
@@ -438,7 +438,7 @@ static int str9xpec_erase_area(struct flash_bank_s *bank, int first, int last)
        tap = str9xpec_info->tap;
 
        if (!str9xpec_info->isc_enable) {
-               str9xpec_isc_enable( bank );
+               str9xpec_isc_enable(bank);
        }
 
        if (!str9xpec_info->isc_enable) {
@@ -518,7 +518,7 @@ static int str9xpec_lock_device(struct flash_bank_s *bank)
        tap = str9xpec_info->tap;
 
        if (!str9xpec_info->isc_enable) {
-               str9xpec_isc_enable( bank );
+               str9xpec_isc_enable(bank);
        }
 
        if (!str9xpec_info->isc_enable) {
@@ -542,7 +542,7 @@ static int str9xpec_lock_device(struct flash_bank_s *bank)
                jtag_add_dr_scan(1, &field, jtag_get_end_state());
                jtag_execute_queue();
 
-       } while(!(status & ISC_STATUS_BUSY));
+       } while (!(status & ISC_STATUS_BUSY));
 
        str9xpec_isc_disable(bank);
 
@@ -575,7 +575,7 @@ static int str9xpec_protect(struct flash_bank_s *bank, int set, int first, int l
        /* last bank: 0xFF signals a full device protect */
        if (last == 0xFF)
        {
-               if ( set )
+               if (set)
                {
                        status = str9xpec_lock_device(bank);
                }
@@ -589,7 +589,7 @@ static int str9xpec_protect(struct flash_bank_s *bank, int set, int first, int l
        {
                for (i = first; i <= last; i++)
                {
-                       if ( set )
+                       if (set)
                                buf_set_u32(str9xpec_info->options, str9xpec_info->sector_bits[i], 1, 1);
                        else
                                buf_set_u32(str9xpec_info->options, str9xpec_info->sector_bits[i], 1, 0);
@@ -671,11 +671,11 @@ static int str9xpec_write(struct flash_bank_s *bank, uint8_t *buffer, uint32_t o
                                check_address = sec_end;
                }
 
-               if ((offset >= sec_start) && (offset < sec_end)){
+               if ((offset >= sec_start) && (offset < sec_end)) {
                        first_sector = i;
                }
 
-               if ((offset + count >= sec_start) && (offset + count < sec_end)){
+               if ((offset + count >= sec_start) && (offset + count < sec_end)) {
                        last_sector = i;
                }
        }
@@ -722,7 +722,7 @@ static int str9xpec_write(struct flash_bank_s *bank, uint8_t *buffer, uint32_t o
 
                                status = buf_get_u32(scanbuf, 0, 8);
 
-                       } while(!(status & ISC_STATUS_BUSY));
+                       } while (!(status & ISC_STATUS_BUSY));
 
                        if ((status & ISC_STATUS_ERROR) != STR9XPEC_ISC_SUCCESS)
                                return ERROR_FLASH_OPERATION_FAILED;
@@ -740,7 +740,7 @@ static int str9xpec_write(struct flash_bank_s *bank, uint8_t *buffer, uint32_t o
                uint8_t last_dword[8] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
                int i = 0;
 
-               while(bytes_remaining > 0)
+               while (bytes_remaining > 0)
                {
                        last_dword[i++] = *(buffer + bytes_written);
                        bytes_remaining--;
@@ -772,7 +772,7 @@ static int str9xpec_write(struct flash_bank_s *bank, uint8_t *buffer, uint32_t o
 
                        status = buf_get_u32(scanbuf, 0, 8);
 
-               } while(!(status & ISC_STATUS_BUSY));
+               } while (!(status & ISC_STATUS_BUSY));
 
                if ((status & ISC_STATUS_ERROR) != STR9XPEC_ISC_SUCCESS)
                        return ERROR_FLASH_OPERATION_FAILED;
@@ -845,7 +845,7 @@ static int str9xpec_erase_check(struct flash_bank_s *bank)
 
 static int str9xpec_info(struct flash_bank_s *bank, char *buf, int buf_size)
 {
-       snprintf(buf, buf_size, "str9xpec flash driver info" );
+       snprintf(buf, buf_size, "str9xpec flash driver info");
        return ERROR_OK;
 }
 
@@ -919,13 +919,13 @@ static int str9xpec_write_options(struct flash_bank_s *bank)
        tap = str9xpec_info->tap;
 
        /* erase config options first */
-       status = str9xpec_erase_area( bank, 0xFE, 0xFE );
+       status = str9xpec_erase_area(bank, 0xFE, 0xFE);
 
        if ((status & ISC_STATUS_ERROR) != STR9XPEC_ISC_SUCCESS)
                return status;
 
        if (!str9xpec_info->isc_enable) {
-               str9xpec_isc_enable( bank );
+               str9xpec_isc_enable(bank);
        }
 
        if (!str9xpec_info->isc_enable) {
@@ -962,7 +962,7 @@ static int str9xpec_write_options(struct flash_bank_s *bank)
                jtag_add_dr_scan(1, &field, jtag_get_end_state());
                jtag_execute_queue();
 
-       } while(!(status & ISC_STATUS_BUSY));
+       } while (!(status & ISC_STATUS_BUSY));
 
        str9xpec_isc_disable(bank);
 
@@ -1002,7 +1002,7 @@ static int str9xpec_handle_flash_options_cmap_command(struct command_context_s *
 
        if (argc < 2)
        {
-               command_print(cmd_ctx, "str9xpec options_cmap <bank> <bank0|bank1>");
+               command_print(cmd_ctx, "str9xpec options_cmap <bank> <bank0 | bank1>");
                return ERROR_OK;
        }
 
@@ -1034,7 +1034,7 @@ static int str9xpec_handle_flash_options_lvdthd_command(struct command_context_s
 
        if (argc < 2)
        {
-               command_print(cmd_ctx, "str9xpec options_lvdthd <bank> <2.4v|2.7v>");
+               command_print(cmd_ctx, "str9xpec options_lvdthd <bank> <2.4v | 2.7v>");
                return ERROR_OK;
        }
 
@@ -1066,7 +1066,7 @@ int str9xpec_handle_flash_options_lvdsel_command(struct command_context_s *cmd_c
 
        if (argc < 2)
        {
-               command_print(cmd_ctx, "str9xpec options_lvdsel <bank> <vdd|vdd_vddq>");
+               command_print(cmd_ctx, "str9xpec options_lvdsel <bank> <vdd | vdd_vddq>");
                return ERROR_OK;
        }
 
@@ -1098,7 +1098,7 @@ static int str9xpec_handle_flash_options_lvdwarn_command(struct command_context_
 
        if (argc < 2)
        {
-               command_print(cmd_ctx, "str9xpec options_lvdwarn <bank> <vdd|vdd_vddq>");
+               command_print(cmd_ctx, "str9xpec options_lvdwarn <bank> <vdd | vdd_vddq>");
                return ERROR_OK;
        }
 
@@ -1254,7 +1254,8 @@ static int str9xpec_handle_flash_disable_turbo_command(struct command_context_s
                return ERROR_FAIL;
 
        /* exit turbo mode via RESET */
-       str9xpec_set_instr(tap, ISC_NOOP, TAP_RESET);
+       str9xpec_set_instr(tap, ISC_NOOP, TAP_IDLE);
+       jtag_add_tlr();
        jtag_execute_queue();
 
        /* restore previous scan chain */