common: Fix cmd_fpgad addressing
Addressing was completely broken for cmd_fpgad. Signed-off-by: Dirk Eibach <dirk.eibach@gdsys.cc> Signed-off-by: Stefan Roese <sr@denx.de>
This commit is contained in:
parent
f3c89d9228
commit
f1cdde2833
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user