Patchwork [U-Boot,v4,2/6] sandbox: spi: Adjust 'sf test' to work on sandbox

login
register
mail settings
Submitter Simon Glass
Date June 24, 2013, 10:36 p.m.
Message ID <1372113389-9415-3-git-send-email-sjg@chromium.org>
Download mbox | patch
Permalink /patch/253983/
State Superseded
Delegated to: Jagannadha Sutradharudu Teki
Headers show

Comments

Simon Glass - June 24, 2013, 10:36 p.m.
Add map_sysmem() calls so that this test works correctly on sandbox.

Signed-off-by: Simon Glass <sjg@chromium.org>
---
Changes in v4:
- Add new patch to make 'sf test' work on sandbox

Changes in v3: None
Changes in v2: None

 common/cmd_sf.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

Patch

diff --git a/common/cmd_sf.c b/common/cmd_sf.c
index 19b0dc9..55a1c52 100644
--- a/common/cmd_sf.c
+++ b/common/cmd_sf.c
@@ -345,7 +345,8 @@  static void show_time(struct test_info *test, int stage)
 	int bps;	/* Bits per second */
 
 	speed = (long long)test->bytes * 1000;
-	do_div(speed, test->time_ms[stage] * 1024);
+	if (test->time_ms[stage])
+		do_div(speed, test->time_ms[stage] * 1024);
 	bps = speed * 8;
 
 	printf("%d %s: %d ticks, %d KiB/s %d.%03d Mbps\n", stage,
@@ -433,11 +434,13 @@  static int do_spi_flash_test(int argc, char * const argv[])
 {
 	unsigned long offset;
 	unsigned long len;
-	uint8_t *buf = (uint8_t *)CONFIG_SYS_TEXT_BASE;
+	uint8_t *buf, *from;
 	char *endp;
 	uint8_t *vbuf;
 	int ret;
 
+	if (argc < 3)
+		return -1;
 	offset = simple_strtoul(argv[1], &endp, 16);
 	if (*argv[1] == 0 || *endp != 0)
 		return -1;
@@ -447,17 +450,18 @@  static int do_spi_flash_test(int argc, char * const argv[])
 
 	vbuf = malloc(len);
 	if (!vbuf) {
-		printf("Cannot allocate memory\n");
+		printf("Cannot allocate memory (%lu bytes)\n", len);
 		return 1;
 	}
 	buf = malloc(len);
 	if (!buf) {
 		free(vbuf);
-		printf("Cannot allocate memory\n");
+		printf("Cannot allocate memory (%lu bytes)\n", len);
 		return 1;
 	}
 
-	memcpy(buf, (char *)CONFIG_SYS_TEXT_BASE, len);
+	from = map_sysmem(CONFIG_SYS_TEXT_BASE, 0);
+	memcpy(buf, from, len);
 	ret = spi_flash_test(flash, buf, len, offset, vbuf);
 	free(vbuf);
 	free(buf);