Skip to contentSkip to conversation

nand commands: make only "dump" repeatable.

PATCH New Scott Wood 2 participants 2 messages Aug 30, 2010 – Aug 31, 2010

lore
Share & tools
lore

Scott Wood

author
#0 lore raw

PATCH 4/5 nand commands: make only "dump" repeatable.

The dump command is made to increment its address on repeat, as md does. Other commands do not make sense to issue repeatedly, and can be irritating when it happens accidentally, so don't.

---
 common/cmd_nand.c |   21 +++++++++++++--------
 1 files changed, 13 insertions(+), 8 deletions(-)
common/cmd_nand.c +13 -8
index dcccc19..8a81237 100644
@@ -37,10 +37,16 @@ int find_dev_and_part(const char *id, struct mtd_device **dev,
 		      u8 *part_num, struct part_info **part);
 #endif
 
-static int nand_dump(nand_info_t *nand, ulong off, int only_oob)
+static int nand_dump(nand_info_t *nand, ulong off, int only_oob, int repeat)
 {
 	int i;
 	u_char *datbuf, *oobbuf, *p;
+	static loff_t last;
+
+	if (repeat)
+		off = last + nand->writesize;
+
+	last = off;
 
 	datbuf = malloc(nand->writesize + nand->oobsize);
 	oobbuf = malloc(nand->oobsize);
@@ -381,6 +387,7 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
 #endif
 	const char *quiet_str = getenv("quiet");
 	int dev = nand_curr_device;
+	int repeat = flag & CMD_FLAG_REPEAT;
 
 	/* at least two arguments please */
 	if (argc < 2)
@@ -391,6 +398,10 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
 
 	cmd = argv[1];
 
+	/* Only "dump" is repeatable. */
+	if (repeat && strcmp(cmd, "dump"))
+		return 0;
+
 	if (strcmp(cmd, "info") == 0) {
 
 		putc('\n');
@@ -532,16 +543,10 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
 		if (argc < 3)
 			goto usage;
 
-		s = strchr(cmd, '.');
 		off = (int)simple_strtoul(argv[2], NULL, 16);
-
-		if (s != NULL && strcmp(s, ".oob") == 0)
-			ret = nand_dump(nand, off, 1);
-		else
-			ret = nand_dump(nand, off, 0);
+		ret = nand_dump(nand, off, !strcmp(&cmd[4], ".oob"), repeat);
 
 		return ret == 0 ? 1 : 0;
-
 	}
 
 	if (strncmp(cmd, "read", 4) == 0 || strncmp(cmd, "write", 5) == 0) {
Signature · 1 line
1.7.0.4
#1 lore raw

PATCH 4/5 nand commands: make only "dump" repeatable.

Quoted 5 lines · Scott Wood

The dump command is made to increment its address on repeat, as md does. ?Other commands do not make sense to issue repeatedly, and can be irritating when it happens accidentally, so don't.

applies cleanly to 962ad59e25640e586e2bceabf67a628a27f8f508 of
git://git.denx.de/u-boot.git

Tested on da850evm_config with NAND enabled;

Best Regards,
Ben Gardiner

---
Nanometrics Inc.
http://www.nanometrics.ca