diff options
Diffstat (limited to 'drivers/fpga')
| -rw-r--r-- | drivers/fpga/ACEX1K.c | 96 | ||||
| -rw-r--r-- | drivers/fpga/altera.c | 39 | ||||
| -rw-r--r-- | drivers/fpga/cyclon2.c | 91 | ||||
| -rw-r--r-- | drivers/fpga/fpga.c | 53 | ||||
| -rw-r--r-- | drivers/fpga/spartan2.c | 187 | ||||
| -rw-r--r-- | drivers/fpga/spartan3.c | 185 | ||||
| -rw-r--r-- | drivers/fpga/stratixII.c | 24 | ||||
| -rw-r--r-- | drivers/fpga/virtex2.c | 118 | ||||
| -rw-r--r-- | drivers/fpga/xilinx.c | 42 | 
9 files changed, 5 insertions, 830 deletions
| diff --git a/drivers/fpga/ACEX1K.c b/drivers/fpga/ACEX1K.c index 3f7967782..06b4247d8 100644 --- a/drivers/fpga/ACEX1K.c +++ b/drivers/fpga/ACEX1K.c @@ -51,7 +51,6 @@  static int ACEX1K_ps_load( Altera_desc *desc, void *buf, size_t bsize );  static int ACEX1K_ps_dump( Altera_desc *desc, void *buf, size_t bsize );  /* static int ACEX1K_ps_info( Altera_desc *desc ); */ -static int ACEX1K_ps_reloc( Altera_desc *desc, ulong reloc_offset );  /* ------------------------------------------------------------------------- */  /* ACEX1K Generic Implementation */ @@ -101,31 +100,6 @@ int ACEX1K_info( Altera_desc *desc )  } -int ACEX1K_reloc (Altera_desc * desc, ulong reloc_offset) -{ -	int ret_val = FPGA_FAIL;	/* assume a failure */ - -	if (desc->family != Altera_ACEX1K) { -		printf ("%s: Unsupported family type, %d\n", -				__FUNCTION__, desc->family); -		return FPGA_FAIL; -	} else -		switch (desc->iface) { -		case passive_serial: -			ret_val = ACEX1K_ps_reloc (desc, reloc_offset); -			break; - -		/* Add new interface types here */ - -		default: -			printf ("%s: Unsupported interface type, %d\n", -					__FUNCTION__, desc->iface); -		} - -	return ret_val; -} - -  /* ------------------------------------------------------------------------- */  /* ACEX1K Passive Serial Generic Implementation                                  */ @@ -290,73 +264,3 @@ static int ACEX1K_ps_dump (Altera_desc * desc, void *buf, size_t bsize)  			__FUNCTION__);  	return FPGA_FAIL;  } - -static int ACEX1K_ps_reloc (Altera_desc * desc, ulong reloc_offset) -{ -	int ret_val = FPGA_FAIL;	/* assume the worst */ -	Altera_ACEX1K_Passive_Serial_fns *fn_r, *fn = -			(Altera_ACEX1K_Passive_Serial_fns *) (desc->iface_fns); - -	if (fn) { -		ulong addr; - -		/* Get the relocated table address */ -		addr = (ulong) fn + reloc_offset; -		fn_r = (Altera_ACEX1K_Passive_Serial_fns *) addr; - -		if (!fn_r->relocated) { - -			if (memcmp (fn_r, fn, -						sizeof (Altera_ACEX1K_Passive_Serial_fns)) -				== 0) { -				/* good copy of the table, fix the descriptor pointer */ -				desc->iface_fns = fn_r; -			} else { -				PRINTF ("%s: Invalid function table at 0x%p\n", -						__FUNCTION__, fn_r); -				return FPGA_FAIL; -			} - -			PRINTF ("%s: Relocating descriptor at 0x%p\n", __FUNCTION__, -					desc); - -			addr = (ulong) (fn->pre) + reloc_offset; -			fn_r->pre = (Altera_pre_fn) addr; - -			addr = (ulong) (fn->config) + reloc_offset; -			fn_r->config = (Altera_config_fn) addr; - -			addr = (ulong) (fn->status) + reloc_offset; -			fn_r->status = (Altera_status_fn) addr; - -			addr = (ulong) (fn->done) + reloc_offset; -			fn_r->done = (Altera_done_fn) addr; - -			addr = (ulong) (fn->clk) + reloc_offset; -			fn_r->clk = (Altera_clk_fn) addr; - -			addr = (ulong) (fn->data) + reloc_offset; -			fn_r->data = (Altera_data_fn) addr; - -			addr = (ulong) (fn->abort) + reloc_offset; -			fn_r->abort = (Altera_abort_fn) addr; - -			addr = (ulong) (fn->post) + reloc_offset; -			fn_r->post = (Altera_post_fn) addr; - -			fn_r->relocated = TRUE; - -		} else { -			/* this table has already been moved */ -			/* XXX - should check to see if the descriptor is correct */ -			desc->iface_fns = fn_r; -		} - -		ret_val = FPGA_SUCCESS; -	} else { -		printf ("%s: NULL Interface function table!\n", __FUNCTION__); -	} - -	return ret_val; - -} diff --git a/drivers/fpga/altera.c b/drivers/fpga/altera.c index 09dc0b22e..650f2ec73 100644 --- a/drivers/fpga/altera.c +++ b/drivers/fpga/altera.c @@ -211,45 +211,6 @@ int altera_info( Altera_desc *desc )  	return ret_val;  } -int altera_reloc( Altera_desc *desc, ulong reloc_offset) -{ -	int ret_val = FPGA_FAIL;	/* assume a failure */ - -	if (!altera_validate (desc, (char *)__FUNCTION__)) { -		printf ("%s: Invalid device descriptor\n", __FUNCTION__); -	} else { -		switch (desc->family) { -		case Altera_ACEX1K: -#if defined(CONFIG_FPGA_ACEX1K) -			ret_val = ACEX1K_reloc (desc, reloc_offset); -#else -			printf ("%s: No support for ACEX devices.\n", -					__FUNCTION__); -#endif -			break; -#if defined(CONFIG_FPGA_STRATIX_II) -		case Altera_StratixII: -			ret_val = StratixII_reloc (desc, reloc_offset); -			break; -#endif -		case Altera_CYC2: -#if defined(CONFIG_FPGA_CYCLON2) -			ret_val = CYC2_reloc (desc, reloc_offset); -#else -			printf ("%s: No support for CYCLON II devices.\n", -					__FUNCTION__); -#endif -			break; -			/* Add new family types here */ -		default: -			printf ("%s: Unsupported family type, %d\n", -					__FUNCTION__, desc->family); -		} -	} - -	return ret_val; -} -  /* ------------------------------------------------------------------------- */  static int altera_validate (Altera_desc * desc, const char *fn) diff --git a/drivers/fpga/cyclon2.c b/drivers/fpga/cyclon2.c index 3ed64b279..4622b4e45 100644 --- a/drivers/fpga/cyclon2.c +++ b/drivers/fpga/cyclon2.c @@ -50,7 +50,6 @@  static int CYC2_ps_load( Altera_desc *desc, void *buf, size_t bsize );  static int CYC2_ps_dump( Altera_desc *desc, void *buf, size_t bsize );  /* static int CYC2_ps_info( Altera_desc *desc ); */ -static int CYC2_ps_reloc( Altera_desc *desc, ulong reloc_offset );  /* ------------------------------------------------------------------------- */  /* CYCLON2 Generic Implementation */ @@ -99,30 +98,6 @@ int CYC2_info( Altera_desc *desc )  	return FPGA_SUCCESS;  } -int CYC2_reloc (Altera_desc * desc, ulong reloc_offset) -{ -	int ret_val = FPGA_FAIL;	/* assume a failure */ - -	if (desc->family != Altera_CYC2) { -		printf ("%s: Unsupported family type, %d\n", -				__FUNCTION__, desc->family); -		return FPGA_FAIL; -	} else -		switch (desc->iface) { -		case passive_serial: -			ret_val = CYC2_ps_reloc (desc, reloc_offset); -			break; - -		/* Add new interface types here */ - -		default: -			printf ("%s: Unsupported interface type, %d\n", -					__FUNCTION__, desc->iface); -		} - -	return ret_val; -} -  /* ------------------------------------------------------------------------- */  /* CYCLON2 Passive Serial Generic Implementation                                  */  static int CYC2_ps_load (Altera_desc * desc, void *buf, size_t bsize) @@ -233,69 +208,3 @@ static int CYC2_ps_dump (Altera_desc * desc, void *buf, size_t bsize)  			__FUNCTION__);  	return FPGA_FAIL;  } - -static int CYC2_ps_reloc (Altera_desc * desc, ulong reloc_offset) -{ -	int ret_val = FPGA_FAIL;	/* assume the worst */ -	Altera_CYC2_Passive_Serial_fns *fn_r, *fn = -			(Altera_CYC2_Passive_Serial_fns *) (desc->iface_fns); - -	if (fn) { -		ulong addr; - -		/* Get the relocated table address */ -		addr = (ulong) fn + reloc_offset; -		fn_r = (Altera_CYC2_Passive_Serial_fns *) addr; - -		if (!fn_r->relocated) { - -			if (memcmp (fn_r, fn, -						sizeof (Altera_CYC2_Passive_Serial_fns)) -				== 0) { -				/* good copy of the table, fix the descriptor pointer */ -				desc->iface_fns = fn_r; -			} else { -				PRINTF ("%s: Invalid function table at 0x%p\n", -						__FUNCTION__, fn_r); -				return FPGA_FAIL; -			} - -			PRINTF ("%s: Relocating descriptor at 0x%p\n", __FUNCTION__, -					desc); - -			addr = (ulong) (fn->pre) + reloc_offset; -			fn_r->pre = (Altera_pre_fn) addr; - -			addr = (ulong) (fn->config) + reloc_offset; -			fn_r->config = (Altera_config_fn) addr; - -			addr = (ulong) (fn->status) + reloc_offset; -			fn_r->status = (Altera_status_fn) addr; - -			addr = (ulong) (fn->done) + reloc_offset; -			fn_r->done = (Altera_done_fn) addr; - -			addr = (ulong) (fn->write) + reloc_offset; -			fn_r->write = (Altera_write_fn) addr; - -			addr = (ulong) (fn->abort) + reloc_offset; -			fn_r->abort = (Altera_abort_fn) addr; - -			addr = (ulong) (fn->post) + reloc_offset; -			fn_r->post = (Altera_post_fn) addr; - -			fn_r->relocated = TRUE; - -		} else { -			/* this table has already been moved */ -			/* XXX - should check to see if the descriptor is correct */ -			desc->iface_fns = fn_r; -		} - -		ret_val = FPGA_SUCCESS; -	} else { -		printf ("%s: NULL Interface function table!\n", __FUNCTION__); -	} - -	return ret_val; -} diff --git a/drivers/fpga/fpga.c b/drivers/fpga/fpga.c index 67a6c300c..565951779 100644 --- a/drivers/fpga/fpga.c +++ b/drivers/fpga/fpga.c @@ -46,7 +46,6 @@  #endif  /* Local static data */ -static ulong relocation_offset = 0;  static int next_desc = FPGA_INVALID_DEVICE;  static fpga_desc desc_table[CONFIG_MAX_FPGA_DEVICES]; @@ -153,46 +152,12 @@ static int fpga_dev_info( int devnum )  } -/* fpga_reloc - *	generic multiplexing code - */ -int fpga_reloc( fpga_type devtype, void *desc, ulong reloc_off ) -{ -	int ret_val = FPGA_FAIL; - -	PRINTF( "%s: Relocating Device of type %d @ 0x%p with offset %lx\n", -				__FUNCTION__, devtype, desc, reloc_off ); - -	switch ( devtype ) { -	case fpga_xilinx: -#if defined(CONFIG_FPGA_XILINX) -		ret_val = xilinx_reloc( desc, reloc_off ); -#else -		fpga_no_sup( (char *)__FUNCTION__, "Xilinx devices" ); -#endif -		break; -	case fpga_altera: -#if defined(CONFIG_FPGA_ALTERA) -		ret_val = altera_reloc( desc, reloc_off ); -#else -		fpga_no_sup( (char *)__FUNCTION__, "Altera devices" ); -#endif -		break; -	default: -		printf( "%s: Invalid or unsupported device type %d\n", -			__FUNCTION__, devtype ); -	} - -	return ret_val; -} -  /* ------------------------------------------------------------------------- */  /* fgpa_init is usually called from misc_init_r() and MUST be called   * before any of the other fpga functions are used.   */ -void fpga_init( ulong reloc_off ) +void fpga_init(void)  { -	relocation_offset = reloc_off;  	next_desc = 0;  	memset( desc_table, 0, sizeof(desc_table)); @@ -208,9 +173,7 @@ int fpga_count( void )  }  /* fpga_add - *	Attempts to relocate the device/board specific interface code - *	to the proper RAM locations and adds the device descriptor to - *	the device table. + *	Add the device descriptor to the device table.   */  int fpga_add( fpga_type devtype, void *desc )  { @@ -221,15 +184,9 @@ int fpga_add( fpga_type devtype, void *desc )  	} else if (( devtype > fpga_min_type ) && ( devtype < fpga_undefined )) {  		if ( desc ) {  			if ( next_desc < CONFIG_MAX_FPGA_DEVICES ) { -				if ( fpga_reloc( devtype, desc, relocation_offset ) -				  == FPGA_SUCCESS ) { -					devnum = next_desc; -					desc_table[next_desc].devtype = devtype; -					desc_table[next_desc++].devdesc = desc; -				} else { -					printf( "%s: Unable to relocate device interface table!\n", -						__FUNCTION__ ); -				} +				devnum = next_desc; +				desc_table[next_desc].devtype = devtype; +				desc_table[next_desc++].devdesc = desc;  			} else {  				printf( "%s: Exceeded Max FPGA device count\n", __FUNCTION__ );  			} diff --git a/drivers/fpga/spartan2.c b/drivers/fpga/spartan2.c index d745334e9..cd16a9c44 100644 --- a/drivers/fpga/spartan2.c +++ b/drivers/fpga/spartan2.c @@ -51,12 +51,10 @@  static int Spartan2_sp_load( Xilinx_desc *desc, void *buf, size_t bsize );  static int Spartan2_sp_dump( Xilinx_desc *desc, void *buf, size_t bsize );  /* static int Spartan2_sp_info( Xilinx_desc *desc ); */ -static int Spartan2_sp_reloc( Xilinx_desc *desc, ulong reloc_offset );  static int Spartan2_ss_load( Xilinx_desc *desc, void *buf, size_t bsize );  static int Spartan2_ss_dump( Xilinx_desc *desc, void *buf, size_t bsize );  /* static int Spartan2_ss_info( Xilinx_desc *desc ); */ -static int Spartan2_ss_reloc( Xilinx_desc *desc, ulong reloc_offset );  /* ------------------------------------------------------------------------- */  /* Spartan-II Generic Implementation */ @@ -112,33 +110,6 @@ int Spartan2_info( Xilinx_desc *desc )  } -int Spartan2_reloc (Xilinx_desc * desc, ulong reloc_offset) -{ -	int ret_val = FPGA_FAIL;	/* assume a failure */ - -	if (desc->family != Xilinx_Spartan2) { -		printf ("%s: Unsupported family type, %d\n", -				__FUNCTION__, desc->family); -		return FPGA_FAIL; -	} else -		switch (desc->iface) { -		case slave_serial: -			ret_val = Spartan2_ss_reloc (desc, reloc_offset); -			break; - -		case slave_parallel: -			ret_val = Spartan2_sp_reloc (desc, reloc_offset); -			break; - -		default: -			printf ("%s: Unsupported interface type, %d\n", -					__FUNCTION__, desc->iface); -		} - -	return ret_val; -} - -  /* ------------------------------------------------------------------------- */  /* Spartan-II Slave Parallel Generic Implementation */ @@ -340,93 +311,6 @@ static int Spartan2_sp_dump (Xilinx_desc * desc, void *buf, size_t bsize)  } -static int Spartan2_sp_reloc (Xilinx_desc * desc, ulong reloc_offset) -{ -	int ret_val = FPGA_FAIL;	/* assume the worst */ -	Xilinx_Spartan2_Slave_Parallel_fns *fn_r, *fn = -			(Xilinx_Spartan2_Slave_Parallel_fns *) (desc->iface_fns); - -	if (fn) { -		ulong addr; - -		/* Get the relocated table address */ -		addr = (ulong) fn + reloc_offset; -		fn_r = (Xilinx_Spartan2_Slave_Parallel_fns *) addr; - -		if (!fn_r->relocated) { - -			if (memcmp (fn_r, fn, -						sizeof (Xilinx_Spartan2_Slave_Parallel_fns)) -				== 0) { -				/* good copy of the table, fix the descriptor pointer */ -				desc->iface_fns = fn_r; -			} else { -				PRINTF ("%s: Invalid function table at 0x%p\n", -						__FUNCTION__, fn_r); -				return FPGA_FAIL; -			} - -			PRINTF ("%s: Relocating descriptor at 0x%p\n", __FUNCTION__, -					desc); - -			addr = (ulong) (fn->pre) + reloc_offset; -			fn_r->pre = (Xilinx_pre_fn) addr; - -			addr = (ulong) (fn->pgm) + reloc_offset; -			fn_r->pgm = (Xilinx_pgm_fn) addr; - -			addr = (ulong) (fn->init) + reloc_offset; -			fn_r->init = (Xilinx_init_fn) addr; - -			addr = (ulong) (fn->done) + reloc_offset; -			fn_r->done = (Xilinx_done_fn) addr; - -			addr = (ulong) (fn->clk) + reloc_offset; -			fn_r->clk = (Xilinx_clk_fn) addr; - -			addr = (ulong) (fn->err) + reloc_offset; -			fn_r->err = (Xilinx_err_fn) addr; - -			addr = (ulong) (fn->cs) + reloc_offset; -			fn_r->cs = (Xilinx_cs_fn) addr; - -			addr = (ulong) (fn->wr) + reloc_offset; -			fn_r->wr = (Xilinx_wr_fn) addr; - -			addr = (ulong) (fn->rdata) + reloc_offset; -			fn_r->rdata = (Xilinx_rdata_fn) addr; - -			addr = (ulong) (fn->wdata) + reloc_offset; -			fn_r->wdata = (Xilinx_wdata_fn) addr; - -			addr = (ulong) (fn->busy) + reloc_offset; -			fn_r->busy = (Xilinx_busy_fn) addr; - -			addr = (ulong) (fn->abort) + reloc_offset; -			fn_r->abort = (Xilinx_abort_fn) addr; - -			if (fn->post) { -				addr = (ulong) (fn->post) + reloc_offset; -				fn_r->post = (Xilinx_post_fn) addr; -			} - -			fn_r->relocated = TRUE; - -		} else { -			/* this table has already been moved */ -			/* XXX - should check to see if the descriptor is correct */ -			desc->iface_fns = fn_r; -		} - -		ret_val = FPGA_SUCCESS; -	} else { -		printf ("%s: NULL Interface function table!\n", __FUNCTION__); -	} - -	return ret_val; - -} -  /* ------------------------------------------------------------------------- */  static int Spartan2_ss_load (Xilinx_desc * desc, void *buf, size_t bsize) @@ -580,74 +464,3 @@ static int Spartan2_ss_dump (Xilinx_desc * desc, void *buf, size_t bsize)  			__FUNCTION__);  	return FPGA_FAIL;  } - -static int Spartan2_ss_reloc (Xilinx_desc * desc, ulong reloc_offset) -{ -	int ret_val = FPGA_FAIL;	/* assume the worst */ -	Xilinx_Spartan2_Slave_Serial_fns *fn_r, *fn = -			(Xilinx_Spartan2_Slave_Serial_fns *) (desc->iface_fns); - -	if (fn) { -		ulong addr; - -		/* Get the relocated table address */ -		addr = (ulong) fn + reloc_offset; -		fn_r = (Xilinx_Spartan2_Slave_Serial_fns *) addr; - -		if (!fn_r->relocated) { - -			if (memcmp (fn_r, fn, -						sizeof (Xilinx_Spartan2_Slave_Serial_fns)) -				== 0) { -				/* good copy of the table, fix the descriptor pointer */ -				desc->iface_fns = fn_r; -			} else { -				PRINTF ("%s: Invalid function table at 0x%p\n", -						__FUNCTION__, fn_r); -				return FPGA_FAIL; -			} - -			PRINTF ("%s: Relocating descriptor at 0x%p\n", __FUNCTION__, -					desc); - -			if (fn->pre) { -				addr = (ulong) (fn->pre) + reloc_offset; -				fn_r->pre = (Xilinx_pre_fn) addr; -			} - -			addr = (ulong) (fn->pgm) + reloc_offset; -			fn_r->pgm = (Xilinx_pgm_fn) addr; - -			addr = (ulong) (fn->init) + reloc_offset; -			fn_r->init = (Xilinx_init_fn) addr; - -			addr = (ulong) (fn->done) + reloc_offset; -			fn_r->done = (Xilinx_done_fn) addr; - -			addr = (ulong) (fn->clk) + reloc_offset; -			fn_r->clk = (Xilinx_clk_fn) addr; - -			addr = (ulong) (fn->wr) + reloc_offset; -			fn_r->wr = (Xilinx_wr_fn) addr; - -			if (fn->post) { -				addr = (ulong) (fn->post) + reloc_offset; -				fn_r->post = (Xilinx_post_fn) addr; -			} - -			fn_r->relocated = TRUE; - -		} else { -			/* this table has already been moved */ -			/* XXX - should check to see if the descriptor is correct */ -			desc->iface_fns = fn_r; -		} - -		ret_val = FPGA_SUCCESS; -	} else { -		printf ("%s: NULL Interface function table!\n", __FUNCTION__); -	} - -	return ret_val; - -} diff --git a/drivers/fpga/spartan3.c b/drivers/fpga/spartan3.c index 8bb244971..0fe30410a 100644 --- a/drivers/fpga/spartan3.c +++ b/drivers/fpga/spartan3.c @@ -56,12 +56,10 @@  static int Spartan3_sp_load( Xilinx_desc *desc, void *buf, size_t bsize );  static int Spartan3_sp_dump( Xilinx_desc *desc, void *buf, size_t bsize );  /* static int Spartan3_sp_info( Xilinx_desc *desc ); */ -static int Spartan3_sp_reloc( Xilinx_desc *desc, ulong reloc_offset );  static int Spartan3_ss_load( Xilinx_desc *desc, void *buf, size_t bsize );  static int Spartan3_ss_dump( Xilinx_desc *desc, void *buf, size_t bsize );  /* static int Spartan3_ss_info( Xilinx_desc *desc ); */ -static int Spartan3_ss_reloc( Xilinx_desc *desc, ulong reloc_offset );  /* ------------------------------------------------------------------------- */  /* Spartan-II Generic Implementation */ @@ -117,33 +115,6 @@ int Spartan3_info( Xilinx_desc *desc )  } -int Spartan3_reloc (Xilinx_desc * desc, ulong reloc_offset) -{ -	int ret_val = FPGA_FAIL;	/* assume a failure */ - -	if (desc->family != Xilinx_Spartan3) { -		printf ("%s: Unsupported family type, %d\n", -				__FUNCTION__, desc->family); -		return FPGA_FAIL; -	} else -		switch (desc->iface) { -		case slave_serial: -			ret_val = Spartan3_ss_reloc (desc, reloc_offset); -			break; - -		case slave_parallel: -			ret_val = Spartan3_sp_reloc (desc, reloc_offset); -			break; - -		default: -			printf ("%s: Unsupported interface type, %d\n", -					__FUNCTION__, desc->iface); -		} - -	return ret_val; -} - -  /* ------------------------------------------------------------------------- */  /* Spartan-II Slave Parallel Generic Implementation */ @@ -347,91 +318,6 @@ static int Spartan3_sp_dump (Xilinx_desc * desc, void *buf, size_t bsize)  } -static int Spartan3_sp_reloc (Xilinx_desc * desc, ulong reloc_offset) -{ -	int ret_val = FPGA_FAIL;	/* assume the worst */ -	Xilinx_Spartan3_Slave_Parallel_fns *fn_r, *fn = -			(Xilinx_Spartan3_Slave_Parallel_fns *) (desc->iface_fns); - -	if (fn) { -		ulong addr; - -		/* Get the relocated table address */ -		addr = (ulong) fn + reloc_offset; -		fn_r = (Xilinx_Spartan3_Slave_Parallel_fns *) addr; - -		if (!fn_r->relocated) { - -			if (memcmp (fn_r, fn, -						sizeof (Xilinx_Spartan3_Slave_Parallel_fns)) -				== 0) { -				/* good copy of the table, fix the descriptor pointer */ -				desc->iface_fns = fn_r; -			} else { -				PRINTF ("%s: Invalid function table at 0x%p\n", -						__FUNCTION__, fn_r); -				return FPGA_FAIL; -			} - -			PRINTF ("%s: Relocating descriptor at 0x%p\n", __FUNCTION__, -					desc); - -			addr = (ulong) (fn->pre) + reloc_offset; -			fn_r->pre = (Xilinx_pre_fn) addr; - -			addr = (ulong) (fn->pgm) + reloc_offset; -			fn_r->pgm = (Xilinx_pgm_fn) addr; - -			addr = (ulong) (fn->init) + reloc_offset; -			fn_r->init = (Xilinx_init_fn) addr; - -			addr = (ulong) (fn->done) + reloc_offset; -			fn_r->done = (Xilinx_done_fn) addr; - -			addr = (ulong) (fn->clk) + reloc_offset; -			fn_r->clk = (Xilinx_clk_fn) addr; - -			addr = (ulong) (fn->err) + reloc_offset; -			fn_r->err = (Xilinx_err_fn) addr; - -			addr = (ulong) (fn->cs) + reloc_offset; -			fn_r->cs = (Xilinx_cs_fn) addr; - -			addr = (ulong) (fn->wr) + reloc_offset; -			fn_r->wr = (Xilinx_wr_fn) addr; - -			addr = (ulong) (fn->rdata) + reloc_offset; -			fn_r->rdata = (Xilinx_rdata_fn) addr; - -			addr = (ulong) (fn->wdata) + reloc_offset; -			fn_r->wdata = (Xilinx_wdata_fn) addr; - -			addr = (ulong) (fn->busy) + reloc_offset; -			fn_r->busy = (Xilinx_busy_fn) addr; - -			addr = (ulong) (fn->abort) + reloc_offset; -			fn_r->abort = (Xilinx_abort_fn) addr; - -			addr = (ulong) (fn->post) + reloc_offset; -			fn_r->post = (Xilinx_post_fn) addr; - -			fn_r->relocated = TRUE; - -		} else { -			/* this table has already been moved */ -			/* XXX - should check to see if the descriptor is correct */ -			desc->iface_fns = fn_r; -		} - -		ret_val = FPGA_SUCCESS; -	} else { -		printf ("%s: NULL Interface function table!\n", __FUNCTION__); -	} - -	return ret_val; - -} -  /* ------------------------------------------------------------------------- */  static int Spartan3_ss_load (Xilinx_desc * desc, void *buf, size_t bsize) @@ -587,74 +473,3 @@ static int Spartan3_ss_dump (Xilinx_desc * desc, void *buf, size_t bsize)  			__FUNCTION__);  	return FPGA_FAIL;  } - -static int Spartan3_ss_reloc (Xilinx_desc * desc, ulong reloc_offset) -{ -	int ret_val = FPGA_FAIL;	/* assume the worst */ -	Xilinx_Spartan3_Slave_Serial_fns *fn_r, *fn = -			(Xilinx_Spartan3_Slave_Serial_fns *) (desc->iface_fns); - -	if (fn) { -		ulong addr; - -		/* Get the relocated table address */ -		addr = (ulong) fn + reloc_offset; -		fn_r = (Xilinx_Spartan3_Slave_Serial_fns *) addr; - -		if (!fn_r->relocated) { - -			if (memcmp (fn_r, fn, -						sizeof (Xilinx_Spartan3_Slave_Serial_fns)) -				== 0) { -				/* good copy of the table, fix the descriptor pointer */ -				desc->iface_fns = fn_r; -			} else { -				PRINTF ("%s: Invalid function table at 0x%p\n", -						__FUNCTION__, fn_r); -				return FPGA_FAIL; -			} - -			PRINTF ("%s: Relocating descriptor at 0x%p\n", __FUNCTION__, -					desc); - -			if (fn->pre) { -				addr = (ulong) (fn->pre) + reloc_offset; -				fn_r->pre = (Xilinx_pre_fn) addr; -			} - -			addr = (ulong) (fn->pgm) + reloc_offset; -			fn_r->pgm = (Xilinx_pgm_fn) addr; - -			addr = (ulong) (fn->init) + reloc_offset; -			fn_r->init = (Xilinx_init_fn) addr; - -			addr = (ulong) (fn->done) + reloc_offset; -			fn_r->done = (Xilinx_done_fn) addr; - -			addr = (ulong) (fn->clk) + reloc_offset; -			fn_r->clk = (Xilinx_clk_fn) addr; - -			addr = (ulong) (fn->wr) + reloc_offset; -			fn_r->wr = (Xilinx_wr_fn) addr; - -			if (fn->post) { -				addr = (ulong) (fn->post) + reloc_offset; -				fn_r->post = (Xilinx_post_fn) addr; -			} - -			fn_r->relocated = TRUE; - -		} else { -			/* this table has already been moved */ -			/* XXX - should check to see if the descriptor is correct */ -			desc->iface_fns = fn_r; -		} - -		ret_val = FPGA_SUCCESS; -	} else { -		printf ("%s: NULL Interface function table!\n", __FUNCTION__); -	} - -	return ret_val; - -} diff --git a/drivers/fpga/stratixII.c b/drivers/fpga/stratixII.c index 7556dbfb3..8a3a7d872 100644 --- a/drivers/fpga/stratixII.c +++ b/drivers/fpga/stratixII.c @@ -77,30 +77,6 @@ int StratixII_info (Altera_desc * desc)  	return FPGA_SUCCESS;  } -int StratixII_reloc (Altera_desc * desc, ulong reloc_offset) -{ -	int i; -	uint32_t dest = (uint32_t) desc & 0xff000000; - -	/* we assume a relocated code and non relocated code has different upper 8 bits */ -	if (dest != ((uint32_t) desc->iface_fns & 0xff000000)) { -		desc->iface_fns = -		    (void *)((uint32_t) (desc->iface_fns) + reloc_offset); -	} -	for (i = 0; i < sizeof (altera_board_specific_func) / sizeof (void *); -	     i++) { -		if (dest != -		    ((uint32_t) (((void **)(desc->iface_fns))[i]) & 0xff000000)) -		{ -			((void **)(desc->iface_fns))[i] = -			    (void -			     *)(((uint32_t) (((void **)(desc->iface_fns))[i])) + -				reloc_offset); -		} -	} -	return FPGA_SUCCESS; -} -  int StratixII_ps_fpp_dump (Altera_desc * desc, void *buf, size_t bsize)  {  	printf ("Stratix II Fast Passive Parallel dump is not implemented\n"); diff --git a/drivers/fpga/virtex2.c b/drivers/fpga/virtex2.c index 50d092184..d1b4d15b7 100644 --- a/drivers/fpga/virtex2.c +++ b/drivers/fpga/virtex2.c @@ -103,11 +103,9 @@  static int Virtex2_ssm_load (Xilinx_desc * desc, void *buf, size_t bsize);  static int Virtex2_ssm_dump (Xilinx_desc * desc, void *buf, size_t bsize); -static int Virtex2_ssm_reloc (Xilinx_desc * desc, ulong reloc_offset);  static int Virtex2_ss_load (Xilinx_desc * desc, void *buf, size_t bsize);  static int Virtex2_ss_dump (Xilinx_desc * desc, void *buf, size_t bsize); -static int Virtex2_ss_reloc (Xilinx_desc * desc, ulong reloc_offset);  int Virtex2_load (Xilinx_desc * desc, void *buf, size_t bsize)  { @@ -158,31 +156,6 @@ int Virtex2_info (Xilinx_desc * desc)  	return FPGA_SUCCESS;  } -int Virtex2_reloc (Xilinx_desc * desc, ulong reloc_offset) -{ -	int ret_val = FPGA_FAIL; - -	if (desc->family != Xilinx_Virtex2) { -		printf ("%s: Unsupported family type, %d\n", -				__FUNCTION__, desc->family); -		return FPGA_FAIL; -	} else -		switch (desc->iface) { -		case slave_serial: -			ret_val = Virtex2_ss_reloc (desc, reloc_offset); -			break; - -		case slave_selectmap: -			ret_val = Virtex2_ssm_reloc (desc, reloc_offset); -			break; - -		default: -			printf ("%s: Unsupported interface type, %d\n", -					__FUNCTION__, desc->iface); -		} -	return ret_val; -} -  /*   * Virtex-II Slave SelectMap configuration loader. Configuration via   * SelectMap is as follows: @@ -448,81 +421,6 @@ static int Virtex2_ssm_dump (Xilinx_desc * desc, void *buf, size_t bsize)  	return ret_val;  } -/* - * Relocate the addresses in the function table from FLASH (or ROM, - * or whatever) to RAM. - */ -static int Virtex2_ssm_reloc (Xilinx_desc * desc, ulong reloc_offset) -{ -	ulong addr; -	int ret_val = FPGA_FAIL; -	Xilinx_Virtex2_Slave_SelectMap_fns *fn_r, *fn = -			(Xilinx_Virtex2_Slave_SelectMap_fns *) (desc->iface_fns); - -	if (fn) { -		/* -		 * Get the relocated table address -		 */ -		addr = (ulong) fn + reloc_offset; -		fn_r = (Xilinx_Virtex2_Slave_SelectMap_fns *) addr; - -		/* -		 * Check to see if the table has already been relocated.  If not, do -		 * a sanity check to make sure there is a faithful copy of the -		 * FLASH based function table in RAM, then adjust the table. -		 */ -		if (!fn_r->relocated) { -			if (memcmp -				(fn_r, fn, sizeof (Xilinx_Virtex2_Slave_SelectMap_fns)) -				== 0) { -				desc->iface_fns = fn_r; -			} else { -				PRINTF ("%s:%d: Invalid function table at 0x%p\n", -						__FUNCTION__, __LINE__, fn_r); -				return FPGA_FAIL; -			} - -			PRINTF ("%s:%d: Relocating descriptor at 0x%p\n", -					__FUNCTION__, __LINE__, desc); - -			addr = (ulong) (fn->pre) + reloc_offset; -			fn_r->pre = (Xilinx_pre_fn) addr; -			addr = (ulong) (fn->pgm) + reloc_offset; -			fn_r->pgm = (Xilinx_pgm_fn) addr; -			addr = (ulong) (fn->init) + reloc_offset; -			fn_r->init = (Xilinx_init_fn) addr; -			addr = (ulong) (fn->done) + reloc_offset; -			fn_r->done = (Xilinx_done_fn) addr; -			addr = (ulong) (fn->err) + reloc_offset; -			fn_r->err = (Xilinx_err_fn) addr; -			addr = (ulong) (fn->clk) + reloc_offset; -			fn_r->clk = (Xilinx_clk_fn) addr; -			addr = (ulong) (fn->cs) + reloc_offset; -			fn_r->cs = (Xilinx_cs_fn) addr; -			addr = (ulong) (fn->wr) + reloc_offset; -			fn_r->wr = (Xilinx_wr_fn) addr; -			addr = (ulong) (fn->rdata) + reloc_offset; -			fn_r->rdata = (Xilinx_rdata_fn) addr; -			addr = (ulong) (fn->wdata) + reloc_offset; -			fn_r->wdata = (Xilinx_wdata_fn) addr; -			addr = (ulong) (fn->busy) + reloc_offset; -			fn_r->busy = (Xilinx_busy_fn) addr; -			addr = (ulong) (fn->abort) + reloc_offset; -			fn_r->abort = (Xilinx_abort_fn) addr; -			addr = (ulong) (fn->post) + reloc_offset; -			fn_r->post = (Xilinx_post_fn) addr; -			fn_r->relocated = TRUE; -		} else { -			printf ("%s:%d: Function table @0x%p has already been relocated\n", __FUNCTION__, __LINE__, fn_r); -			desc->iface_fns = fn_r; -		} -		ret_val = FPGA_SUCCESS; -	} else { -		printf ("%s: NULL Interface function table!\n", __FUNCTION__); -	} -	return ret_val; -} -  static int Virtex2_ss_load (Xilinx_desc * desc, void *buf, size_t bsize)  {  	printf ("%s: Slave Serial Loading is unsupported\n", __FUNCTION__); @@ -535,20 +433,4 @@ static int Virtex2_ss_dump (Xilinx_desc * desc, void *buf, size_t bsize)  	return FPGA_FAIL;  } -static int Virtex2_ss_reloc (Xilinx_desc * desc, ulong reloc_offset) -{ -	int ret_val = FPGA_FAIL; -	Xilinx_Virtex2_Slave_Serial_fns *fn = -			(Xilinx_Virtex2_Slave_Serial_fns *) (desc->iface_fns); - -	if (fn) { -		printf ("%s:%d: Slave Serial Loading is unsupported\n", -				__FUNCTION__, __LINE__); -	} else { -		printf ("%s:%d: NULL Interface function table!\n", -				__FUNCTION__, __LINE__); -	} -	return ret_val; -} -  /* vim: set ts=4 tw=78: */ diff --git a/drivers/fpga/xilinx.c b/drivers/fpga/xilinx.c index 7b5e8c5bb..08dfdecde 100644 --- a/drivers/fpga/xilinx.c +++ b/drivers/fpga/xilinx.c @@ -238,48 +238,6 @@ int xilinx_info (Xilinx_desc * desc)  	return ret_val;  } -int xilinx_reloc (Xilinx_desc * desc, ulong reloc_offset) -{ -	int ret_val = FPGA_FAIL;	/* assume a failure */ - -	if (!xilinx_validate (desc, (char *)__FUNCTION__)) { -		printf ("%s: Invalid device descriptor\n", __FUNCTION__); -	} else -		switch (desc->family) { -		case Xilinx_Spartan2: -#if defined(CONFIG_FPGA_SPARTAN2) -			ret_val = Spartan2_reloc (desc, reloc_offset); -#else -			printf ("%s: No support for Spartan-II devices.\n", -					__FUNCTION__); -#endif -			break; -		case Xilinx_Spartan3: -#if defined(CONFIG_FPGA_SPARTAN3) -			ret_val = Spartan3_reloc (desc, reloc_offset); -#else -			printf ("%s: No support for Spartan-III devices.\n", -					__FUNCTION__); -#endif -			break; -		case Xilinx_Virtex2: -#if defined(CONFIG_FPGA_VIRTEX2) -			ret_val = Virtex2_reloc (desc, reloc_offset); -#else -			printf ("%s: No support for Virtex-II devices.\n", -					__FUNCTION__); -#endif -			break; -			/* Add new family types here */ -		default: -			printf ("%s: Unsupported family type, %d\n", -					__FUNCTION__, desc->family); -		} - -	return ret_val; -} - -  /* ------------------------------------------------------------------------- */  static int xilinx_validate (Xilinx_desc * desc, char *fn) |