Changes the jtag_interface->register_callbacks field to a list of
commands to be registered.  Changes callback to invocation of
register_commands() with that command registration list.  Removes all
JTAG interface driver register_command callback functions, which the
previous commits had converted into identical calls.

Signed-off-by: Zachary T Welch <[email protected]>
---
 src/jtag/amt_jtagaccel.c |   10 ++--------
 src/jtag/arm-jtag-ew.c   |   13 +++++--------
 src/jtag/dummy.c         |    9 +++------
 src/jtag/ft2232.c        |   12 ++----------
 src/jtag/gw16012.c       |   10 ++--------
 src/jtag/interface.h     |    3 ++-
 src/jtag/jlink.c         |   13 +++++--------
 src/jtag/parport.c       |   29 +++++++++++++----------------
 src/jtag/presto.c        |   13 +++++--------
 src/jtag/rlink/rlink.c   |   44 --------------------------------------------
 src/jtag/tcl.c           |   11 +++++------
 src/jtag/vsllink.c       |   11 +++--------
 12 files changed, 47 insertions(+), 131 deletions(-)

diff --git a/src/jtag/amt_jtagaccel.c b/src/jtag/amt_jtagaccel.c
index 7729714..0d22634 100644
--- a/src/jtag/amt_jtagaccel.c
+++ b/src/jtag/amt_jtagaccel.c
@@ -557,16 +557,10 @@ static const struct command_registration 
amtjtagaccel_command_handlers[] = {
                },
        };
 
-static int amt_jtagaccel_register_commands(struct command_context *cmd_ctx)
-{
-       return register_commands(cmd_ctx, NULL,
-                       ARRAY_SIZE(amtjtagaccel_command_handlers),
-                       amtjtagaccel_command_handlers);
-}
-
 struct jtag_interface amt_jtagaccel_interface = {
                .name = "amt_jtagaccel",
-               .register_commands = &amt_jtagaccel_register_commands,
+               .num_commands = ARRAY_SIZE(amtjtagaccel_command_handlers),
+               .commands = amtjtagaccel_command_handlers,
                .init = &amt_jtagaccel_init,
                .quit = &amt_jtagaccel_quit,
                .speed = &amt_jtagaccel_speed,
diff --git a/src/jtag/arm-jtag-ew.c b/src/jtag/arm-jtag-ew.c
index 5363ae8..698e5e2 100644
--- a/src/jtag/arm-jtag-ew.c
+++ b/src/jtag/arm-jtag-ew.c
@@ -510,19 +510,16 @@ static const struct command_registration 
armjtagew_command_handlers[] = {
                },
        };
 
-static int armjtagew_register_commands(struct command_context *cmd_ctx)
-{
-       return register_commands(cmd_ctx, NULL,
-                       ARRAY_SIZE(armjtagew_command_handlers),
-                       armjtagew_command_handlers);
-}
-
 struct jtag_interface armjtagew_interface = {
                .name = "arm-jtag-ew",
+
+               .num_commands = ARRAY_SIZE(armjtagew_command_handlers),
+               .commands = armjtagew_command_handlers,
+
                .execute_queue = &armjtagew_execute_queue,
                .speed = &armjtagew_speed,
                .khz = &armjtagew_khz,
-               .register_commands = &armjtagew_register_commands,
+
                .init = &armjtagew_init,
                .quit = &armjtagew_quit,
        };
diff --git a/src/jtag/dummy.c b/src/jtag/dummy.c
index 0516790..be804b5 100644
--- a/src/jtag/dummy.c
+++ b/src/jtag/dummy.c
@@ -134,11 +134,6 @@ static int dummy_speed(int speed)
        return ERROR_OK;
 }
 
