The following patches was applied:
[openocd.git] / src / jtag / gw16012.c
index 8c7dc81b97f4be0fb10eb70fcaee712838a10e00..af5776755d4e211c0c452fb1ca8ef8ac6d17d01f 100644 (file)
@@ -97,13 +97,13 @@ int gw16012_quit(void);
 
 int gw16012_handle_parport_port_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
 
-jtag_interface_t gw16012_interface = 
+jtag_interface_t gw16012_interface =
 {
        .name = "gw16012",
-       
+
        .execute_queue = gw16012_execute_queue,
 
-       .speed = gw16012_speed, 
+       .speed = gw16012_speed,
        .register_commands = gw16012_register_commands,
        .init = gw16012_init,
        .quit = gw16012_quit,
@@ -113,7 +113,7 @@ int gw16012_register_commands(struct command_context_s *cmd_ctx)
 {
        register_command(cmd_ctx, NULL, "parport_port", gw16012_handle_parport_port_command,
                                         COMMAND_CONFIG, NULL);
-       
+
        return ERROR_OK;
 }
 
@@ -125,7 +125,7 @@ void gw16012_data(u8 value)
 #ifdef _DEBUG_GW16012_IO_
        LOG_DEBUG("%2.2x", value);
 #endif
-       
+
        #if PARPORT_USE_PPDEV == 1
                ioctl(device_handle, PPWDATA, &value);
        #else
@@ -134,7 +134,7 @@ void gw16012_data(u8 value)
                #else
                        outb(value, gw16012_port);
                #endif
-       #endif  
+       #endif
 }
 
 void gw16012_control(u8 value)
@@ -194,10 +194,10 @@ int gw16012_speed(int speed)
        return ERROR_OK;
 }
 
-void gw16012_end_state(state)
+void gw16012_end_state(int state)
 {
-       if (tap_move_map[state] != -1)
-               end_state = state;
+       if (tap_is_state_stable(state))
+               tap_set_end_state(state);
        else
        {
                LOG_ERROR("BUG: %i is not a valid end state", state);
@@ -208,17 +208,17 @@ void gw16012_end_state(state)
 void gw16012_state_move(void)
 {
        int i=0, tms=0;
-       u8 tms_scan = TAP_MOVE(cur_state, end_state);
-       
+       u8 tms_scan = tap_get_tms_path(tap_get_state(), tap_get_end_state());
+
        gw16012_control(0x0); /* single-bit mode */
-       
+
        for (i = 0; i < 7; i++)
        {
                tms = (tms_scan >> i) & 1;
                gw16012_data(tms << 1); /* output next TMS bit */
        }
-       
-       cur_state = end_state;
+
+       tap_set_state(tap_get_end_state());
 }
 
 void gw16012_path_move(pathmove_command_t *cmd)
@@ -230,48 +230,48 @@ void gw16012_path_move(pathmove_command_t *cmd)
        while (num_states)
        {
                gw16012_control(0x0); /* single-bit mode */
-               if (tap_transitions[cur_state].low == cmd->path[state_count])
+               if (tap_state_transition(tap_get_state(), false) == cmd->path[state_count])
                {
                        gw16012_data(0x0); /* TCK cycle with TMS low */
                }
-               else if (tap_transitions[cur_state].high == cmd->path[state_count])
+               else if (tap_state_transition(tap_get_state(), true) == cmd->path[state_count])
                {
                        gw16012_data(0x2); /* TCK cycle with TMS high */
                }
                else
                {
-                       LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", tap_state_strings[cur_state], tap_state_strings[cmd->path[state_count]]);
+                       LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", tap_state_name(tap_get_state()), tap_state_name(cmd->path[state_count]));
                        exit(-1);
                }
-               
-               cur_state = cmd->path[state_count];
+
+               tap_set_state(cmd->path[state_count]);
                state_count++;
                num_states--;
        }
-       
-       end_state = cur_state;
+
+       tap_set_end_state(tap_get_state());
 }
 
 void gw16012_runtest(int num_cycles)
 {
-       enum tap_state saved_end_state = end_state;
+       tap_state_t saved_end_state = tap_get_end_state();
        int i;
-       
-       /* only do a state_move when we're not already in RTI */
-       if (cur_state != TAP_RTI)
+
+       /* only do a state_move when we're not already in IDLE */
+       if (tap_get_state() != TAP_IDLE)
        {
-               gw16012_end_state(TAP_RTI);
+               gw16012_end_state(TAP_IDLE);
                gw16012_state_move();
        }
-       
+
        for (i = 0; i < num_cycles; i++)
        {
                gw16012_control(0x0); /* single-bit mode */
                gw16012_data(0x0); /* TMS cycle with TMS low */
        }
-       
+
        gw16012_end_state(saved_end_state);
-       if (cur_state != end_state)
+       if (tap_get_state() != tap_get_end_state())
                gw16012_state_move();
 }
 
@@ -279,16 +279,16 @@ void gw16012_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size)
 {
        int bits_left = scan_size;
        int bit_count = 0;
-       enum tap_state saved_end_state = end_state;
+       tap_state_t saved_end_state = tap_get_end_state();
        u8 scan_out, scan_in;
 
        /* only if we're not already in the correct Shift state */
-       if (!((!ir_scan && (cur_state == TAP_SD)) || (ir_scan && (cur_state == TAP_SI))))
+       if (!((!ir_scan && (tap_get_state() == TAP_DRSHIFT)) || (ir_scan && (tap_get_state() == TAP_IRSHIFT))))
        {
                if (ir_scan)
-                       gw16012_end_state(TAP_SI);
+                       gw16012_end_state(TAP_IRSHIFT);
                else
-                       gw16012_end_state(TAP_SD);
+                       gw16012_end_state(TAP_DRSHIFT);
 
                gw16012_state_move();
                gw16012_end_state(saved_end_state);
@@ -302,20 +302,20 @@ void gw16012_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size)
                bit_count += 7;
                bits_left -= 7;
        }
