
Hi Jagannadha,
On Mon, Dec 31, 2012 at 3:13 AM, Jagannadha Sutradharudu Teki jagannadh.teki@gmail.com wrote:
This patch provides to define a separate functions for parsing read and write instructions by taking instruction argument from user.
So-that the common functions can used in a different levels for parsing read and write instructions.
Signed-off-by: Jagannadha Sutradharudu Teki jagannadh.teki@gmail.com
common/cmd_sf.c | 70 ++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 54 insertions(+), 16 deletions(-)
diff --git a/common/cmd_sf.c b/common/cmd_sf.c index 4cfd48a..d59ecce 100644 --- a/common/cmd_sf.c +++ b/common/cmd_sf.c @@ -234,6 +234,48 @@ static int spi_flash_update(struct spi_flash *flash, u8 wr_inst, u8 rd_inst, return 0; }
+/*
- This function parsed the write instruction for write operation
- Input:
- arg: specified write instruction from user
- Output:
- wr_inst: parsed write instruction for write operation
- Return:
- 1: for Unknown wr_inst from user
- 0: Success
- */
+static int sf_parse_wr_inst_arg(char *arg, u8 *wr_inst) +{
if (strcmp(arg, "pp") == 0)
*wr_inst = CMD_PAGE_PROGRAM;
else
return 1;
return 0;
+}
+/*
- This function parsed the read instruction for read operation
- Input:
- arg: specified read instruction from user
- Output:
- rd_inst: parsed read instruction for write operation
- Return:
- 1: for Unknown rd_inst from user
- 0: Success
- */
+static int sf_parse_rd_inst_arg(char *arg, u8 *rd_inst) +{
if (strcmp(arg, "afr") == 0)
*rd_inst = CMD_READ_ARRAY_FAST;
else
return 1;
return 0;
+}
static int do_spi_flash_read_write(int argc, char * const argv[]) { unsigned long addr; @@ -281,41 +323,37 @@ static int do_spi_flash_read_write(int argc, char * const argv[]) }
if (strcmp(argv[0], "update") == 0) {
if (strcmp(argv[1], "pp") == 0)
wr_inst = CMD_PAGE_PROGRAM;
else {
ret = sf_parse_wr_inst_arg(argv[1], &wr_inst);
if (ret) { printf("SF: Unknown %s wr_inst on 'sf update'\n", argv[1]);
return 1;
return ret; }
if (strcmp(argv[2], "afr") == 0)
rd_inst = CMD_READ_ARRAY_FAST;
else {
Are you removing code you added in a previous patch? Why not just define sf_parse_rd_inst_arg() in the first patch and use it everywhere?
Also do you need to parse differently for read and write? Would be nice to avoid that.
ret = sf_parse_rd_inst_arg(argv[2], &rd_inst);
if (ret) { printf("SF: Unknown %s rd_inst on 'sf update'\n", argv[2]);
return 1;
return ret; } ret = spi_flash_update(flash, wr_inst, rd_inst, offset, len, buf); } else if (strcmp(argv[0], "read") == 0) {
if (strcmp(argv[1], "afr") == 0)
rd_inst = CMD_READ_ARRAY_FAST;
else {
ret = sf_parse_rd_inst_arg(argv[1], &rd_inst);
if (ret) { printf("SF: Unknown %s rd_inst on 'sf read'\n", argv[1]);
return 1;
return ret; } ret = spi_flash_read(flash, rd_inst, offset, len, buf); } else {
if (strcmp(argv[1], "pp") == 0)
wr_inst = CMD_PAGE_PROGRAM;
else {
ret = sf_parse_wr_inst_arg(argv[1], &wr_inst);
if (ret) { printf("SF: Unknown %s wr_inst on 'sf write'\n", argv[1]);
return 1;
return ret; } ret = spi_flash_write(flash, wr_inst, offset, len, buf);
-- 1.7.0.4
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Regards, Simon