From 670f999e7a1ec04cda599a5487de068379e36f0e Mon Sep 17 00:00:00 2001 From: Zachary T Welch Date: Tue, 10 Nov 2009 00:53:40 -0800 Subject: [PATCH] nand: add NAND_DEVICE_COMMAND_HANDLER macro Abstracts the extended NAND command handling to allow the function signature to be controlled by __COMMAND_HANDLER. --- src/flash/davinci_nand.c | 4 +--- 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, 14 insertions(+), 23 deletions(-) diff --git a/src/flash/davinci_nand.c b/src/flash/davinci_nand.c index 6ecc60a25d..b3164abfc7 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; diff --git a/src/flash/lpc3180_nand_controller.c b/src/flash/lpc3180_nand_controller.c index 4b120779e9..41cc33eecd 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 *nand, int timeout); /* nand device lpc3180 */ -static int lpc3180_nand_device_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc, struct nand_device_s *nand) +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 f6a75ef799..a51f8c8d56 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 *nand, uint8_t command); static int imx31_address (struct nand_device_s *nand, uint8_t address); static int imx31_controller_ready (struct nand_device_s *nand, int tout); -static int imx31_nand_device_command (struct command_context_s *cmd_ctx, - char *cmd, char **args, int argc, - struct nand_device_s *nand) +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 d96e288939..57076d5485 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 *nand) + 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 *nand); + __NAND_DEVICE_COMMAND((*nand_device_command)); int (*register_commands)(struct command_context_s *cmd_ctx); int (*init)(struct nand_device_s *nand); int (*reset)(struct nand_device_s *nand); @@ -48,6 +51,8 @@ typedef struct nand_flash_controller_s int (*nand_ready)(struct nand_device_s *nand, 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 471c562a23..b112c9e3dc 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 *nand) +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 176a1a416a..5badf1a4af 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 *nand) +NAND_DEVICE_COMMAND_HANDLER(s3c2410_nand_device_command) { s3c24xx_nand_controller_t *info; CALL_S3C24XX_DEVICE_COMMAND(nand, &info); diff --git a/src/flash/s3c2412_nand.c b/src/flash/s3c2412_nand.c index 7b65f84da5..958f013d05 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 *nand) +NAND_DEVICE_COMMAND_HANDLER(s3c2412_nand_device_command) { s3c24xx_nand_controller_t *info; CALL_S3C24XX_DEVICE_COMMAND(nand, &info); diff --git a/src/flash/s3c2440_nand.c b/src/flash/s3c2440_nand.c index c6d658d45e..80020f63de 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 *nand) +NAND_DEVICE_COMMAND_HANDLER(s3c2440_nand_device_command) { s3c24xx_nand_controller_t *info; CALL_S3C24XX_DEVICE_COMMAND(nand, &info); diff --git a/src/flash/s3c2443_nand.c b/src/flash/s3c2443_nand.c index 6e92021dfd..af7d9a9aa0 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 *nand) +NAND_DEVICE_COMMAND_HANDLER(s3c2443_nand_device_command) { s3c24xx_nand_controller_t *info; CALL_S3C24XX_DEVICE_COMMAND(nand, &info); -- 2.30.2