1c609719bSwdenk /* 2c609719bSwdenk * (C) Copyright 2002 3c609719bSwdenk * Rich Ireland, Enterasys Networks, rireland@enterasys.com. 4c609719bSwdenk * 5c609719bSwdenk * See file CREDITS for list of people who contributed to this 6c609719bSwdenk * project. 7c609719bSwdenk * 8c609719bSwdenk * This program is free software; you can redistribute it and/or 9c609719bSwdenk * modify it under the terms of the GNU General Public License as 10c609719bSwdenk * published by the Free Software Foundation; either version 2 of 11c609719bSwdenk * the License, or (at your option) any later version. 12c609719bSwdenk * 13c609719bSwdenk * This program is distributed in the hope that it will be useful, 14c609719bSwdenk * but WITHOUT ANY WARRANTY; without even the implied warranty of 15c609719bSwdenk * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16c609719bSwdenk * GNU General Public License for more details. 17c609719bSwdenk * 18c609719bSwdenk * You should have received a copy of the GNU General Public License 19c609719bSwdenk * along with this program; if not, write to the Free Software 20c609719bSwdenk * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 21c609719bSwdenk * MA 02111-1307 USA 22c609719bSwdenk * 23c609719bSwdenk */ 24c609719bSwdenk 25c609719bSwdenk #ifndef _SPARTAN2_H_ 26c609719bSwdenk #define _SPARTAN2_H_ 27c609719bSwdenk 28c609719bSwdenk #include <xilinx.h> 29c609719bSwdenk 30c609719bSwdenk extern int Spartan2_load( Xilinx_desc *desc, void *image, size_t size ); 31c609719bSwdenk extern int Spartan2_dump( Xilinx_desc *desc, void *buf, size_t bsize ); 32c609719bSwdenk extern int Spartan2_info( Xilinx_desc *desc ); 33c609719bSwdenk extern int Spartan2_reloc( Xilinx_desc *desc, ulong reloc_off ); 34c609719bSwdenk 35c609719bSwdenk /* Slave Parallel Implementation function table */ 36c609719bSwdenk typedef struct { 37c609719bSwdenk Xilinx_pre_fn pre; 38c609719bSwdenk Xilinx_pgm_fn pgm; 39c609719bSwdenk Xilinx_init_fn init; 40c609719bSwdenk Xilinx_err_fn err; 41c609719bSwdenk Xilinx_done_fn done; 42c609719bSwdenk Xilinx_clk_fn clk; 43c609719bSwdenk Xilinx_cs_fn cs; 44c609719bSwdenk Xilinx_wr_fn wr; 45c609719bSwdenk Xilinx_rdata_fn rdata; 46c609719bSwdenk Xilinx_wdata_fn wdata; 47c609719bSwdenk Xilinx_busy_fn busy; 48c609719bSwdenk Xilinx_abort_fn abort; 49c609719bSwdenk Xilinx_post_fn post; 50c609719bSwdenk int relocated; 51c609719bSwdenk } Xilinx_Spartan2_Slave_Parallel_fns; 52c609719bSwdenk 53c609719bSwdenk /* Slave Serial Implementation function table */ 54c609719bSwdenk typedef struct { 55*7f6c2cbcSwdenk Xilinx_pre_fn pre; 56c609719bSwdenk Xilinx_pgm_fn pgm; 57c609719bSwdenk Xilinx_clk_fn clk; 58*7f6c2cbcSwdenk Xilinx_init_fn init; 59*7f6c2cbcSwdenk Xilinx_done_fn done; 60*7f6c2cbcSwdenk Xilinx_wr_fn wr; 61c609719bSwdenk int relocated; 62c609719bSwdenk } Xilinx_Spartan2_Slave_Serial_fns; 63c609719bSwdenk 64c609719bSwdenk /* Device Image Sizes 65c609719bSwdenk *********************************************************************/ 66c609719bSwdenk /* Spartan-II (2.5V) */ 67c609719bSwdenk #define XILINX_XC2S15_SIZE 197728/8 68c609719bSwdenk #define XILINX_XC2S30_SIZE 336800/8 69c609719bSwdenk #define XILINX_XC2S50_SIZE 559232/8 70c609719bSwdenk #define XILINX_XC2S100_SIZE 781248/8 71c609719bSwdenk #define XILINX_XC2S150_SIZE 1040128/8 72c609719bSwdenk 73c609719bSwdenk /* Descriptor Macros 74c609719bSwdenk *********************************************************************/ 75c609719bSwdenk /* Spartan-II devices */ 76c609719bSwdenk #define XILINX_XC2S15_DESC(iface, fn_table, cookie) \ 77c609719bSwdenk { Xilinx_Spartan2, iface, XILINX_XC2S15_SIZE, fn_table, cookie } 78c609719bSwdenk 79c609719bSwdenk #define XILINX_XC2S30_DESC(iface, fn_table, cookie) \ 80c609719bSwdenk { Xilinx_Spartan2, iface, XILINX_XC2S30_SIZE, fn_table, cookie } 81c609719bSwdenk 82c609719bSwdenk #define XILINX_XC2S50_DESC(iface, fn_table, cookie) \ 83c609719bSwdenk { Xilinx_Spartan2, iface, XILINX_XC2S50_SIZE, fn_table, cookie } 84c609719bSwdenk 85c609719bSwdenk #define XILINX_XC2S100_DESC(iface, fn_table, cookie) \ 86c609719bSwdenk { Xilinx_Spartan2, iface, XILINX_XC2S100_SIZE, fn_table, cookie } 87c609719bSwdenk 88c609719bSwdenk #define XILINX_XC2S150_DESC(iface, fn_table, cookie) \ 89c609719bSwdenk { Xilinx_Spartan2, iface, XILINX_XC2S150_SIZE, fn_table, cookie } 90c609719bSwdenk 91c609719bSwdenk #endif /* _SPARTAN2_H_ */ 92c609719bSwdenk 93