Skip to content
Snippets Groups Projects
Commit c26acc1a authored by Matthias Fuchs's avatar Matthias Fuchs Committed by Wolfgang Denk
Browse files

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: default avatarMatthias Fuchs <matthias.fuchs@esd-electronics.com>
parent 437fc732
No related branches found
No related tags found
No related merge requests found
...@@ -60,12 +60,9 @@ int fpga_loadbitstream(unsigned long dev, char* fpgadata, size_t size) ...@@ -60,12 +60,9 @@ int fpga_loadbitstream(unsigned long dev, char* fpgadata, size_t size)
{ {
#if defined(CONFIG_FPGA_XILINX) #if defined(CONFIG_FPGA_XILINX)
unsigned int length; unsigned int length;
unsigned char* swapdata;
unsigned int swapsize; unsigned int swapsize;
char buffer[80]; char buffer[80];
unsigned char *ptr;
unsigned char *dataptr; unsigned char *dataptr;
unsigned char data;
unsigned int i; unsigned int i;
int rc; int rc;
...@@ -143,39 +140,7 @@ int fpga_loadbitstream(unsigned long dev, char* fpgadata, size_t size) ...@@ -143,39 +140,7 @@ int fpga_loadbitstream(unsigned long dev, char* fpgadata, size_t size)
dataptr+=4; dataptr+=4;
printf(" bytes in bitstream = %d\n", swapsize); printf(" bytes in bitstream = %d\n", swapsize);
/* check consistency of length obtained */ rc = fpga_load(dev, dataptr, swapsize);
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);
return rc; return rc;
#else #else
printf("Bitstream support only for Xilinx devices\n"); printf("Bitstream support only for Xilinx devices\n");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment