X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fjtag%2Fdummy.c;h=c2beb0920cf73dea443eaefc2562b4023657bd9d;hp=cc799faa9478a1f55b4d564ad91c3b7ddc183728;hb=a93b404161dc42f8dee805c8f95bc4974aded9cb;hpb=a88871bc6ad13561d9e60fbd9152b8f0c05329b1 diff --git a/src/jtag/dummy.c b/src/jtag/dummy.c index cc799faa94..c2beb0920c 100644 --- a/src/jtag/dummy.c +++ b/src/jtag/dummy.c @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2008 by Øyvind Harboe * + * Copyright (C) 2008 by Øyvind Harboe * * oyvind.harboe@zylin.com * * * * This program is free software; you can redistribute it and/or modify * @@ -21,9 +21,9 @@ #include "config.h" #endif -#define INCLUDE_JTAG_INTERFACE_H -#include "jtag.h" +#include "interface.h" #include "bitbang.h" +#include "../hello.h" /* my private tap controller state, which tracks state for calling code */ @@ -33,52 +33,13 @@ static int dummy_clock; /* edge detector */ static int clock_count; /* count clocks in any stable state, only stable states */ -static u32 dummy_data; +static uint32_t dummy_data; -static int dummy_speed(int speed); -static int dummy_register_commands(struct command_context_s *cmd_ctx); -static int dummy_init(void); -static int dummy_quit(void); -static int dummy_khz(int khz, int *jtag_speed); -static int dummy_speed_div(int speed, int *khz); - - -/* The dummy driver is used to easily check the code path - * where the target is unresponsive. - */ -jtag_interface_t dummy_interface = -{ - .name = "dummy", - - .execute_queue = bitbang_execute_queue, - - .speed = dummy_speed, - .register_commands = dummy_register_commands, - .khz = dummy_khz, - .speed_div = dummy_speed_div, - - .init = dummy_init, - .quit = dummy_quit, -}; - -static int dummy_read(void); -static void dummy_write(int tck, int tms, int tdi); -static void dummy_reset(int trst, int srst); -static void dummy_led(int on); - -static bitbang_interface_t dummy_bitbang = -{ - .read = dummy_read, - .write = dummy_write, - .reset = dummy_reset, - .blink = dummy_led -}; - static int dummy_read(void) { int data = 1 & dummy_data; - dummy_data = (dummy_data >> 1) | (1<<31); + dummy_data = (dummy_data >> 1) | (1 << 31); return data; } @@ -86,25 +47,25 @@ static int dummy_read(void) static void dummy_write(int tck, int tms, int tdi) { /* TAP standard: "state transitions occur on rising edge of clock" */ - if( tck != dummy_clock ) + if (tck != dummy_clock) { - if( tck ) + if (tck) { tap_state_t old_state = dummy_state; - dummy_state = tap_state_transition( old_state, tms ); + dummy_state = tap_state_transition(old_state, tms); - if( old_state != dummy_state ) + if (old_state != dummy_state) { - if( clock_count ) + if (clock_count) { LOG_DEBUG("dummy_tap: %d stable clocks", clock_count); clock_count = 0; } - LOG_DEBUG("dummy_tap: %s", tap_state_name(dummy_state) ); + LOG_DEBUG("dummy_tap: %s", tap_state_name(dummy_state)); #if defined(DEBUG) - if(dummy_state == TAP_DRCAPTURE) + if (dummy_state == TAP_DRCAPTURE) dummy_data = 0x01255043; #endif } @@ -124,34 +85,46 @@ static void dummy_reset(int trst, int srst) { dummy_clock = 0; - if (trst || (srst && (jtag_reset_config & RESET_SRST_PULLS_TRST))) + if (trst || (srst && (jtag_get_reset_config() & RESET_SRST_PULLS_TRST))) dummy_state = TAP_RESET; - LOG_DEBUG("reset to: %s", tap_state_name(dummy_state) ); + LOG_DEBUG("reset to: %s", tap_state_name(dummy_state)); +} + +static void dummy_led(int on) +{ } +static struct bitbang_interface dummy_bitbang = { + .read = &dummy_read, + .write = &dummy_write, + .reset = &dummy_reset, + .blink = &dummy_led, + }; + + static int dummy_khz(int khz, int *jtag_speed) { - if (khz==0) + if (khz == 0) { - *jtag_speed=0; + *jtag_speed = 0; } else { - *jtag_speed=64000/khz; + *jtag_speed = 64000/khz; } return ERROR_OK; } static int dummy_speed_div(int speed, int *khz) { - if (speed==0) + if (speed == 0) { *khz = 0; } else { - *khz=64000/speed; + *khz = 64000/speed; } return ERROR_OK; @@ -162,11 +135,6 @@ static int dummy_speed(int speed) return ERROR_OK; } -static int dummy_register_commands(struct command_context_s *cmd_ctx) -{ - return ERROR_OK; -} - static int dummy_init(void) { bitbang_interface = &dummy_bitbang; @@ -179,7 +147,31 @@ static int dummy_quit(void) return ERROR_OK; } -static void dummy_led(int on) -{ -} +static const struct command_registration dummy_command_handlers[] = { + { + .name = "dummy", + .mode = COMMAND_ANY, + .help = "dummy interface driver commands", + + .chain = hello_command_handlers, + }, + COMMAND_REGISTRATION_DONE, +}; + +/* The dummy driver is used to easily check the code path + * where the target is unresponsive. + */ +struct jtag_interface dummy_interface = { + .name = "dummy", + + .commands = dummy_command_handlers, + + .execute_queue = &bitbang_execute_queue, + + .speed = &dummy_speed, + .khz = &dummy_khz, + .speed_div = &dummy_speed_div, + .init = &dummy_init, + .quit = &dummy_quit, + };