diff options
| -rw-r--r-- | drivers/fpga/spartan3.c | 6 | ||||
| -rw-r--r-- | include/spartan3.h | 1 | 
2 files changed, 7 insertions, 0 deletions
| diff --git a/drivers/fpga/spartan3.c b/drivers/fpga/spartan3.c index 7a89b5692..1dd6f26f9 100644 --- a/drivers/fpga/spartan3.c +++ b/drivers/fpga/spartan3.c @@ -366,6 +366,8 @@ static int Spartan3_ss_load (Xilinx_desc * desc, void *buf, size_t bsize)  			CONFIG_FPGA_DELAY ();  			if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT) {	/* check the time */  				puts ("** Timeout waiting for INIT to start.\n"); +				if (*fn->abort) +					(*fn->abort) (cookie);  				return FPGA_FAIL;  			}  		} while (!(*fn->init) (cookie)); @@ -380,6 +382,8 @@ static int Spartan3_ss_load (Xilinx_desc * desc, void *buf, size_t bsize)  			CONFIG_FPGA_DELAY ();  			if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT) {	/* check the time */  				puts ("** Timeout waiting for INIT to clear.\n"); +				if (*fn->abort) +					(*fn->abort) (cookie);  				return FPGA_FAIL;  			}  		} while ((*fn->init) (cookie)); @@ -394,6 +398,8 @@ static int Spartan3_ss_load (Xilinx_desc * desc, void *buf, size_t bsize)  				   while DONE is low (inactive) */  				if ((*fn->done) (cookie) == 0 && (*fn->init) (cookie)) {  					puts ("** CRC error during FPGA load.\n"); +					if (*fn->abort) +						(*fn->abort) (cookie);  					return (FPGA_FAIL);  				}  				val = data [bytecount ++]; diff --git a/include/spartan3.h b/include/spartan3.h index d5a589d09..0f0b40085 100644 --- a/include/spartan3.h +++ b/include/spartan3.h @@ -58,6 +58,7 @@ typedef struct {  	Xilinx_wr_fn	wr;  	Xilinx_post_fn	post;  	Xilinx_bwr_fn	bwr; /* block write function */ +	Xilinx_abort_fn abort;  } Xilinx_Spartan3_Slave_Serial_fns;  /* Device Image Sizes |