|
|
|
@ -31,7 +31,8 @@ int do_fpga_md(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) |
|
|
|
|
unsigned int fpga; |
|
|
|
|
ulong addr, length; |
|
|
|
|
int rc = 0; |
|
|
|
|
u16 linebuf[DISP_LINE_LEN/sizeof(u16)]; |
|
|
|
|
u16 linebuf[DISP_LINE_LEN/sizeof(u16)]; |
|
|
|
|
ulong nbytes; |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* We use the last specified parameters, unless new ones are |
|
|
|
@ -63,13 +64,28 @@ int do_fpga_md(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) |
|
|
|
|
length = simple_strtoul(argv[3], NULL, 16); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* Print the lines. */ |
|
|
|
|
for (k = 0; k < DISP_LINE_LEN / sizeof(u16); ++k) |
|
|
|
|
fpga_get_reg(fpga, (u16 *)fpga_ptr[fpga] + k, k * sizeof(u16), |
|
|
|
|
&linebuf[k]); |
|
|
|
|
print_buffer(addr, (void *)linebuf, sizeof(u16), |
|
|
|
|
length, DISP_LINE_LEN / sizeof(u16)); |
|
|
|
|
addr += sizeof(u16)*length; |
|
|
|
|
nbytes = length * sizeof(u16); |
|
|
|
|
do { |
|
|
|
|
ulong linebytes = (nbytes > DISP_LINE_LEN) ? |
|
|
|
|
DISP_LINE_LEN : nbytes; |
|
|
|
|
|
|
|
|
|
for (k = 0; k < linebytes / sizeof(u16); ++k) |
|
|
|
|
fpga_get_reg(fpga, |
|
|
|
|
(u16 *)fpga_ptr[fpga] + addr |
|
|
|
|
/ sizeof(u16) + k, |
|
|
|
|
addr + k * sizeof(u16), |
|
|
|
|
&linebuf[k]); |
|
|
|
|
print_buffer(addr, (void *)linebuf, sizeof(u16), |
|
|
|
|
linebytes / sizeof(u16), |
|
|
|
|
DISP_LINE_LEN / sizeof(u16)); |
|
|
|
|
|
|
|
|
|
nbytes -= linebytes; |
|
|
|
|
addr += linebytes; |
|
|
|
|
if (ctrlc()) { |
|
|
|
|
rc = 1; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} while (nbytes > 0); |
|
|
|
|
|
|
|
|
|
dp_last_fpga = fpga; |
|
|
|
|
dp_last_addr = addr; |
|
|
|
|