@ -44,100 +44,6 @@ static int fpga_get_op(char *opstr);
# define FPGA_DUMP 3
# define FPGA_LOADMK 4
/* Convert bitstream data and load into the fpga */
int fpga_loadbitstream ( unsigned long dev , char * fpgadata , size_t size )
{
# if defined(CONFIG_FPGA_XILINX)
unsigned int length ;
unsigned int swapsize ;
char buffer [ 80 ] ;
unsigned char * dataptr ;
unsigned int i ;
int rc ;
dataptr = ( unsigned char * ) fpgadata ;
/* 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 ) {
debug ( " %s: Design name id not recognized in bitstream \n " ,
__func__ ) ;
return FPGA_FAIL ;
}
length = ( * dataptr < < 8 ) + * ( dataptr + 1 ) ;
dataptr + = 2 ;
for ( i = 0 ; i < length ; i + + )
buffer [ i ] = * dataptr + + ;
printf ( " design filename = \" %s \" \n " , buffer ) ;
/* get part number (identifier, length, string) */
if ( * dataptr + + ! = 0x62 ) {
printf ( " %s: Part number id not recognized in bitstream \n " ,
__func__ ) ;
return FPGA_FAIL ;
}
length = ( * dataptr < < 8 ) + * ( dataptr + 1 ) ;
dataptr + = 2 ;
for ( i = 0 ; i < length ; i + + )
buffer [ i ] = * dataptr + + ;
printf ( " part number = \" %s \" \n " , buffer ) ;
/* get date (identifier, length, string) */
if ( * dataptr + + ! = 0x63 ) {
printf ( " %s: Date identifier not recognized in bitstream \n " ,
__func__ ) ;
return FPGA_FAIL ;
}
length = ( * dataptr < < 8 ) + * ( dataptr + 1 ) ;
dataptr + = 2 ;
for ( i = 0 ; i < length ; i + + )
buffer [ i ] = * dataptr + + ;
printf ( " date = \" %s \" \n " , buffer ) ;
/* get time (identifier, length, string) */
if ( * dataptr + + ! = 0x64 ) {
printf ( " %s: Time identifier not recognized in bitstream \n " ,
__func__ ) ;
return FPGA_FAIL ;
}
length = ( * dataptr < < 8 ) + * ( dataptr + 1 ) ;
dataptr + = 2 ;
for ( i = 0 ; i < length ; i + + )
buffer [ i ] = * dataptr + + ;
printf ( " time = \" %s \" \n " , buffer ) ;
/* get fpga data length (identifier, length) */
if ( * dataptr + + ! = 0x65 ) {
printf ( " %s: Data length id not recognized in bitstream \n " ,
__func__ ) ;
return FPGA_FAIL ;
}
swapsize = ( ( unsigned int ) * dataptr < < 24 ) +
( ( unsigned int ) * ( dataptr + 1 ) < < 16 ) +
( ( unsigned int ) * ( dataptr + 2 ) < < 8 ) +
( ( unsigned int ) * ( dataptr + 3 ) ) ;
dataptr + = 4 ;
printf ( " bytes in bitstream = %d \n " , swapsize ) ;
rc = fpga_load ( dev , dataptr , swapsize ) ;
return rc ;
# else
printf ( " Bitstream support only for Xilinx devices \n " ) ;
return FPGA_FAIL ;
# endif
}
/* ------------------------------------------------------------------------- */
/* command form:
* fpga < op > < device number > < data addr > < datasize >