-static int dummy_register_commands(struct command_context *cmd_ctx)
-{
-       return ERROR_OK;
-}
-
 static int dummy_init(void)
 {
        bitbang_interface = &dummy_bitbang;
@@ -157,10 +152,12 @@ static int dummy_quit(void)
 struct jtag_interface dummy_interface = {
                .name = "dummy",
 
+               .commands = NULL,
+               .num_commands = 0,
+
                .execute_queue = &bitbang_execute_queue,
 
                .speed = &dummy_speed,
-               .register_commands = &dummy_register_commands,
                .khz = &dummy_khz,
                .speed_div = &dummy_speed_div,
 
diff --git a/src/jtag/ft2232.c b/src/jtag/ft2232.c
index d202427..8b80f87 100644
--- a/src/jtag/ft2232.c
+++ b/src/jtag/ft2232.c
@@ -4007,18 +4007,10 @@ static const struct command_registration 
ft2232_command_handlers[] = {
                }
        };
 
-
-static int ft2232_register_commands(struct command_context* cmd_ctx)
-{
-       return register_commands(cmd_ctx, NULL,
-                       ARRAY_SIZE(ft2232_command_handlers),
-                       ft2232_command_handlers);
-}
-
-
 struct jtag_interface ft2232_interface = {
                .name = "ft2232",
-               .register_commands = &ft2232_register_commands,
+               .num_commands = ARRAY_SIZE(ft2232_command_handlers),
+               .commands = ft2232_command_handlers,
                .init = &ft2232_init,
                .quit = &ft2232_quit,
                .speed = &ft2232_speed,
diff --git a/src/jtag/gw16012.c b/src/jtag/gw16012.c
index 5118562..74cdfa0 100644
--- a/src/jtag/gw16012.c
+++ b/src/jtag/gw16012.c
@@ -572,16 +572,10 @@ static const struct command_registration 
gw16012_command_handlers[] = {
                },
        };
 
-static int gw16012_register_commands(struct command_context *cmd_ctx)
-{
-       return register_commands(cmd_ctx, NULL,
-                       ARRAY_SIZE(gw16012_command_handlers),
-                       gw16012_command_handlers);
-}
-
 struct jtag_interface gw16012_interface = {
                .name = "gw16012",
-               .register_commands = &gw16012_register_commands,
+               .num_commands = ARRAY_SIZE(gw16012_command_handlers),
+               .commands = gw16012_command_handlers,
                .init = &gw16012_init,
                .quit = &gw16012_quit,
                .speed = &gw16012_speed,
diff --git a/src/jtag/interface.h b/src/jtag/interface.h
index 05e4048..bab6dcb 100644
--- a/src/jtag/interface.h
+++ b/src/jtag/interface.h
@@ -207,7 +207,8 @@ struct jtag_interface {
         * @param cmd_ctx The context in which commands should be registered.
         * @returns ERROR_OK on success, or an error code on failure.
         */
-       int (*register_commands)(struct command_context* cmd_ctx);
+       const struct command_registration *commands;
+       unsigned num_commands;
 
        /**
         * Interface driver must initalize any resources and connect to a
diff --git a/src/jtag/jlink.c b/src/jtag/jlink.c
index 200dfe4..dc9dd58 100644
--- a/src/jtag/jlink.c
+++ b/src/jtag/jlink.c
@@ -644,20 +644,17 @@ static const struct command_registration 
jlink_command_handlers[] = {
                },
        };
 
-static int jlink_register_commands(struct command_context *cmd_ctx)
-{
-       return register_commands(cmd_ctx, NULL,
-                       ARRAY_SIZE(jlink_command_handlers),
-                       jlink_command_handlers);
-}
-
 struct jtag_interface jlink_interface = {
                .name = "jlink",
+
+               .num_commands = ARRAY_SIZE(jlink_command_handlers),
+               .commands = jlink_command_handlers,
+
                .execute_queue = &jlink_execute_queue,
                .speed = &jlink_speed,
                .speed_div = &jlink_speed_div,
                .khz = &jlink_khz,
-               .register_commands = &jlink_register_commands,
+
                .init = &jlink_init,
                .quit = &jlink_quit,
        };
diff --git a/src/jtag/parport.c b/src/jtag/parport.c
index cfc3405..1285290 100644
--- a/src/jtag/parport.c
+++ b/src/jtag/parport.c
@@ -516,21 +516,18 @@ static const struct command_registration 
parport_command_handlers[] = {
                },
        };
 
+struct jtag_interface parport_interface = {
+               .name = "parport",
 
-static int parport_register_commands(struct command_context *cmd_ctx)
-{
-       return register_commands(cmd_ctx, NULL,
-                       ARRAY_SIZE(parport_command_handlers),
-                       parport_command_handlers);
-}
+               .commands = parport_command_handlers,
+               .num_commands = ARRAY_SIZE(parport_command_handlers),
 
-struct jtag_interface parport_interface = {
-       .name =                 "parport",
-       .register_commands =    parport_register_commands,
-       .init =                 parport_init,
-       .quit =                 parport_quit,
-       .khz =                  parport_khz,
-       .speed_div =            parport_speed_div,
-       .speed =                parport_speed,
-       .execute_queue =        bitbang_execute_queue,
-};
+               .init = &parport_init,
+               .quit = &parport_quit,
+
+               .khz = &parport_khz,
+               .speed_div = &parport_speed_div,
+               .speed = &parport_speed,
+
+               .execute_queue = &bitbang_execute_queue,
+       };
diff --git a/src/jtag/presto.c b/src/jtag/presto.c
index 6f5833a..0b6801b 100644
--- a/src/jtag/presto.c
+++ b/src/jtag/presto.c
@@ -749,13 +749,6 @@ static const struct command_registration 
presto_command_handlers[] = {
                },
        };
 
-static int presto_jtag_register_commands(struct command_context *cmd_ctx)
-{
-       return register_commands(cmd_ctx, NULL,
-                       ARRAY_SIZE(presto_command_handlers),
-                       presto_command_handlers);
-}
-
 static int presto_jtag_init(void)
 {
        if (presto_open(presto_serial) != ERROR_OK)
@@ -793,11 +786,15 @@ static int presto_jtag_quit(void)
 
 struct jtag_interface presto_interface = {
                .name = "presto",
+
+               .num_commands = ARRAY_SIZE(presto_command_handlers),
+               .commands = presto_command_handlers,
+
                .execute_queue = &bitq_execute_queue,
                .speed = &presto_jtag_speed,
                .khz = &presto_jtag_khz,
                .speed_div = &presto_jtag_speed_div,
-               .register_commands = &presto_jtag_register_commands,
+
                .init = &presto_jtag_init,
                .quit = &presto_jtag_quit,
        };
diff --git a/src/jtag/rlink/rlink.c b/src/jtag/rlink/rlink.c
index c88067c..8359414 100644
--- a/src/jtag/rlink/rlink.c
+++ b/src/jtag/rlink/rlink.c
@@ -1570,49 +1570,6 @@ int rlink_khz(
 }
 
 
-#if 0
-static
-int
-handle_dtc_directory_command(
-       struct command_context *cmd_ctx,
-       char *cmd,
-       char **args,
-       int argc
-) {
-       if (argc != 1) {
-               LOG_ERROR("expected exactly one argument to rlink_dtc_directory 
<directory-path>");
-               return(ERROR_INVALID_ARGUMENTS);
-       }
-
-       printf("handle_dtc_directory_command called with \"%s\"\n", args[0]);
-
-       return(ERROR_OK);
-}
-#endif
-
-
-static
-int rlink_register_commands(struct command_context *cmd_ctx)
-{
-
-#ifdef _DEBUG_JTAG_IO_
-       LOG_DEBUG("rlink_register_commands called with cmd_ctx=%p\n", cmd_ctx);
-#endif
-
-#if 0
-       register_command(
-               cmd_ctx, NULL,
-               "rlink_dtc_directory",
-               handle_dtc_directory_command,
-               COMMAND_CONFIG,
-               "The directory in which to search for DTC load images"
-);
-#endif
-
-       return ERROR_OK;
-}
-
-
 static
 int rlink_init(void)
 {
@@ -1882,7 +1839,6 @@ struct jtag_interface rlink_interface =
        .name = "rlink",
        .init = rlink_init,
        .quit = rlink_quit,
-       .register_commands = rlink_register_commands,
        .speed = rlink_speed,
        .speed_div = rlink_speed_div,
        .khz = rlink_khz,
diff --git a/src/jtag/tcl.c b/src/jtag/tcl.c
index 1c80245..dcafb73 100644
--- a/src/jtag/tcl.c
+++ b/src/jtag/tcl.c
@@ -636,12 +636,11 @@ COMMAND_HANDLER(handle_interface_command)
                if (strcmp(CMD_ARGV[0], jtag_interfaces[i]->name) != 0)
                        continue;
 
-               if (NULL != jtag_interfaces[i]->register_commands)
-               {
-                       int retval = 
jtag_interfaces[i]->register_commands(CMD_CTX);
-                       if (ERROR_OK != retval)
-                               return retval;
-               }
+               int retval = register_commands(CMD_CTX, NULL,
+                               jtag_interfaces[i]->num_commands,
+                               jtag_interfaces[i]->commands);
+               if (ERROR_OK != retval)
+                       return retval;
 
                jtag_interface = jtag_interfaces[i];
 
diff --git a/src/jtag/vsllink.c b/src/jtag/vsllink.c
index d6a2ec8..fcb6035 100644
--- a/src/jtag/vsllink.c
+++ b/src/jtag/vsllink.c
@@ -1913,16 +1913,11 @@ static const struct command_registration 
vsllink_command_handlers[] = {
                },
        };
 
-static int vsllink_register_commands(struct command_context *cmd_ctx)
-{
-       return register_commands(cmd_ctx, NULL,
-                       ARRAY_SIZE(vsllink_command_handlers),
-                       vsllink_command_handlers);
-}
-
 struct jtag_interface vsllink_interface = {
                .name = "vsllink",
-               .register_commands = &vsllink_register_commands,
+               .num_commands = ARRAY_SIZE(vsllink_command_handlers),
+               .commands = vsllink_command_handlers,
+
                .init = &vsllink_init,
                .quit = &vsllink_quit,
                .khz = &vsllink_khz,
-- 
1.6.4.4

_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to