summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Fuchs <matthias.fuchs@esd-electronics.com>2007-12-27 17:13:11 +0100
committerWolfgang Denk <wd@denx.de>2008-01-09 13:37:40 +0100
commitc26acc1a43b31ddca5add42fd0360ff0eee90c80 (patch)
tree913b140d3d90111d61efa70a6b2787c82bf2779c
parent437fc7327f0611f82937858f2d80e4cd61b40984 (diff)
Remove bit swapping in Xilinx Spartan bitfile loading
This patch removes the unnecessary bit swapping when booting .bit files with the 'fpga loadb' command. Signed-off-by: Matthias Fuchs <matthias.fuchs@esd-electronics.com>
-rw-r--r--common/cmd_fpga.c37
1 files changed, 1 insertions, 36 deletions
diff --git a/common/cmd_fpga.c b/common/cmd_fpga.c
index fb24395b58a..f55447ab1fe 100644
--- a/common/cmd_fpga.c
+++ b/common/cmd_fpga.c
@@ -60,12 +60,9 @@ int fpga_loadbitstream(unsigned long dev, char* fpgadata, size_t size)
{
#if defined(CONFIG_FPGA_XILINX)
unsigned int length;
- unsigned char* swapdata;
unsigned int swapsize;
char buffer[80];
- unsigned char *ptr;
unsigned char *dataptr;
- unsigned char data;
unsigned int i;
int rc;
@@ -143,39 +140,7 @@ int fpga_loadbitstream(unsigned long dev, char* fpgadata, size_t size)
dataptr+=4;
printf(" bytes in bitstream = %d\n", swapsize);
- /* check consistency of length obtained */
- if (swapsize >= size) {
- printf("%s: Could not find right length of data in bitstream\n",
- __FUNCTION__);
- return FPGA_FAIL;
- }
-
- /* allocate memory */
- swapdata = (unsigned char *)malloc(swapsize);
- if (swapdata == NULL) {
- printf("%s: Could not allocate %d bytes memory !\n",
- __FUNCTION__, swapsize);
- return FPGA_FAIL;
- }
-
- /* read data into memory and swap bits */
- ptr = swapdata;
- for (i = 0; i < swapsize; i++) {
- data = 0x00;
- data |= (*dataptr & 0x01) << 7;
- data |= (*dataptr & 0x02) << 5;
- data |= (*dataptr & 0x04) << 3;
- data |= (*dataptr & 0x08) << 1;
- data |= (*dataptr & 0x10) >> 1;
- data |= (*dataptr & 0x20) >> 3;
- data |= (*dataptr & 0x40) >> 5;
- data |= (*dataptr & 0x80) >> 7;
- *ptr++ = data;
- dataptr++;
- }
-
- rc = fpga_load(dev, swapdata, swapsize);
- free(swapdata);
+ rc = fpga_load(dev, dataptr, swapsize);
return rc;
#else
printf("Bitstream support only for Xilinx devices\n");