Index: cmd_fpga.c =================================================================== RCS file: /cvsroot/u-boot/u-boot/common/cmd_fpga.c,v retrieving revision 1.9 diff -p -u -r1.9 cmd_fpga.c --- cmd_fpga.c 9 Jan 2005 18:21:43 -0000 1.9 +++ cmd_fpga.c 12 Jan 2005 05:26:29 -0000 @@ -31,6 +31,7 @@ #include #endif #include +#include #if 0 #define FPGA_DEBUG @@ -58,25 +59,29 @@ static int fpga_get_op (char *opstr); /* Convert bitstream data and load into the fpga */ int fpga_loadbitstream(unsigned long dev, char* fpgadata, size_t size) { - int length; - char* swapdata; - int swapsize; + unsigned int length; + unsigned char* swapdata; + unsigned int swapsize; char buffer[80]; - char *ptr; - char *dataptr; - int data; - int i; + unsigned char *ptr; + unsigned char *dataptr; + unsigned char data; + unsigned int i; int rc; dataptr = fpgadata; #if CFG_FPGA_XILINX - /* skip the first 13 bytes of the bitsteam, their meaning is unknown */ - dataptr+=13; + /* skip the first bytes of the bitsteam, their meaning is unknown */ + length = (*dataptr << 8) + *(dataptr+1); + dataptr+=2; + dataptr+=length; /* get design name (identifier, length, string) */ + length = (*dataptr << 8) + *(dataptr+1); + dataptr+=2; if (*dataptr++ != 0x61) { - PRINTF(__FUNCTION__ ": Design name identifier not recognized in bitstream.\n"); + PRINTF("%s: Design name identifier not recognized in bitstream.\n", __FUNCTION__ ); return FPGA_FAIL; } @@ -85,61 +90,67 @@ int fpga_loadbitstream(unsigned long dev for(i=0;i= size) { - printf(__FUNCTION__ ": Could not find right length of data in bitstream.\n"); + printf("%s: Could not find right length of data in bitstream.\n", __FUNCTION__); return FPGA_FAIL; } /* allocate memory */ - swapdata = (char *)malloc(swapsize); + swapdata = (unsigned char *)malloc(swapsize); if (swapdata == NULL) { - printf(__FUNCTION__ ": Could not allocate %d bytes memory !\n",swapsize); + printf("%s: Could not allocate %d bytes memory !\n", __FUNCTION__, swapsize); return FPGA_FAIL; } @@ -195,26 +206,26 @@ int do_fpga (cmd_tbl_t * cmdtp, int flag data_size = simple_strtoul (argv[4], NULL, 16); case 4: /* fpga */ fpga_data = (void *) simple_strtoul (argv[3], NULL, 16); - PRINTF (__FUNCTION__ ": fpga_data = 0x%x\n", + PRINTF ("%s: fpga_data = 0x%x\n", __FUNCTION__, (uint) fpga_data); case 3: /* fpga */ dev = (int) simple_strtoul (argv[2], NULL, 16); - PRINTF (__FUNCTION__ ": device = %d\n", dev); + PRINTF ("%s: device = %d\n", __FUNCTION__, dev); /* FIXME - this is a really weak test */ if ((argc == 3) && (dev > fpga_count ())) { /* must be buffer ptr */ - PRINTF (__FUNCTION__ - ": Assuming buffer pointer in arg 3\n"); + PRINTF ("%s: Assuming buffer pointer in arg 3\n", + __FUNCTION__); fpga_data = (void *) dev; - PRINTF (__FUNCTION__ ": fpga_data = 0x%x\n", - (uint) fpga_data); + PRINTF ("%s: fpga_data = 0x%x\n", + __FUNCTION__, (uint) fpga_data); dev = FPGA_INVALID_DEVICE; /* reset device num */ } case 2: /* fpga */ op = (int) fpga_get_op (argv[1]); break; default: - PRINTF (__FUNCTION__ ": Too many or too few args (%d)\n", - argc); + PRINTF ("%s: Too many or too few args (%d)\n", + __FUNCTION__, argc); op = FPGA_NONE; /* force usage display */ break; }