Add pre and post configuration callbacks for Spartan FPGAs
PATCH RESEND 2/5 Add pre and post configuration callbacks for Spartan FPGAs
This patch adds a post configuration callback for Spartan2/3 FPGAs. pre and post configuration callback are now optional and not called when the function pointer is set to NULL.
Signed-off-by Matthias Fuchs <[email protected]>
--- common/spartan2.c | 18 ++++++++++++++++-- common/spartan3.c | 18 ++++++++++++++++-- include/spartan2.h | 1 + include/spartan3.h | 1 + 4 files changed, 34 insertions(+), 4 deletions(-)
common/spartan2.c +16 -2
@@ -561,6 +561,13 @@ static int Spartan2_ss_load (Xilinx_desc * desc, void *buf, size_t bsize) }putc ('\n' );/* terminate the dotted line */ +/* +* Run the post configuration function if there is one. +*/ +if (*fn->post) { + (*fn->post) (cookie); + } +#ifdef CFG_FPGA_PROG_FEEDBACK if (ret_val ==FPGA_SUCCESS ) {puts ("Done.\n" );
@@ -615,8 +622,10 @@ static int Spartan2_ss_reloc (Xilinx_desc * desc, ulong reloc_offset)PRINTF ("%s: Relocating descriptor at 0x%p\n" , __FUNCTION__, desc); - addr = (ulong) (fn->pre) + reloc_offset; - fn_r->pre = (Xilinx_pre_fn ) addr; +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;
@@ -633,6 +642,11 @@ static int Spartan2_ss_reloc (Xilinx_desc * desc, ulong reloc_offset) 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 {
common/spartan3.c +16 -2
@@ -566,6 +566,13 @@ static int Spartan3_ss_load (Xilinx_desc * desc, void *buf, size_t bsize) }putc ('\n' );/* terminate the dotted line */ +/* +* Run the post configuration function if there is one. +*/ +if (*fn->post) { + (*fn->post) (cookie); + } +#ifdef CFG_FPGA_PROG_FEEDBACK if (ret_val ==FPGA_SUCCESS ) {puts ("Done.\n" );
@@ -620,8 +627,10 @@ static int Spartan3_ss_reloc (Xilinx_desc * desc, ulong reloc_offset)PRINTF ("%s: Relocating descriptor at 0x%p\n" , __FUNCTION__, desc); - addr = (ulong) (fn->pre) + reloc_offset; - fn_r->pre = (Xilinx_pre_fn ) addr; +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;
@@ -638,6 +647,11 @@ static int Spartan3_ss_reloc (Xilinx_desc * desc, ulong reloc_offset) 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 {
include/spartan2.h +1 -0
@@ -58,6 +58,7 @@ typedef struct {Xilinx_init_fn init;Xilinx_done_fn done;Xilinx_wr_fn wr; +Xilinx_post_fn post;int relocated; } Xilinx_Spartan2_Slave_Serial_fns;
include/spartan3.h +1 -0
@@ -58,6 +58,7 @@ typedef struct {Xilinx_init_fn init;Xilinx_done_fn done;Xilinx_wr_fn wr; +Xilinx_post_fn post;int relocated; } Xilinx_Spartan3_Slave_Serial_fns;
Signature · 1 line
1.5.3
Wolfgang Denk
AppliedPATCH RESEND 2/5 Add pre and post configuration callbacks for Spartan FPGAs
Quoted 5 lines · In message <[email protected]> you wrote:
This patch adds a post configuration callback for Spartan2/3 FPGAs. pre and post configuration callback are now optional and not called when the function pointer is set to NULL.
Signed-off-by Matthias Fuchs <[email protected]>
Applied, thanks.
Best regards,
Wolfgang Denk
Signature · 4 lines
Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de Cogito cogito ergo cogito sum - "I think that I think, therefore I think that I am." - Ambrose Bierce, "The Devil's Dictionary"