blob: 751335a147a1217cc955f8e8241c685aead419af [file] [log] [blame]
Thomas Heijligen1a6c6c12021-03-31 20:40:01 +02001/*
2 * This file is part of the flashrom project.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 */
14
15#include "programmer.h"
16
17const struct programmer_entry programmer_table[] = {
18#if CONFIG_INTERNAL == 1
19 {
20 .name = "internal",
21 .type = OTHER,
22 .devs.note = NULL,
23 .init = internal_init,
24 .map_flash_region = physmap,
25 .unmap_flash_region = physunmap,
26 .delay = internal_delay,
27 },
28#endif
29
30#if CONFIG_DUMMY == 1
31 {
32 .name = "dummy",
33 .type = OTHER,
34 /* FIXME */
35 .devs.note = "Dummy device, does nothing and logs all accesses\n",
36 .init = dummy_init,
37 .map_flash_region = dummy_map,
38 .unmap_flash_region = dummy_unmap,
39 .delay = internal_delay,
40 },
41#endif
42
43#if CONFIG_NIC3COM == 1
44 {
45 .name = "nic3com",
46 .type = PCI,
47 .devs.dev = nics_3com,
48 .init = nic3com_init,
49 .map_flash_region = fallback_map,
50 .unmap_flash_region = fallback_unmap,
51 .delay = internal_delay,
52 },
53#endif
54
55#if CONFIG_NICREALTEK == 1
56 {
57 /* This programmer works for Realtek RTL8139 and SMC 1211. */
58 .name = "nicrealtek",
59 .type = PCI,
60 .devs.dev = nics_realtek,
61 .init = nicrealtek_init,
62 .map_flash_region = fallback_map,
63 .unmap_flash_region = fallback_unmap,
64 .delay = internal_delay,
65 },
66#endif
67
68#if CONFIG_NICNATSEMI == 1
69 {
70 .name = "nicnatsemi",
71 .type = PCI,
72 .devs.dev = nics_natsemi,
73 .init = nicnatsemi_init,
74 .map_flash_region = fallback_map,
75 .unmap_flash_region = fallback_unmap,
76 .delay = internal_delay,
77 },
78#endif
79
80#if CONFIG_GFXNVIDIA == 1
81 {
82 .name = "gfxnvidia",
83 .type = PCI,
84 .devs.dev = gfx_nvidia,
85 .init = gfxnvidia_init,
86 .map_flash_region = fallback_map,
87 .unmap_flash_region = fallback_unmap,
88 .delay = internal_delay,
89 },
90#endif
91
92#if CONFIG_DRKAISER == 1
93 {
94 .name = "drkaiser",
95 .type = PCI,
96 .devs.dev = drkaiser_pcidev,
97 .init = drkaiser_init,
98 .map_flash_region = fallback_map,
99 .unmap_flash_region = fallback_unmap,
100 .delay = internal_delay,
101 },
102#endif
103
104#if CONFIG_SATASII == 1
105 {
106 .name = "satasii",
107 .type = PCI,
108 .devs.dev = satas_sii,
109 .init = satasii_init,
110 .map_flash_region = fallback_map,
111 .unmap_flash_region = fallback_unmap,
112 .delay = internal_delay,
113 },
114#endif
115
116#if CONFIG_ATAHPT == 1
117 {
118 .name = "atahpt",
119 .type = PCI,
120 .devs.dev = ata_hpt,
121 .init = atahpt_init,
122 .map_flash_region = fallback_map,
123 .unmap_flash_region = fallback_unmap,
124 .delay = internal_delay,
125 },
126#endif
127
128#if CONFIG_ATAVIA == 1
129 {
130 .name = "atavia",
131 .type = PCI,
132 .devs.dev = ata_via,
133 .init = atavia_init,
134 .map_flash_region = atavia_map,
135 .unmap_flash_region = fallback_unmap,
136 .delay = internal_delay,
137 },
138#endif
139
140#if CONFIG_ATAPROMISE == 1
141 {
142 .name = "atapromise",
143 .type = PCI,
144 .devs.dev = ata_promise,
145 .init = atapromise_init,
146 .map_flash_region = atapromise_map,
147 .unmap_flash_region = fallback_unmap,
148 .delay = internal_delay,
149 },
150#endif
151
152#if CONFIG_IT8212 == 1
153 {
154 .name = "it8212",
155 .type = PCI,
156 .devs.dev = devs_it8212,
157 .init = it8212_init,
158 .map_flash_region = fallback_map,
159 .unmap_flash_region = fallback_unmap,
160 .delay = internal_delay,
161 },
162#endif
163
164#if CONFIG_FT2232_SPI == 1
165 {
166 .name = "ft2232_spi",
167 .type = USB,
168 .devs.dev = devs_ft2232spi,
169 .init = ft2232_spi_init,
170 .map_flash_region = fallback_map,
171 .unmap_flash_region = fallback_unmap,
172 .delay = internal_delay,
173 },
174#endif
175
176#if CONFIG_SERPROG == 1
177 {
178 .name = "serprog",
179 .type = OTHER,
180 /* FIXME */
181 .devs.note = "All programmer devices speaking the serprog protocol\n",
182 .init = serprog_init,
183 .map_flash_region = serprog_map,
184 .unmap_flash_region = fallback_unmap,
185 .delay = serprog_delay,
186 },
187#endif
188
189#if CONFIG_BUSPIRATE_SPI == 1
190 {
191 .name = "buspirate_spi",
192 .type = OTHER,
193 /* FIXME */
194 .devs.note = "Dangerous Prototypes Bus Pirate\n",
195 .init = buspirate_spi_init,
196 .map_flash_region = fallback_map,
197 .unmap_flash_region = fallback_unmap,
198 .delay = internal_delay,
199 },
200#endif
201
202#if CONFIG_DEDIPROG == 1
203 {
204 .name = "dediprog",
205 .type = USB,
206 .devs.dev = devs_dediprog,
207 .init = dediprog_init,
208 .map_flash_region = fallback_map,
209 .unmap_flash_region = fallback_unmap,
210 .delay = internal_delay,
211 },
212#endif
213
214#if CONFIG_DEVELOPERBOX_SPI == 1
215 {
216 .name = "developerbox",
217 .type = USB,
218 .devs.dev = devs_developerbox_spi,
219 .init = developerbox_spi_init,
220 .map_flash_region = fallback_map,
221 .unmap_flash_region = fallback_unmap,
222 .delay = internal_delay,
223 },
224#endif
225
226#if CONFIG_RAYER_SPI == 1
227 {
228 .name = "rayer_spi",
229 .type = OTHER,
230 /* FIXME */
231 .devs.note = "RayeR parallel port programmer\n",
232 .init = rayer_spi_init,
233 .map_flash_region = fallback_map,
234 .unmap_flash_region = fallback_unmap,
235 .delay = internal_delay,
236 },
237#endif
238
239#if CONFIG_PONY_SPI == 1
240 {
241 .name = "pony_spi",
242 .type = OTHER,
243 /* FIXME */
244 .devs.note = "Programmers compatible with SI-Prog, serbang or AJAWe\n",
245 .init = pony_spi_init,
246 .map_flash_region = fallback_map,
247 .unmap_flash_region = fallback_unmap,
248 .delay = internal_delay,
249 },
250#endif
251
252#if CONFIG_NICINTEL == 1
253 {
254 .name = "nicintel",
255 .type = PCI,
256 .devs.dev = nics_intel,
257 .init = nicintel_init,
258 .map_flash_region = fallback_map,
259 .unmap_flash_region = fallback_unmap,
260 .delay = internal_delay,
261 },
262#endif
263
264#if CONFIG_NICINTEL_SPI == 1
265 {
266 .name = "nicintel_spi",
267 .type = PCI,
268 .devs.dev = nics_intel_spi,
269 .init = nicintel_spi_init,
270 .map_flash_region = fallback_map,
271 .unmap_flash_region = fallback_unmap,
272 .delay = internal_delay,
273 },
274#endif
275
276#if CONFIG_NICINTEL_EEPROM == 1
277 {
278 .name = "nicintel_eeprom",
279 .type = PCI,
280 .devs.dev = nics_intel_ee,
281 .init = nicintel_ee_init,
282 .map_flash_region = fallback_map,
283 .unmap_flash_region = fallback_unmap,
284 .delay = internal_delay,
285 },
286#endif
287
288#if CONFIG_OGP_SPI == 1
289 {
290 .name = "ogp_spi",
291 .type = PCI,
292 .devs.dev = ogp_spi,
293 .init = ogp_spi_init,
294 .map_flash_region = fallback_map,
295 .unmap_flash_region = fallback_unmap,
296 .delay = internal_delay,
297 },
298#endif
299
300#if CONFIG_SATAMV == 1
301 {
302 .name = "satamv",
303 .type = PCI,
304 .devs.dev = satas_mv,
305 .init = satamv_init,
306 .map_flash_region = fallback_map,
307 .unmap_flash_region = fallback_unmap,
308 .delay = internal_delay,
309 },
310#endif
311
312#if CONFIG_LINUX_MTD == 1
313 {
314 .name = "linux_mtd",
315 .type = OTHER,
316 .devs.note = "Device files /dev/mtd*\n",
317 .init = linux_mtd_init,
318 .map_flash_region = fallback_map,
319 .unmap_flash_region = fallback_unmap,
320 .delay = internal_delay,
321 },
322#endif
323
324#if CONFIG_LINUX_SPI == 1
325 {
326 .name = "linux_spi",
327 .type = OTHER,
328 .devs.note = "Device files /dev/spidev*.*\n",
329 .init = linux_spi_init,
330 .map_flash_region = fallback_map,
331 .unmap_flash_region = fallback_unmap,
332 .delay = internal_delay,
333 },
334#endif
335
336#if CONFIG_USBBLASTER_SPI == 1
337 {
338 .name = "usbblaster_spi",
339 .type = USB,
340 .devs.dev = devs_usbblasterspi,
341 .init = usbblaster_spi_init,
342 .map_flash_region = fallback_map,
343 .unmap_flash_region = fallback_unmap,
344 .delay = internal_delay,
345 },
346#endif
347
348#if CONFIG_MSTARDDC_SPI == 1
349 {
350 .name = "mstarddc_spi",
351 .type = OTHER,
352 .devs.note = "MSTAR DDC devices addressable via /dev/i2c-* on Linux.\n",
353 .init = mstarddc_spi_init,
354 .map_flash_region = fallback_map,
355 .unmap_flash_region = fallback_unmap,
356 .delay = internal_delay,
357 },
358#endif
359
360#if CONFIG_PICKIT2_SPI == 1
361 {
362 .name = "pickit2_spi",
363 .type = USB,
364 .devs.dev = devs_pickit2_spi,
365 .init = pickit2_spi_init,
366 .map_flash_region = fallback_map,
367 .unmap_flash_region = fallback_unmap,
368 .delay = internal_delay,
369 },
370#endif
371
372#if CONFIG_CH341A_SPI == 1
373 {
374 .name = "ch341a_spi",
375 .type = USB,
376 .devs.dev = devs_ch341a_spi,
377 .init = ch341a_spi_init,
378 .map_flash_region = fallback_map,
379 .unmap_flash_region = fallback_unmap,
380 .delay = ch341a_spi_delay,
381 },
382#endif
383
384#if CONFIG_DIGILENT_SPI == 1
385 {
386 .name = "digilent_spi",
387 .type = USB,
388 .devs.dev = devs_digilent_spi,
389 .init = digilent_spi_init,
390 .map_flash_region = fallback_map,
391 .unmap_flash_region = fallback_unmap,
392 .delay = internal_delay,
393 },
394#endif
395
396#if CONFIG_JLINK_SPI == 1
397 {
398 .name = "jlink_spi",
399 .type = OTHER,
400 .init = jlink_spi_init,
401 .devs.note = "SEGGER J-Link and compatible devices\n",
402 .map_flash_region = fallback_map,
403 .unmap_flash_region = fallback_unmap,
404 .delay = internal_delay,
405 },
406#endif
407
408#if CONFIG_NI845X_SPI == 1
409 {
410 .name = "ni845x_spi",
411 .type = OTHER, // choose other because NI-845x uses own USB implementation
412 .devs.note = "National Instruments USB-845x\n",
413 .init = ni845x_spi_init,
414 .map_flash_region = fallback_map,
415 .unmap_flash_region = fallback_unmap,
416 .delay = internal_delay,
417 },
418#endif
419
420#if CONFIG_STLINKV3_SPI == 1
421 {
422 .name = "stlinkv3_spi",
423 .type = USB,
424 .devs.dev = devs_stlinkv3_spi,
425 .init = stlinkv3_spi_init,
426 .map_flash_region = fallback_map,
427 .unmap_flash_region = fallback_unmap,
428 .delay = internal_delay,
429 },
430#endif
431};
432
433const size_t programmer_table_size = ARRAY_SIZE(programmer_table);