]> git.sur5r.net Git - openocd/blobdiff - src/jtag/zy1000.c
Change tap_state naming to be consistent with SVF documentation.
[openocd] / src / jtag / zy1000.c
index 423822b2157a0716391623c9a6df80993efa7141..3c24a6301f59d72b5e1f9a5edf0739640248e744 100644 (file)
@@ -158,7 +158,7 @@ void zy1000_reset(int trst, int srst)
        else
        {
                /* Danger!!! if clk!=0 when in
-                * idle in TAP_RTI, reset halt on str912 will fail.
+                * idle in TAP_IDLE, reset halt on str912 will fail.
                 */
                ZY1000_POKE(ZY1000_JTAG_BASE+0x10, 0x00000001);
        }
@@ -177,7 +177,7 @@ void zy1000_reset(int trst, int srst)
        {
                waitIdle();
                /* we're now in the TLR state until trst is deasserted */
-               ZY1000_POKE(ZY1000_JTAG_BASE+0x20, TAP_TLR);
+               ZY1000_POKE(ZY1000_JTAG_BASE+0x20, TAP_RESET);
        } else
        {
                /* We'll get RCLK failure when we assert TRST, so clear any false positives here */
@@ -303,7 +303,7 @@ int loadFile(const char *fileName, void **data, int *len)
     if (fread(*data, 1, *len, pFile)!=*len)
     {
                fclose(pFile);
-       free(*data);
+       free(*data);
                LOG_ERROR("Can't open %s\n", fileName);
                return ERROR_JTAG_DEVICE_ERROR;
     }
@@ -429,7 +429,7 @@ static __inline void scanFields(int num_fields, scan_field_t *fields, enum tap_s
                        enum tap_state pause_state;
                        int l;
                        k=num_bits-j;
-                       pause_state=(shiftState==TAP_SD)?TAP_SD:TAP_SI;
+                       pause_state=(shiftState==TAP_DRSHIFT)?TAP_DRSHIFT:TAP_IRSHIFT;
                        if (k>32)
                        {
                                k=32;
@@ -437,7 +437,7 @@ static __inline void scanFields(int num_fields, scan_field_t *fields, enum tap_s
                        } else if (pause&&(i == num_fields-1))
                        {
                                /* this was the last to shift out this time */
-                               pause_state=(shiftState==TAP_SD)?TAP_PD:TAP_PI;
+                               pause_state=(shiftState==TAP_DRSHIFT)?TAP_DRPAUSE:TAP_IRPAUSE;
                        }
 
                        // we have (num_bits+7)/8 bytes of bits to toggle out.
@@ -492,43 +492,39 @@ int interface_jtag_add_end_state(enum tap_state state)
 int interface_jtag_add_ir_scan(int num_fields, scan_field_t *fields, enum tap_state state)
 {
 
-       int i, j;
+       int j;
        int scan_size = 0;
-       jtag_device_t *device;
-
-       for (i=0; i < jtag_num_devices; i++)
+       jtag_tap_t *tap, *nextTap;
+       for(tap = jtag_NextEnabledTap(NULL); tap!= NULL; tap=nextTap)
        {
-               int pause=i==(jtag_num_devices-1);
+               nextTap=jtag_NextEnabledTap(tap);
+               int pause=(nextTap==NULL);
+
                int found = 0;
-               device = jtag_get_device(i);
-               if (device==NULL)
-               {
-                       return ERROR_FAIL;
-               }
 
-               scan_size = device->ir_length;
+               scan_size = tap->ir_length;
 
                /* search the list */
                for (j=0; j < num_fields; j++)
                {
-                       if (i == fields[j].device)
+                       if (tap == fields[j].tap)
                        {
                                found = 1;
 
                                if ((jtag_verify_capture_ir)&&(fields[j].in_handler==NULL))
                                {
-                                       jtag_set_check_value(fields+j, device->expected, device->expected_mask, NULL);
+                                       jtag_set_check_value(fields+j, tap->expected, tap->expected_mask, NULL);
                                } else if (jtag_verify_capture_ir)
                                {
-                                       fields[j].in_check_value = device->expected;
-                                       fields[j].in_check_mask = device->expected_mask;
+                                       fields[j].in_check_value = tap->expected;
+                                       fields[j].in_check_mask = tap->expected_mask;
                                }
 
-                               scanFields(1, fields+j, TAP_SI, pause);
+                               scanFields(1, fields+j, TAP_IRSHIFT, pause);
                                /* update device information */
-                               buf_cpy(fields[j].out_value, device->cur_instr, scan_size);
+                               buf_cpy(fields[j].out_value, tap->cur_instr, scan_size);
 
-                               device->bypass = 0;
+                               tap->bypass = 0;
                                break;
                        }
                }
@@ -542,10 +538,10 @@ int interface_jtag_add_ir_scan(int num_fields, scan_field_t *fields, enum tap_st
                        memset(&tmp, 0, sizeof(tmp));
                        tmp.out_value = ones;
                        tmp.num_bits = scan_size;
-                       scanFields(1, &tmp, TAP_SI, pause);
+                       scanFields(1, &tmp, TAP_IRSHIFT, pause);
                        /* update device information */
-                       buf_cpy(tmp.out_value, device->cur_instr, scan_size);
-                       device->bypass = 1;
+                       buf_cpy(tmp.out_value, tap->cur_instr, scan_size);
+                       tap->bypass = 1;
                }
        }
        gotoEndState();
@@ -559,7 +555,7 @@ int interface_jtag_add_ir_scan(int num_fields, scan_field_t *fields, enum tap_st
 
 int interface_jtag_add_plain_ir_scan(int num_fields, scan_field_t *fields, enum tap_state state)
 {
-       scanFields(num_fields, fields, TAP_SI, 1);
+       scanFields(num_fields, fields, TAP_IRSHIFT, 1);
        gotoEndState();
 
        return ERROR_OK;
@@ -569,32 +565,26 @@ int interface_jtag_add_plain_ir_scan(int num_fields, scan_field_t *fields, enum
 
 int interface_jtag_add_dr_scan(int num_fields, scan_field_t *fields, enum tap_state state)
 {
-       int i, j;
-       for (i=0; i < jtag_num_devices; i++)
+
+       int j;
+       jtag_tap_t *tap, *nextTap;
+       for(tap = jtag_NextEnabledTap(NULL); tap!= NULL; tap=nextTap)
        {
-               int found = 0;
-               int pause = (i==(jtag_num_devices-1));
+               nextTap=jtag_NextEnabledTap(tap);
+               int found=0;
+               int pause=(nextTap==NULL);
 
                for (j=0; j < num_fields; j++)
                {
-                       if (i == fields[j].device)
+                       if (tap == fields[j].tap)
                        {
                                found = 1;
 
-                               scanFields(1, fields+j, TAP_SD, pause);
+                               scanFields(1, fields+j, TAP_DRSHIFT, pause);
                        }
                }
                if (!found)
                {
-#ifdef _DEBUG_JTAG_IO_
-                       /* if a device isn't listed, the BYPASS register should be selected */
-                       if (!jtag_get_device(i)->bypass)
-                       {
-                               LOG_ERROR("BUG: no scan data for a device not in BYPASS");
-                               exit(-1);
-                       }
-#endif
-
                        scan_field_t tmp;
                        /* program the scan field to 1 bit length, and ignore it's value */
                        tmp.num_bits = 1;
@@ -606,17 +596,10 @@ int interface_jtag_add_dr_scan(int num_fields, scan_field_t *fields, enum tap_st
                        tmp.in_handler = NULL;
                        tmp.in_handler_priv = NULL;
 
-                       scanFields(1, &tmp, TAP_SD, pause);
+                       scanFields(1, &tmp, TAP_DRSHIFT, pause);
                }
                else
                {
-#ifdef _DEBUG_JTAG_IO_
-                       /* if a device is listed, the BYPASS register must not be selected */
-                       if (jtag_get_device(i)->bypass)
-                       {
-                               LOG_WARNING("scan data for a device in BYPASS");
-                       }
-#endif
                }
        }
        gotoEndState();
@@ -625,7 +608,7 @@ int interface_jtag_add_dr_scan(int num_fields, scan_field_t *fields, enum tap_st
 
 int interface_jtag_add_plain_dr_scan(int num_fields, scan_field_t *fields, enum tap_state state)
 {
-       scanFields(num_fields, fields, TAP_SD, 1);
+       scanFields(num_fields, fields, TAP_DRSHIFT, 1);
        gotoEndState();
        return ERROR_OK;
 }
@@ -633,7 +616,7 @@ int interface_jtag_add_plain_dr_scan(int num_fields, scan_field_t *fields, enum
 
 int interface_jtag_add_tlr()
 {
-       setCurrentState(TAP_TLR);
+       setCurrentState(TAP_RESET);
        return ERROR_OK;
 }
 
@@ -652,7 +635,7 @@ int interface_jtag_add_reset(int req_trst, int req_srst)
 int interface_jtag_add_runtest(int num_cycles, enum tap_state state)
 {
        /* num_cycles can be 0 */
-       setCurrentState(TAP_RTI);
+       setCurrentState(TAP_IDLE);
 
        /* execute num_cycles, 32 at the time. */
        int i;
@@ -664,14 +647,14 @@ int interface_jtag_add_runtest(int num_cycles, enum tap_state state)
                {
                        num=num_cycles-i;
                }
-               shiftValueInner(TAP_RTI, TAP_RTI, num, 0);
+               shiftValueInner(TAP_IDLE, TAP_IDLE, num, 0);
        }
 
 #if !TEST_MANUAL()
        /* finish in end_state */
        setCurrentState(state);
 #else
-       enum tap_state t=TAP_RTI;
+       enum tap_state t=TAP_IDLE;
        /* test manual drive code on any target */
        int tms;
        u8 tms_scan = TAP_MOVE(t, state);
@@ -739,11 +722,11 @@ int interface_jtag_add_pathmove(int num_states, enum tap_state *path)
 
 
 
-void embeddedice_write_dcc(int chain_pos, int reg_addr, u8 *buffer, int little, int count)
+void embeddedice_write_dcc(jtag_tap_t *tap, int reg_addr, u8 *buffer, int little, int count)
 {
 //     static int const reg_addr=0x5;
        enum tap_state end_state=cmd_queue_end_state;
-       if (jtag_num_devices==1)
+       if (jtag_NextEnabledTap(jtag_NextEnabledTap(NULL))==NULL)
        {
                /* better performance via code duplication */
                if (little)
@@ -751,8 +734,8 @@ void embeddedice_write_dcc(int chain_pos, int reg_addr, u8 *buffer, int little,
                        int i;
                        for (i = 0; i < count; i++)
                        {
-                               shiftValueInner(TAP_SD, TAP_SD, 32, fast_target_buffer_get_u32(buffer, 1));
-                               shiftValueInner(TAP_SD, end_state, 6, reg_addr|(1<<5));
+                               shiftValueInner(TAP_DRSHIFT, TAP_DRSHIFT, 32, fast_target_buffer_get_u32(buffer, 1));
+                               shiftValueInner(TAP_DRSHIFT, end_state, 6, reg_addr|(1<<5));
                                buffer+=4;
                        }
                } else
@@ -760,8 +743,8 @@ void embeddedice_write_dcc(int chain_pos, int reg_addr, u8 *buffer, int little,
                        int i;
                        for (i = 0; i < count; i++)
                        {
-                               shiftValueInner(TAP_SD, TAP_SD, 32, fast_target_buffer_get_u32(buffer, 0));
-                               shiftValueInner(TAP_SD, end_state, 6, reg_addr|(1<<5));
+                               shiftValueInner(TAP_DRSHIFT, TAP_DRSHIFT, 32, fast_target_buffer_get_u32(buffer, 0));
+                               shiftValueInner(TAP_DRSHIFT, end_state, 6, reg_addr|(1<<5));
                                buffer+=4;
                        }
                }
@@ -771,7 +754,7 @@ void embeddedice_write_dcc(int chain_pos, int reg_addr, u8 *buffer, int little,
                int i;
                for (i = 0; i < count; i++)
                {
-                       embeddedice_write_reg_inner(chain_pos, reg_addr, fast_target_buffer_get_u32(buffer, little));
+                       embeddedice_write_reg_inner(tap, reg_addr, fast_target_buffer_get_u32(buffer, little));
                        buffer += 4;
                }
        }