-       
+
        gw16012_control(0x0); /* single-bit mode */
        while (bits_left-- > 0)
        {
                u8 tms = 0;
-               
+
                scan_out = buf_get_u32(buffer, bit_count, 1);
-               
+
                if (bits_left == 0) /* last bit */
                {
-                       if ((ir_scan && (end_state == TAP_SI))
-                               || (!ir_scan && (end_state == TAP_SD)))
+                       if ((ir_scan && (tap_get_end_state() == TAP_IRSHIFT))
+                               || (!ir_scan && (tap_get_end_state() == TAP_DRSHIFT)))
                        {
-                               tms = 0; 
+                               tms = 0;
                        }
                        else
                        {
@@ -329,21 +329,21 @@ void gw16012_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size)
                {
                        gw16012_input(&scan_in);
                        buf_set_u32(buffer, bit_count, 1, ((scan_in & 0x08) >> 3));
-               }               
+               }
 
                bit_count++;
        }
 
-       if (!((ir_scan && (end_state == TAP_SI)) ||
-               (!ir_scan && (end_state == TAP_SD))))
+       if (!((ir_scan && (tap_get_end_state() == TAP_IRSHIFT)) ||
+               (!ir_scan && (tap_get_end_state() == TAP_DRSHIFT))))
        {
                gw16012_data(0x0);
                if (ir_scan)
-                       cur_state = TAP_PI;
+                       tap_set_state(TAP_IRPAUSE);
                else
-                       cur_state = TAP_PD;
-                       
-               if (cur_state != end_state)
+                       tap_set_state(TAP_DRPAUSE);
+
+               if (tap_get_state() != tap_get_end_state())
                        gw16012_state_move();
        }
 }
@@ -355,12 +355,12 @@ int gw16012_execute_queue(void)
        enum scan_type type;
        u8 *buffer;
        int retval;
-       
+
        /* return ERROR_OK, unless a jtag_read_buffer returns a failed check
         * that wasn't handled by a caller-provided error handler
-        */ 
+        */
        retval = ERROR_OK;
