/***************************************************************************
- * 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 *
#include "interface.h"
#include "bitbang.h"
+#include "../hello.h"
/* my private tap controller state, which tracks state for calling code */
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;
}
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
}
{
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;
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;
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,
+ };