change #include "interface.h" to <jtag/interface.h>
[fw/openocd] / src / jtag / zy1000 / zy1000.c
index a509aee58b0e8ca6656303273fc312740b912f89..821f161eeb8b828d7e982d73d7f579b585bb4e4b 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2007-2008 by Øyvind Harboe                              *
+ *   Copyright (C) 2007-2009 by Øyvind Harboe                              *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
@@ -22,7 +22,7 @@
 
 #include "embeddedice.h"
 #include "minidriver.h"
-#include "interface.h"
+#include <jtag/interface.h>
 #include "zy1000_version.h"
 
 #include <cyg/hal/hal_io.h>             // low level i/o
 #define ZYLIN_OPENOCD GIT_OPENOCD_VERSION
 #define ZYLIN_OPENOCD_VERSION "ZY1000 " ZYLIN_VERSION " " ZYLIN_DATE
 
-/* low level command set
- */
-void zy1000_reset(int trst, int srst);
-
-
-int zy1000_speed(int speed);
-int zy1000_register_commands(struct command_context *cmd_ctx);
-int zy1000_init(void);
-int zy1000_quit(void);
-
-/* interface commands */
-int zy1000_handle_zy1000_port_command(struct command_context *cmd_ctx, char *cmd, char **args, int argc);
 
 static int zy1000_khz(int khz, int *jtag_speed)
 {
@@ -111,21 +99,6 @@ static int zy1000_power_dropout(int *dropout)
        return ERROR_OK;
 }
 
-
-struct jtag_interface zy1000_interface =
-{
-       .name = "ZY1000",
-       .execute_queue = NULL,
-       .speed = zy1000_speed,
-       .register_commands = zy1000_register_commands,
-       .init = zy1000_init,
-       .quit = zy1000_quit,
-       .khz = zy1000_khz,
-       .speed_div = zy1000_speed_div,
-       .power_dropout = zy1000_power_dropout,
-       .srst_asserted = zy1000_srst_asserted,
-};
-
 void zy1000_reset(int trst, int srst)
 {
        LOG_DEBUG("zy1000 trst=%d, srst=%d", trst, srst);
@@ -227,31 +200,23 @@ static void setPower(bool power)
        }
 }
 
-int handle_power_command(struct command_context *cmd_ctx, char *cmd, char **args, int argc)
+COMMAND_HANDLER(handle_power_command)
 {
-       if (argc > 1)
+       switch (CMD_ARGC)
        {
-               return ERROR_INVALID_ARGUMENTS;
+       case 1: {
+               bool enable;
+               COMMAND_PARSE_ON_OFF(CMD_ARGV[0], enable);
+               setPower(enable);
+               // fall through
        }
-
-       if (argc == 1)
-       {
-               if (strcmp(args[0], "on") == 0)
-               {
-                       setPower(1);
-               }
-               else if (strcmp(args[0], "off") == 0)
-               {
-                       setPower(0);
-               } else
-               {
-                       command_print(cmd_ctx, "arg is \"on\" or \"off\"");
-                       return ERROR_INVALID_ARGUMENTS;
-               }
+       case 0:
+               LOG_INFO("Target power %s", savePower ? "on" : "off");
+               break;
+       default:
+               return ERROR_INVALID_ARGUMENTS;
        }
 
-       command_print(cmd_ctx, "Target power %s", savePower ? "on" : "off");
-
        return ERROR_OK;
 }
 
@@ -381,24 +346,6 @@ zylinjtag_Jim_Command_powerstatus(Jim_Interp *interp,
        return JIM_OK;
 }
 
-int zy1000_register_commands(struct command_context *cmd_ctx)
-{
-       register_command(cmd_ctx, NULL, "power", handle_power_command, COMMAND_ANY,
-                       "power <on/off> - turn power switch to target on/off. No arguments - print status.");
-
-       Jim_CreateCommand(interp, "zy1000_version", jim_zy1000_version, NULL, NULL);
-
-
-       Jim_CreateCommand(interp, "powerstatus", zylinjtag_Jim_Command_powerstatus, NULL, NULL);
-
-#ifdef CYGPKG_HAL_NIOS2
-       Jim_CreateCommand(interp, "updatezy1000firmware", jim_zy1000_writefirmware, NULL, NULL);
-#endif
-
-
-       return ERROR_OK;
-}
-
 
 
 
@@ -828,3 +775,50 @@ void embeddedice_write_dcc(struct jtag_tap *tap, int reg_addr, uint8_t *buffer,
 }
 
 
+static const struct command_registration zy1000_commands[] = {
+       {
+               .name = "power",
+               .handler = &handle_power_command,
+               .mode = COMMAND_ANY,
+               .help = "turn power switch to target on/off. No arguments - print status.",
+               .usage = "power <on/off>",
+       },
+       {
+               .name = "zy1000_version",
+               .mode = COMMAND_ANY,
+               .jim_handler = &jim_zy1000_version,
+               .help = "print version info for zy1000",
+       },
+       {
+               .name = "powerstatus",
+               .mode = COMMAND_ANY,
+               .jim_handler = & zylinjtag_Jim_Command_powerstatus,
+               .help = "print power status of target",
+       },
+#ifdef CYGPKG_HAL_NIOS2
+       {
+               .name = "updatezy1000firmware",
+               .mode = COMMAND_ANY,
+               .jim_handler = &jim_zy1000_writefirmware,
+               .help = "writes firmware to flash",
+       },
+#endif
+       COMMAND_REGISTRATION_DONE
+};
+
+
+
+struct jtag_interface zy1000_interface =
+{
+       .name = "ZY1000",
+       .execute_queue = NULL,
+       .speed = zy1000_speed,
+       .commands = zy1000_commands,
+       .init = zy1000_init,
+       .quit = zy1000_quit,
+       .khz = zy1000_khz,
+       .speed_div = zy1000_speed_div,
+       .power_dropout = zy1000_power_dropout,
+       .srst_asserted = zy1000_srst_asserted,
+};
+