-               
+
        while (cmd)
        {
                switch (cmd->type)
@@ -369,7 +369,7 @@ int gw16012_execute_queue(void)
 #ifdef _DEBUG_JTAG_IO_
                                LOG_DEBUG("end_state: %i", cmd->cmd.end_state->end_state);
 #endif
-                               if (cmd->cmd.end_state->end_state != -1)
+                               if (cmd->cmd.end_state->end_state != TAP_INVALID)
                                        gw16012_end_state(cmd->cmd.end_state->end_state);
                                break;
                        case JTAG_RESET:
@@ -378,7 +378,7 @@ int gw16012_execute_queue(void)
 #endif
                                if (cmd->cmd.reset->trst == 1)
                                {
-                                       cur_state = TAP_TLR;
+                                       tap_set_state(TAP_RESET);
                                }
                                gw16012_reset(cmd->cmd.reset->trst, cmd->cmd.reset->srst);
                                break;
@@ -386,7 +386,7 @@ int gw16012_execute_queue(void)
 #ifdef _DEBUG_JTAG_IO_
                                LOG_DEBUG("runtest %i cycles, end in %i", cmd->cmd.runtest->num_cycles, cmd->cmd.runtest->end_state);
 #endif
-                               if (cmd->cmd.runtest->end_state != -1)
+                               if (cmd->cmd.runtest->end_state != TAP_INVALID)
                                        gw16012_end_state(cmd->cmd.runtest->end_state);
                                gw16012_runtest(cmd->cmd.runtest->num_cycles);
                                break;
@@ -394,7 +394,7 @@ int gw16012_execute_queue(void)
 #ifdef _DEBUG_JTAG_IO_
                                LOG_DEBUG("statemove end in %i", cmd->cmd.statemove->end_state);
 #endif
-                               if (cmd->cmd.statemove->end_state != -1)
+                               if (cmd->cmd.statemove->end_state != TAP_INVALID)
                                        gw16012_end_state(cmd->cmd.statemove->end_state);
                                gw16012_state_move();
                                break;
@@ -405,12 +405,12 @@ int gw16012_execute_queue(void)
                                gw16012_path_move(cmd->cmd.pathmove);
                                break;
                        case JTAG_SCAN:
-                               if (cmd->cmd.scan->end_state != -1)
+                               if (cmd->cmd.scan->end_state != TAP_INVALID)
                                        gw16012_end_state(cmd->cmd.scan->end_state);
                                scan_size = jtag_build_buffer(cmd->cmd.scan, &buffer);
                                type = jtag_scan_type(cmd->cmd.scan);
 #ifdef _DEBUG_JTAG_IO_
-                               LOG_DEBUG("%s scan (%i) %i bit end in %i", (cmd->cmd.scan->ir_scan) ? "ir" : "dr", 
+                               LOG_DEBUG("%s scan (%i) %i bit end in %i", (cmd->cmd.scan->ir_scan) ? "ir" : "dr",
                                        type, scan_size, cmd->cmd.scan->end_state);
 #endif
                                gw16012_scan(cmd->cmd.scan->ir_scan, type, buffer, scan_size);
@@ -431,33 +431,33 @@ int gw16012_execute_queue(void)
                }
                cmd = cmd->next;
        }
-       
+
        return retval;
 }
 
 #if PARPORT_USE_GIVEIO == 1
 int gw16012_get_giveio_access()
 {
-    HANDLE h;
-    OSVERSIONINFO version;
-
-    version.dwOSVersionInfoSize = sizeof version;
-    if (!GetVersionEx( &version )) {
-        errno = EINVAL;
-        return -1;
-    }
-    if (version.dwPlatformId != VER_PLATFORM_WIN32_NT)
-        return 0;
-
-    h = CreateFile( "\\\\.\\giveio", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
-    if (h == INVALID_HANDLE_VALUE) {
-        errno = ENODEV;
-        return -1;
-    }
-
-    CloseHandle( h );
-
-    return 0;
+       HANDLE h;
+       OSVERSIONINFO version;
+
+       version.dwOSVersionInfoSize = sizeof version;
+       if (!GetVersionEx( &version )) {
+               errno = EINVAL;
+               return -1;
+       }
+       if (version.dwPlatformId != VER_PLATFORM_WIN32_NT)
+               return 0;
+
+       h = CreateFile( "\\\\.\\giveio", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
+       if (h == INVALID_HANDLE_VALUE) {
+               errno = ENODEV;
+               return -1;
+       }
+
+       CloseHandle( h );
+
+       return 0;
 }
 #endif
 
@@ -468,7 +468,7 @@ int gw16012_init(void)
        int i = 0;
 #endif
        u8 status_port;
-       
+
 #if PARPORT_USE_PPDEV == 1
        if (device_handle>0)
        {
@@ -486,7 +486,7 @@ int gw16012_init(void)
 
        snprintf(buffer, 256, "/dev/parport%d", gw16012_port);
        device_handle = open(buffer, O_WRONLY);
-#endif 
+#endif
        if (device_handle<0)
        {
                LOG_ERROR("cannot open device. check it exists and that user read and write rights are set");
@@ -525,8 +525,8 @@ int gw16012_init(void)
                gw16012_port = 0x378;
                LOG_WARNING("No gw16012 port specified, using default '0x378' (LPT1)");
        }
-       
-       LOG_DEBUG("requesting privileges for parallel port 0x%lx...", gw16012_port);
+
+       LOG_DEBUG("requesting privileges for parallel port 0x%lx...", (long unsigned)(gw16012_port) );
 #if PARPORT_USE_GIVEIO == 1
        if (gw16012_get_giveio_access() != 0)
 #else /* PARPORT_USE_GIVEIO */
@@ -545,19 +545,19 @@ int gw16012_init(void)
        outb(0x0, gw16012_port + 2);
 #endif
 #endif /* PARPORT_USE_PPDEV */
-       
+
        gw16012_input(&status_port);
        gw16012_msb = (status_port & 0x80) ^ 0x80;
-       
+
        gw16012_speed(jtag_speed);
        gw16012_reset(0, 0);
-       
+
        return ERROR_OK;
 }
 
 int gw16012_quit(void)
 {
-       
+
        return ERROR_OK;
 }
 

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)