3 * Steven Scholz, imc Measurement & Control, steven.scholz@imc-berlin.de
6 * Rich Ireland, Enterasys Networks, rireland@enterasys.com.
8 * SPDX-License-Identifier: GPL-2.0+
16 #include <stratixII.h>
18 /* Define FPGA_DEBUG to 1 to get debug printf's */
21 /* Local Static Functions */
22 static int altera_validate (Altera_desc * desc, const char *fn);
24 /* ------------------------------------------------------------------------- */
25 int altera_load(Altera_desc *desc, const void *buf, size_t bsize)
27 int ret_val = FPGA_FAIL; /* assume a failure */
29 if (!altera_validate (desc, (char *)__func__)) {
30 printf("%s: Invalid device descriptor\n", __func__);
32 switch (desc->family) {
35 #if defined(CONFIG_FPGA_ACEX1K)
36 debug_cond(FPGA_DEBUG,
37 "%s: Launching the ACEX1K Loader...\n",
39 ret_val = ACEX1K_load (desc, buf, bsize);
40 #elif defined(CONFIG_FPGA_CYCLON2)
41 debug_cond(FPGA_DEBUG,
42 "%s: Launching the CYCLONE II Loader...\n",
44 ret_val = CYC2_load (desc, buf, bsize);
46 printf("%s: No support for ACEX1K devices.\n",
51 #if defined(CONFIG_FPGA_STRATIX_II)
52 case Altera_StratixII:
53 debug_cond(FPGA_DEBUG,
54 "%s: Launching the Stratix II Loader...\n",
56 ret_val = StratixII_load (desc, buf, bsize);
60 printf("%s: Unsupported family type, %d\n",
61 __func__, desc->family);
68 int altera_dump(Altera_desc *desc, const void *buf, size_t bsize)
70 int ret_val = FPGA_FAIL; /* assume a failure */
72 if (!altera_validate (desc, (char *)__func__)) {
73 printf("%s: Invalid device descriptor\n", __func__);
75 switch (desc->family) {
77 #if defined(CONFIG_FPGA_ACEX)
78 debug_cond(FPGA_DEBUG,
79 "%s: Launching the ACEX1K Reader...\n",
81 ret_val = ACEX1K_dump (desc, buf, bsize);
83 printf("%s: No support for ACEX1K devices.\n",
88 #if defined(CONFIG_FPGA_STRATIX_II)
89 case Altera_StratixII:
90 debug_cond(FPGA_DEBUG,
91 "%s: Launching the Stratix II Reader...\n",
93 ret_val = StratixII_dump (desc, buf, bsize);
97 printf("%s: Unsupported family type, %d\n",
98 __func__, desc->family);
105 int altera_info( Altera_desc *desc )
107 int ret_val = FPGA_FAIL;
109 if (altera_validate (desc, (char *)__func__)) {
110 printf("Family: \t");
111 switch (desc->family) {
116 printf("CYCLON II\n");
118 case Altera_StratixII:
119 printf("Stratix II\n");
121 /* Add new family types here */
123 printf("Unknown family type, %d\n", desc->family);
126 printf("Interface type:\t");
127 switch (desc->iface) {
129 printf("Passive Serial (PS)\n");
131 case passive_parallel_synchronous:
132 printf("Passive Parallel Synchronous (PPS)\n");
134 case passive_parallel_asynchronous:
135 printf("Passive Parallel Asynchronous (PPA)\n");
137 case passive_serial_asynchronous:
138 printf("Passive Serial Asynchronous (PSA)\n");
140 case altera_jtag_mode: /* Not used */
141 printf("JTAG Mode\n");
143 case fast_passive_parallel:
144 printf("Fast Passive Parallel (FPP)\n");
146 case fast_passive_parallel_security:
148 ("Fast Passive Parallel with Security (FPPS) \n");
150 /* Add new interface types here */
152 printf("Unsupported interface type, %d\n", desc->iface);
155 printf("Device Size: \t%zd bytes\n"
156 "Cookie: \t0x%x (%d)\n",
157 desc->size, desc->cookie, desc->cookie);
159 if (desc->iface_fns) {
160 printf("Device Function Table @ 0x%p\n", desc->iface_fns);
161 switch (desc->family) {
164 #if defined(CONFIG_FPGA_ACEX1K)
166 #elif defined(CONFIG_FPGA_CYCLON2)
170 printf("%s: No support for ACEX1K devices.\n",
174 #if defined(CONFIG_FPGA_STRATIX_II)
175 case Altera_StratixII:
176 StratixII_info(desc);
179 /* Add new family types here */
181 /* we don't need a message here - we give one up above */
185 printf("No Device Function Table.\n");
188 ret_val = FPGA_SUCCESS;
190 printf("%s: Invalid device descriptor\n", __func__);
196 /* ------------------------------------------------------------------------- */
198 static int altera_validate (Altera_desc * desc, const char *fn)
203 if ((desc->family > min_altera_type) &&
204 (desc->family < max_altera_type)) {
205 if ((desc->iface > min_altera_iface_type) &&
206 (desc->iface < max_altera_iface_type)) {
210 printf("%s: NULL part size\n", fn);
213 printf("%s: Invalid Interface type, %d\n",
217 printf("%s: Invalid family type, %d\n", fn, desc->family);
220 printf("%s: NULL descriptor!\n", fn);
226 /* ------------------------------------------------------------------------- */