esd/common: extend cpld command with address parameter

This patch adds support for an address parameter to esd's
cpld command. This is in preparation to remove compiled-in
binary cpld (xsvf) bitstreams.

Signed-off-by: Matthias Fuchs <matthias.fuchs@esd.eu>
Signed-off-by: Stefan Roese <sr@denx.de>
This commit is contained in:
Matthias Fuchs 2009-04-29 09:50:56 +02:00 committed by Wolfgang Denk
parent 9166b77635
commit c1b2f79788
2 changed files with 20 additions and 14 deletions

View File

@ -66,10 +66,7 @@
#include "lenval.h" #include "lenval.h"
#include "ports.h" #include "ports.h"
const unsigned char *xsvfdata;
extern const unsigned char fpgadata[];
extern int filesize;
/*============================================================================ /*============================================================================
* XSVF #define * XSVF #define
@ -1838,12 +1835,23 @@ int do_cpld(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
unsigned long duration; unsigned long duration;
unsigned long long startClock, endClock; unsigned long long startClock, endClock;
if (argc == 2)
xsvfdata = (unsigned char *)simple_strtoul(argv[1], NULL, 16);
else {
#ifdef CONFIG_SYS_XSVF_DEFAULT_ADDR
xsvfdata = (unsigned char *)CONFIG_SYS_XSVF_DEFAULT_ADDR;
#else
printf("Usage:\ncpld %s\n", cmdtp->help);
return -1;
#endif
}
iErrorCode = XSVF_ERRORCODE( XSVF_ERROR_NONE ); iErrorCode = XSVF_ERRORCODE( XSVF_ERROR_NONE );
pzXsvfFileName = 0; pzXsvfFileName = 0;
xsvf_iDebugLevel = 0; xsvf_iDebugLevel = 0;
printf("XSVF Player v%s, Xilinx, Inc.\n", XSVF_VERSION); printf("XSVF Player v%s, Xilinx, Inc.\n", XSVF_VERSION);
printf("XSVF Filesize = %d bytes\n", filesize); printf("Reading XSVF data @ %p\n", xsvfdata);
/* Initialize the I/O. SetPort initializes I/O on first call */ /* Initialize the I/O. SetPort initializes I/O on first call */
setPort( TMS, 1 ); setPort( TMS, 1 );
@ -1858,7 +1866,7 @@ int do_cpld(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
return( iErrorCode ); return( iErrorCode );
} }
U_BOOT_CMD( U_BOOT_CMD(
cpld, 1, 1, do_cpld, cpld, 2, 1, do_cpld,
"Program onboard CPLD", "program onboard CPLD",
NULL "<xsvf-addr>"
); );

View File

@ -42,9 +42,7 @@ static int oldstate = 0;
static int newstate = 0; static int newstate = 0;
static int readptr = 0; static int readptr = 0;
extern long filesize; extern const unsigned char *xsvfdata;
extern const unsigned char fpgadata[];
/* if in debugging mode, then just set the variables */ /* if in debugging mode, then just set the variables */
void setPort(short p,short val) void setPort(short p,short val)
@ -86,10 +84,10 @@ void pulseClock(void)
void readByte(unsigned char *data) void readByte(unsigned char *data)
{ {
/* pretend reading using a file */ /* pretend reading using a file */
*data = fpgadata[readptr++]; *data = xsvfdata[readptr++];
newstate = (100 * filepos++) / filesize; newstate = filepos++ >> 10;
if (newstate != oldstate) { if (newstate != oldstate) {
printf("%4d\r\r\r\r", newstate); printf("%4d kB\r\r\r\r", newstate);
oldstate = newstate; oldstate = newstate;
} }
} }