1c609719bSwdenk /* 2c609719bSwdenk * (C) Copyright 2002 3c609719bSwdenk * Rich Ireland, Enterasys Networks, rireland@enterasys.com. 4c609719bSwdenk * 51a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 6c609719bSwdenk */ 7c609719bSwdenk 8c609719bSwdenk #ifndef _SPARTAN2_H_ 9c609719bSwdenk #define _SPARTAN2_H_ 10c609719bSwdenk 11c609719bSwdenk #include <xilinx.h> 12c609719bSwdenk 13c609719bSwdenk /* Slave Parallel Implementation function table */ 14c609719bSwdenk typedef struct { 152df9d5c4SMichal Simek xilinx_pre_fn pre; 162df9d5c4SMichal Simek xilinx_pgm_fn pgm; 172df9d5c4SMichal Simek xilinx_init_fn init; 182df9d5c4SMichal Simek xilinx_err_fn err; 192df9d5c4SMichal Simek xilinx_done_fn done; 202df9d5c4SMichal Simek xilinx_clk_fn clk; 212df9d5c4SMichal Simek xilinx_cs_fn cs; 222df9d5c4SMichal Simek xilinx_wr_fn wr; 232df9d5c4SMichal Simek xilinx_rdata_fn rdata; 242df9d5c4SMichal Simek xilinx_wdata_fn wdata; 252df9d5c4SMichal Simek xilinx_busy_fn busy; 262df9d5c4SMichal Simek xilinx_abort_fn abort; 272df9d5c4SMichal Simek xilinx_post_fn post; 28b625b9aeSMichal Simek } xilinx_spartan2_slave_parallel_fns; 29c609719bSwdenk 30c609719bSwdenk /* Slave Serial Implementation function table */ 31c609719bSwdenk typedef struct { 322df9d5c4SMichal Simek xilinx_pre_fn pre; 332df9d5c4SMichal Simek xilinx_pgm_fn pgm; 342df9d5c4SMichal Simek xilinx_clk_fn clk; 352df9d5c4SMichal Simek xilinx_init_fn init; 362df9d5c4SMichal Simek xilinx_done_fn done; 372df9d5c4SMichal Simek xilinx_wr_fn wr; 382df9d5c4SMichal Simek xilinx_post_fn post; 39b625b9aeSMichal Simek } xilinx_spartan2_slave_serial_fns; 40c609719bSwdenk 41*14cfc4f3SMichal Simek extern struct xilinx_fpga_op spartan2_op; 42*14cfc4f3SMichal Simek 43c609719bSwdenk /* Device Image Sizes 44c609719bSwdenk *********************************************************************/ 45c609719bSwdenk /* Spartan-II (2.5V) */ 46c609719bSwdenk #define XILINX_XC2S15_SIZE 197728/8 47c609719bSwdenk #define XILINX_XC2S30_SIZE 336800/8 48c609719bSwdenk #define XILINX_XC2S50_SIZE 559232/8 49c609719bSwdenk #define XILINX_XC2S100_SIZE 781248/8 50c609719bSwdenk #define XILINX_XC2S150_SIZE 1040128/8 513bff4ffaSMatthias Fuchs #define XILINX_XC2S200_SIZE 1335872/8 52c609719bSwdenk 539dd611b8Swdenk /* Spartan-IIE (1.8V) */ 549dd611b8Swdenk #define XILINX_XC2S50E_SIZE 630048/8 559dd611b8Swdenk #define XILINX_XC2S100E_SIZE 863840/8 569dd611b8Swdenk #define XILINX_XC2S150E_SIZE 1134496/8 579dd611b8Swdenk #define XILINX_XC2S200E_SIZE 1442016/8 589dd611b8Swdenk #define XILINX_XC2S300E_SIZE 1875648/8 599dd611b8Swdenk 60c609719bSwdenk /* Descriptor Macros 61c609719bSwdenk *********************************************************************/ 62c609719bSwdenk /* Spartan-II devices */ 63c609719bSwdenk #define XILINX_XC2S15_DESC(iface, fn_table, cookie) \ 64*14cfc4f3SMichal Simek { xilinx_spartan2, iface, XILINX_XC2S15_SIZE, fn_table, cookie, &spartan2_op } 65c609719bSwdenk 66c609719bSwdenk #define XILINX_XC2S30_DESC(iface, fn_table, cookie) \ 67*14cfc4f3SMichal Simek { xilinx_spartan2, iface, XILINX_XC2S30_SIZE, fn_table, cookie, &spartan2_op } 68c609719bSwdenk 69c609719bSwdenk #define XILINX_XC2S50_DESC(iface, fn_table, cookie) \ 70*14cfc4f3SMichal Simek { xilinx_spartan2, iface, XILINX_XC2S50_SIZE, fn_table, cookie, &spartan2_op } 71c609719bSwdenk 72c609719bSwdenk #define XILINX_XC2S100_DESC(iface, fn_table, cookie) \ 73*14cfc4f3SMichal Simek { xilinx_spartan2, iface, XILINX_XC2S100_SIZE, fn_table, cookie, &spartan2_op } 74c609719bSwdenk 75c609719bSwdenk #define XILINX_XC2S150_DESC(iface, fn_table, cookie) \ 76*14cfc4f3SMichal Simek { xilinx_spartan2, iface, XILINX_XC2S150_SIZE, fn_table, cookie, &spartan2_op } 77c609719bSwdenk 783bff4ffaSMatthias Fuchs #define XILINX_XC2S200_DESC(iface, fn_table, cookie) \ 79*14cfc4f3SMichal Simek { xilinx_spartan2, iface, XILINX_XC2S200_SIZE, fn_table, cookie, &spartan2_op } 803bff4ffaSMatthias Fuchs 819dd611b8Swdenk #define XILINX_XC2S50E_DESC(iface, fn_table, cookie) \ 82*14cfc4f3SMichal Simek { xilinx_spartan2, iface, XILINX_XC2S50E_SIZE, fn_table, cookie, &spartan2_op } 839dd611b8Swdenk 849dd611b8Swdenk #define XILINX_XC2S100E_DESC(iface, fn_table, cookie) \ 85*14cfc4f3SMichal Simek { xilinx_spartan2, iface, XILINX_XC2S100E_SIZE, fn_table, cookie, &spartan2_op } 869dd611b8Swdenk 879dd611b8Swdenk #define XILINX_XC2S150E_DESC(iface, fn_table, cookie) \ 88*14cfc4f3SMichal Simek { xilinx_spartan2, iface, XILINX_XC2S150E_SIZE, fn_table, cookie, &spartan2_op } 899dd611b8Swdenk 909dd611b8Swdenk #define XILINX_XC2S200E_DESC(iface, fn_table, cookie) \ 91*14cfc4f3SMichal Simek { xilinx_spartan2, iface, XILINX_XC2S200E_SIZE, fn_table, cookie, &spartan2_op } 929dd611b8Swdenk 939dd611b8Swdenk #define XILINX_XC2S300E_DESC(iface, fn_table, cookie) \ 94*14cfc4f3SMichal Simek { xilinx_spartan2, iface, XILINX_XC2S300E_SIZE, fn_table, cookie, &spartan2_op } 959dd611b8Swdenk 96c609719bSwdenk #endif /* _SPARTAN2_H_ */ 97