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
