mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-20 22:21:41 +00:00
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>
This commit is contained in:
parent
437fc7327f
commit
c26acc1a43
1 changed files with 1 additions and 36 deletions
|
@ -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)
|
||||||
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");
|
||||||
|
|
Loading…
Add table
Reference in a new issue