|
@@ -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");
|