Abstracts the extended NAND command handling to allow the function
signature to be controlled by __COMMAND_HANDLER.

Signed-off-by: Zachary T Welch <[email protected]>
---
 src/flash/davinci_nand.c            |    6 ++----
 src/flash/lpc3180_nand_controller.c |    2 +-
 src/flash/mx3_nand.c                |    4 +---
 src/flash/nand.h                    |    7 ++++++-
 src/flash/orion_nand.c              |    4 +---
 src/flash/s3c2410_nand.c            |    4 +---
 src/flash/s3c2412_nand.c            |    4 +---
 src/flash/s3c2440_nand.c            |    4 +---
 src/flash/s3c2443_nand.c            |    4 +---
 9 files changed, 15 insertions(+), 24 deletions(-)

diff --git a/src/flash/davinci_nand.c b/src/flash/davinci_nand.c
index 6ecc60a..c2294a0 100644
--- a/src/flash/davinci_nand.c
+++ b/src/flash/davinci_nand.c
@@ -629,9 +629,7 @@ static int davinci_read_page_ecc4infix(struct nand_device_s 
*nand, uint32_t page
        return ERROR_OK;
 }
 
-static int davinci_nand_device_command(struct command_context_s *cmd_ctx,
-               char *cmd, char **args, int argc,
-               struct nand_device_s *nand)
+NAND_DEVICE_COMMAND_HANDLER(davinci_nand_device_command)
 {
        struct davinci_nand *info;
        target_t *target;
@@ -713,7 +711,7 @@ static int davinci_nand_device_command(struct 
command_context_s *cmd_ctx,
        info->cmd = chip | 0x10;
        info->addr = chip | 0x08;
 
-       nand->controller_priv = info;
+       device->controller_priv = info;
 
        info->io.target = target;
        info->io.data = info->data;
diff --git a/src/flash/lpc3180_nand_controller.c 
b/src/flash/lpc3180_nand_controller.c
index 7ab8d33..90b7dd5 100644
--- a/src/flash/lpc3180_nand_controller.c
+++ b/src/flash/lpc3180_nand_controller.c
@@ -29,7 +29,7 @@ static int lpc3180_controller_ready(struct nand_device_s 
*device, int timeout);
 
 /* nand device lpc3180 <target#> <oscillator_frequency>
  */
-static int lpc3180_nand_device_command(struct command_context_s *cmd_ctx, char 
*cmd, char **args, int argc, struct nand_device_s *device)
+NAND_DEVICE_COMMAND_HANDLER(lpc3180_nand_device_command)
 {
        if (argc < 3)
        {
diff --git a/src/flash/mx3_nand.c b/src/flash/mx3_nand.c
index 62603d9..91a6b5c 100644
--- a/src/flash/mx3_nand.c
+++ b/src/flash/mx3_nand.c
@@ -61,9 +61,7 @@ static int imx31_command (struct nand_device_s *device, 
uint8_t command);
 static int imx31_address (struct nand_device_s *device, uint8_t address);
 static int imx31_controller_ready (struct nand_device_s *device, int tout);
 
-static int imx31_nand_device_command (struct command_context_s *cmd_ctx,
-                                     char *cmd, char **args, int argc,
-                                     struct nand_device_s *device)
+NAND_DEVICE_COMMAND_HANDLER(imx31_nand_device_command)
 {
        mx3_nf_controller_t *mx3_nf_info;
        mx3_nf_info = malloc (sizeof (mx3_nf_controller_t));
diff --git a/src/flash/nand.h b/src/flash/nand.h
index 5b19d5a..9258d1e 100644
--- a/src/flash/nand.h
+++ b/src/flash/nand.h
@@ -29,10 +29,13 @@
 
 struct nand_device_s;
 
+#define __NAND_DEVICE_COMMAND(name) \
+               COMMAND_HELPER(name, struct nand_device_s *device)
+
 typedef struct nand_flash_controller_s
 {
        char *name;
-       int (*nand_device_command)(struct command_context_s *cmd_ctx, char 
*cmd, char **args, int argc, struct nand_device_s *device);
+       __NAND_DEVICE_COMMAND((*nand_device_command));
        int (*register_commands)(struct command_context_s *cmd_ctx);
        int (*init)(struct nand_device_s *device);
        int (*reset)(struct nand_device_s *device);
@@ -48,6 +51,8 @@ typedef struct nand_flash_controller_s
        int (*nand_ready)(struct nand_device_s *device, int timeout);
 } nand_flash_controller_t;
 
+#define NAND_DEVICE_COMMAND_HANDLER(name) static __NAND_DEVICE_COMMAND(name)
+
 typedef struct nand_block_s
 {
        uint32_t offset;
diff --git a/src/flash/orion_nand.c b/src/flash/orion_nand.c
index 6e88f82..3bf6e94 100644
--- a/src/flash/orion_nand.c
+++ b/src/flash/orion_nand.c
@@ -125,9 +125,7 @@ static int orion_nand_register_commands(struct 
command_context_s *cmd_ctx)
        return ERROR_OK;
 }
 
-int orion_nand_device_command(struct command_context_s *cmd_ctx, char *cmd,
-                             char **args, int argc,
-                             struct nand_device_s *device)
+NAND_DEVICE_COMMAND_HANDLER(orion_nand_device_command)
 {
        orion_nand_controller_t *hw;
        uint32_t base;
diff --git a/src/flash/s3c2410_nand.c b/src/flash/s3c2410_nand.c
index 2d47fee..265bb71 100644
--- a/src/flash/s3c2410_nand.c
+++ b/src/flash/s3c2410_nand.c
@@ -30,9 +30,7 @@
 
 #include "s3c24xx_nand.h"
 
-static int s3c2410_nand_device_command(struct command_context_s *cmd_ctx, char 
*cmd,
-                               char **args, int argc,
-                               struct nand_device_s *device)
+NAND_DEVICE_COMMAND_HANDLER(s3c2410_nand_device_command)
 {
        s3c24xx_nand_controller_t *info;
        CALL_S3C24XX_DEVICE_COMMAND(device, &info);
diff --git a/src/flash/s3c2412_nand.c b/src/flash/s3c2412_nand.c
index feae673..61c56fc 100644
--- a/src/flash/s3c2412_nand.c
+++ b/src/flash/s3c2412_nand.c
@@ -30,9 +30,7 @@
 
 #include "s3c24xx_nand.h"
 
-static int s3c2412_nand_device_command(struct command_context_s *cmd_ctx, char 
*cmd,
-                               char **args, int argc,
-                               struct nand_device_s *device)
+NAND_DEVICE_COMMAND_HANDLER(s3c2412_nand_device_command)
 {
        s3c24xx_nand_controller_t *info;
        CALL_S3C24XX_DEVICE_COMMAND(device, &info);
diff --git a/src/flash/s3c2440_nand.c b/src/flash/s3c2440_nand.c
index d220456..4b63256 100644
--- a/src/flash/s3c2440_nand.c
+++ b/src/flash/s3c2440_nand.c
@@ -31,9 +31,7 @@
 #include "s3c24xx_nand.h"
 
 
-static int s3c2440_nand_device_command(struct command_context_s *cmd_ctx, char 
*cmd,
-                               char **args, int argc,
-                               struct nand_device_s *device)
+NAND_DEVICE_COMMAND_HANDLER(s3c2440_nand_device_command)
 {
        s3c24xx_nand_controller_t *info;
        CALL_S3C24XX_DEVICE_COMMAND(device, &info);
diff --git a/src/flash/s3c2443_nand.c b/src/flash/s3c2443_nand.c
index 1a25242..d5866bc 100644
--- a/src/flash/s3c2443_nand.c
+++ b/src/flash/s3c2443_nand.c
@@ -31,9 +31,7 @@
 #include "s3c24xx_nand.h"
 
 
-static int s3c2443_nand_device_command(struct command_context_s *cmd_ctx, char 
*cmd,
-                               char **args, int argc,
-                               struct nand_device_s *device)
+NAND_DEVICE_COMMAND_HANDLER(s3c2443_nand_device_command)
 {
        s3c24xx_nand_controller_t *info;
        CALL_S3C24XX_DEVICE_COMMAND(device, &info);
-- 
1.6.4.4

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

Reply via email to