1
0
mirror of https://review.coreboot.org/flashrom.git synced 2025-04-27 15:12:36 +02:00

programmer_table: convert entries to pointers

Allows us to move the individual entries into their respective driver files.

Change-Id: Ifbb0ee4db5a85b1cd2afeafe4dca838579f79878
Signed-off-by: Thomas Heijligen <thomas.heijligen@secunet.de>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/52945
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Nico Huber <nico.h@gmx.de>
This commit is contained in:
Thomas Heijligen 2021-03-31 19:09:44 +02:00 committed by Nico Huber
parent 9e09095877
commit dee884ebc5
7 changed files with 572 additions and 410 deletions

View File

@ -407,7 +407,7 @@ int main(int argc, char *argv[])
"for details.\n");
}
for (prog = 0; prog < PROGRAMMER_INVALID; prog++) {
name = programmer_table[prog].name;
name = programmer_table[prog]->name;
namelen = strlen(name);
if (strncmp(optarg, name, namelen) == 0) {
switch (optarg[namelen]) {
@ -545,7 +545,7 @@ int main(int argc, char *argv[])
/* We need to strdup here because we free(pparam) unconditionally later. */
pparam = strdup(CONFIG_DEFAULT_PROGRAMMER_ARGS);
msg_pinfo("Using default programmer \"%s\" with arguments \"%s\".\n",
programmer_table[CONFIG_DEFAULT_PROGRAMMER].name, pparam);
programmer_table[CONFIG_DEFAULT_PROGRAMMER]->name, pparam);
} else {
msg_perr("Please select a programmer with the --programmer parameter.\n"
#if CONFIG_INTERNAL == 1

View File

@ -155,8 +155,8 @@ int programmer_init(enum programmer prog, const char *param)
programmer_may_write = 1;
programmer_param = param;
msg_pdbg("Initializing %s programmer\n", programmer_table[programmer].name);
ret = programmer_table[programmer].init();
msg_pdbg("Initializing %s programmer\n", programmer_table[programmer]->name);
ret = programmer_table[programmer]->init();
if (programmer_param && strlen(programmer_param)) {
if (ret != 0) {
/* It is quite possible that any unhandled programmer parameter would have been valid,
@ -200,7 +200,7 @@ int programmer_shutdown(void)
void *programmer_map_flash_region(const char *descr, uintptr_t phys_addr, size_t len)
{
void *ret = programmer_table[programmer].map_flash_region(descr, phys_addr, len);
void *ret = programmer_table[programmer]->map_flash_region(descr, phys_addr, len);
msg_gspew("%s: mapping %s from 0x%0*" PRIxPTR " to 0x%0*" PRIxPTR "\n",
__func__, descr, PRIxPTR_WIDTH, phys_addr, PRIxPTR_WIDTH, (uintptr_t) ret);
return ret;
@ -208,7 +208,7 @@ void *programmer_map_flash_region(const char *descr, uintptr_t phys_addr, size_t
void programmer_unmap_flash_region(void *virt_addr, size_t len)
{
programmer_table[programmer].unmap_flash_region(virt_addr, len);
programmer_table[programmer]->unmap_flash_region(virt_addr, len);
msg_gspew("%s: unmapped 0x%0*" PRIxPTR "\n", __func__, PRIxPTR_WIDTH, (uintptr_t)virt_addr);
}
@ -256,7 +256,7 @@ void chip_readn(const struct flashctx *flash, uint8_t *buf, chipaddr addr,
void programmer_delay(unsigned int usecs)
{
if (usecs > 0)
programmer_table[programmer].delay(usecs);
programmer_table[programmer]->delay(usecs);
}
int read_memmapped(struct flashctx *flash, uint8_t *buf, unsigned int start,
@ -840,12 +840,12 @@ notfound:
flash->chip->vendor, flash->chip->name, flash->chip->total_size, tmp);
free(tmp);
#if CONFIG_INTERNAL == 1
if (programmer_table[programmer].map_flash_region == physmap)
if (programmer_table[programmer]->map_flash_region == physmap)
msg_cinfo("mapped at physical address 0x%0*" PRIxPTR ".\n",
PRIxPTR_WIDTH, flash->physical_memory);
else
#endif
msg_cinfo("on %s.\n", programmer_table[programmer].name);
msg_cinfo("on %s.\n", programmer_table[programmer]->name);
/* Flash registers may more likely not be mapped if the chip was forced.
* Lock info may be stored in registers, so avoid lock info printing. */
@ -1586,7 +1586,7 @@ void list_programmers_linebreak(int startcol, int cols, int paren)
int i;
for (p = 0; p < PROGRAMMER_INVALID; p++) {
pname = programmer_table[p].name;
pname = programmer_table[p]->name;
pnamelen = strlen(pname);
if (remaining - pnamelen - 2 < 0) {
if (firstline)
@ -1718,45 +1718,50 @@ int selfcheck(void)
ret = 1;
}
for (i = 0; i < PROGRAMMER_INVALID; i++) {
const struct programmer_entry p = programmer_table[i];
if (p.name == NULL) {
const struct programmer_entry *const p = programmer_table[i];
if (p == NULL) {
msg_gerr("Programmer with index %d is NULL instead of a valid pointer!\n", i);
ret = 1;
continue;
}
if (p->name == NULL) {
msg_gerr("All programmers need a valid name, but the one with index %d does not!\n", i);
ret = 1;
/* This might hide other problems with this programmer, but allows for better error
* messages below without jumping through hoops. */
continue;
}
switch (p.type) {
switch (p->type) {
case USB:
case PCI:
case OTHER:
if (p.devs.note == NULL) {
if (strcmp("internal", p.name) == 0)
if (p->devs.note == NULL) {
if (strcmp("internal", p->name) == 0)
break; /* This one has its device list stored separately. */
msg_gerr("Programmer %s has neither a device list nor a textual description!\n",
p.name);
p->name);
ret = 1;
}
break;
default:
msg_gerr("Programmer %s does not have a valid type set!\n", p.name);
msg_gerr("Programmer %s does not have a valid type set!\n", p->name);
ret = 1;
break;
}
if (p.init == NULL) {
msg_gerr("Programmer %s does not have a valid init function!\n", p.name);
if (p->init == NULL) {
msg_gerr("Programmer %s does not have a valid init function!\n", p->name);
ret = 1;
}
if (p.delay == NULL) {
msg_gerr("Programmer %s does not have a valid delay function!\n", p.name);
if (p->delay == NULL) {
msg_gerr("Programmer %s does not have a valid delay function!\n", p->name);
ret = 1;
}
if (p.map_flash_region == NULL) {
msg_gerr("Programmer %s does not have a valid map_flash_region function!\n", p.name);
if (p->map_flash_region == NULL) {
msg_gerr("Programmer %s does not have a valid map_flash_region function!\n", p->name);
ret = 1;
}
if (p.unmap_flash_region == NULL) {
msg_gerr("Programmer %s does not have a valid unmap_flash_region function!\n", p.name);
if (p->unmap_flash_region == NULL) {
msg_gerr("Programmer %s does not have a valid unmap_flash_region function!\n", p->name);
ret = 1;
}
}

View File

@ -124,7 +124,7 @@ const char **flashrom_supported_programmers(void)
if (supported_programmers != NULL) {
for (; p < PROGRAMMER_INVALID; ++p) {
supported_programmers[p] = programmer_table[p].name;
supported_programmers[p] = programmer_table[p]->name;
}
} else {
msg_gerr("Memory allocation error!\n");
@ -279,7 +279,7 @@ int flashrom_programmer_init(struct flashrom_programmer **const flashprog,
unsigned prog;
for (prog = 0; prog < PROGRAMMER_INVALID; prog++) {
if (strcmp(prog_name, programmer_table[prog].name) == 0)
if (strcmp(prog_name, programmer_table[prog]->name) == 0)
break;
}
if (prog >= PROGRAMMER_INVALID) {

20
print.c
View File

@ -425,10 +425,10 @@ static void print_supported_boards_helper(const struct board_info *boards,
}
#endif
static void print_supported_devs(const struct programmer_entry prog, const char *const type)
static void print_supported_devs(const struct programmer_entry *const prog, const char *const type)
{
const struct dev_entry *const devs = prog.devs.dev;
msg_ginfo("\nSupported %s devices for the %s programmer:\n", type, prog.name);
const struct dev_entry *const devs = prog->devs.dev;
msg_ginfo("\nSupported %s devices for the %s programmer:\n", type, prog->name);
unsigned int maxvendorlen = strlen("Vendor") + 1;
unsigned int maxdevlen = strlen("Device") + 1;
@ -475,7 +475,7 @@ int print_supported(void)
msg_ginfo("\n");
#if CONFIG_INTERNAL == 1
msg_ginfo("\nSupported devices for the %s programmer:\n\n",
programmer_table[PROGRAMMER_INTERNAL].name);
programmer_table[PROGRAMMER_INTERNAL]->name);
print_supported_chipsets();
msg_ginfo("\n");
print_supported_boards_helper(boards_known, "mainboards");
@ -483,8 +483,8 @@ int print_supported(void)
print_supported_boards_helper(laptops_known, "mobile devices");
#endif
for (i = 0; i < PROGRAMMER_INVALID; i++) {
const struct programmer_entry prog = programmer_table[i];
switch (prog.type) {
const struct programmer_entry *const prog = programmer_table[i];
switch (prog->type) {
case USB:
print_supported_devs(prog, "USB");
break;
@ -492,14 +492,14 @@ int print_supported(void)
print_supported_devs(prog, "PCI");
break;
case OTHER:
if (prog.devs.note != NULL) {
msg_ginfo("\nSupported devices for the %s programmer:\n", prog.name);
msg_ginfo("%s", prog.devs.note);
if (prog->devs.note != NULL) {
msg_ginfo("\nSupported devices for the %s programmer:\n", prog->name);
msg_ginfo("%s", prog->devs.note);
}
break;
default:
msg_gerr("\n%s: %s: Uninitialized programmer type! Please report a bug at "
"flashrom@flashrom.org\n", __func__, prog.name);
"flashrom@flashrom.org\n", __func__, prog->name);
break;
}
}

View File

@ -355,11 +355,11 @@ static int count_supported_devs_wiki(const struct dev_entry *devs)
return count;
}
static void print_supported_devs_wiki_helper(const struct programmer_entry prog)
static void print_supported_devs_wiki_helper(const struct programmer_entry *const prog)
{
int i = 0;
static int c = 0;
const struct dev_entry *devs = prog.devs.dev;
const struct dev_entry *devs = prog->devs.dev;
const unsigned int count = count_supported_devs_wiki(devs);
/* Alternate colors if the vendor changes. */
@ -368,7 +368,7 @@ static void print_supported_devs_wiki_helper(const struct programmer_entry prog)
for (i = 0; devs[i].vendor_id != 0; i++) {
printf("|- bgcolor=\"#%s\"\n", (c) ? "eeeeee" : "dddddd");
if (i == 0)
printf("| rowspan=\"%u\" | %s |", count, prog.name);
printf("| rowspan=\"%u\" | %s |", count, prog->name);
printf("| %s || %s || %04x:%04x || {{%s}}\n", devs[i].vendor_name, devs[i].device_name,
devs[i].vendor_id, devs[i].device_id, test_state_to_template(devs[i].status));
}
@ -381,13 +381,13 @@ static void print_supported_devs_wiki()
unsigned int i;
for (i = 0; i < PROGRAMMER_INVALID; i++) {
const struct programmer_entry prog = programmer_table[i];
switch (prog.type) {
const struct programmer_entry *const prog = programmer_table[i];
switch (prog->type) {
case USB:
usb_count += count_supported_devs_wiki(prog.devs.dev);
usb_count += count_supported_devs_wiki(prog->devs.dev);
break;
case PCI:
pci_count += count_supported_devs_wiki(prog.devs.dev);
pci_count += count_supported_devs_wiki(prog->devs.dev);
break;
case OTHER:
default:
@ -400,8 +400,8 @@ static void print_supported_devs_wiki()
"{%s%s", pci_count, th_start, programmer_th);
for (i = 0; i < PROGRAMMER_INVALID; i++) {
const struct programmer_entry prog = programmer_table[i];
if (prog.type == PCI) {
const struct programmer_entry *const prog = programmer_table[i];
if (prog->type == PCI) {
print_supported_devs_wiki_helper(prog);
}
}
@ -412,8 +412,8 @@ static void print_supported_devs_wiki()
"{%s%s", usb_count, th_start, programmer_th);
for (i = 0; i < PROGRAMMER_INVALID; i++) {
const struct programmer_entry prog = programmer_table[i];
if (prog.type == USB) {
const struct programmer_entry *const prog = programmer_table[i];
if (prog->type == USB) {
print_supported_devs_wiki_helper(prog);
}
}
@ -426,11 +426,11 @@ static void print_supported_devs_wiki()
for (i = 0; i < PROGRAMMER_INVALID; i++) {
static int c = 0;
const struct programmer_entry prog = programmer_table[i];
if (prog.type == OTHER && prog.devs.note != NULL) {
const struct programmer_entry *const prog = programmer_table[i];
if (prog->type == OTHER && prog->devs.note != NULL) {
c = !c;
printf("|- bgcolor=\"#%s\"\n", (c) ? "eeeeee" : "dddddd");
printf("| %s || %s", prog.name, prog.devs.note);
printf("| %s || %s", prog->name, prog->devs.note);
}
}
printf("\n|}\n\n|}\n");

View File

@ -175,7 +175,7 @@ struct programmer_entry {
void (*delay) (unsigned int usecs);
};
extern const struct programmer_entry programmer_table[];
extern const struct programmer_entry *const programmer_table[];
extern const size_t programmer_table_size;
int programmer_init(enum programmer prog, const char *param);

View File

@ -14,9 +14,8 @@
#include "programmer.h"
const struct programmer_entry programmer_table[] = {
#if CONFIG_INTERNAL == 1
{
const struct programmer_entry programmer_internal = {
.name = "internal",
.type = OTHER,
.devs.note = NULL,
@ -24,11 +23,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = physmap,
.unmap_flash_region = physunmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_DUMMY == 1
{
const struct programmer_entry programmer_dummy = {
.name = "dummy",
.type = OTHER,
/* FIXME */
@ -37,11 +36,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = dummy_map,
.unmap_flash_region = dummy_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_MEC1308 == 1
{
const struct programmer_entry programmer_mec1308 = {
.name = "mec1308",
.type = OTHER,
.devs.note = "Microchip MEC1308 Embedded Controller.\n",
@ -49,11 +48,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_NIC3COM == 1
{
const struct programmer_entry programmer_nic3com = {
.name = "nic3com",
.type = PCI,
.devs.dev = nics_3com,
@ -61,11 +60,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_NICREALTEK == 1
{
const struct programmer_entry programmer_nicrealtek = {
/* This programmer works for Realtek RTL8139 and SMC 1211. */
.name = "nicrealtek",
.type = PCI,
@ -74,11 +73,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_NICNATSEMI == 1
{
const struct programmer_entry programmer_nicnatsemi = {
.name = "nicnatsemi",
.type = PCI,
.devs.dev = nics_natsemi,
@ -86,11 +85,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_GFXNVIDIA == 1
{
const struct programmer_entry programmer_gfxnvidia = {
.name = "gfxnvidia",
.type = PCI,
.devs.dev = gfx_nvidia,
@ -98,11 +97,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_RAIDEN_DEBUG_SPI == 1
{
const struct programmer_entry programmer_raiden_debug_spi = {
.name = "raiden_debug_spi",
.type = USB,
.devs.dev = devs_raiden,
@ -110,11 +109,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_DRKAISER == 1
{
const struct programmer_entry programmer_drkaiser = {
.name = "drkaiser",
.type = PCI,
.devs.dev = drkaiser_pcidev,
@ -122,11 +121,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_SATASII == 1
{
const struct programmer_entry programmer_satasii = {
.name = "satasii",
.type = PCI,
.devs.dev = satas_sii,
@ -134,11 +133,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_ATAHPT == 1
{
const struct programmer_entry programmer_atahpt = {
.name = "atahpt",
.type = PCI,
.devs.dev = ata_hpt,
@ -146,11 +145,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_ATAVIA == 1
{
const struct programmer_entry programmer_atavia = {
.name = "atavia",
.type = PCI,
.devs.dev = ata_via,
@ -158,11 +157,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = atavia_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_ATAPROMISE == 1
{
const struct programmer_entry programmer_atapromise = {
.name = "atapromise",
.type = PCI,
.devs.dev = ata_promise,
@ -170,11 +169,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = atapromise_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_IT8212 == 1
{
const struct programmer_entry programmer_it8212 = {
.name = "it8212",
.type = PCI,
.devs.dev = devs_it8212,
@ -182,11 +181,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_FT2232_SPI == 1
{
const struct programmer_entry programmer_ft2232_spi = {
.name = "ft2232_spi",
.type = USB,
.devs.dev = devs_ft2232spi,
@ -194,11 +193,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_SERPROG == 1
{
const struct programmer_entry programmer_serprog = {
.name = "serprog",
.type = OTHER,
/* FIXME */
@ -207,11 +206,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = serprog_map,
.unmap_flash_region = fallback_unmap,
.delay = serprog_delay,
},
};
#endif
#if CONFIG_BUSPIRATE_SPI == 1
{
const struct programmer_entry programmer_buspirate_spi = {
.name = "buspirate_spi",
.type = OTHER,
/* FIXME */
@ -220,11 +219,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_DEDIPROG == 1
{
const struct programmer_entry programmer_dediprog = {
.name = "dediprog",
.type = USB,
.devs.dev = devs_dediprog,
@ -232,11 +231,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_DEVELOPERBOX_SPI == 1
{
const struct programmer_entry programmer_developerbox = {
.name = "developerbox",
.type = USB,
.devs.dev = devs_developerbox_spi,
@ -244,11 +243,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_ENE_LPC == 1
{
const struct programmer_entry programmer_ene_lpc = {
.name = "ene_lpc",
.type = OTHER,
.devs.note = "ENE LPC interface keyboard controller\n",
@ -256,11 +255,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_RAYER_SPI == 1
{
const struct programmer_entry programmer_rayer_spi = {
.name = "rayer_spi",
.type = OTHER,
/* FIXME */
@ -269,11 +268,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_PONY_SPI == 1
{
const struct programmer_entry programmer_pony_spi = {
.name = "pony_spi",
.type = OTHER,
/* FIXME */
@ -282,11 +281,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_NICINTEL == 1
{
const struct programmer_entry programmer_nicintel = {
.name = "nicintel",
.type = PCI,
.devs.dev = nics_intel,
@ -294,11 +293,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_NICINTEL_SPI == 1
{
const struct programmer_entry programmer_nicintel_spi = {
.name = "nicintel_spi",
.type = PCI,
.devs.dev = nics_intel_spi,
@ -306,11 +305,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_NICINTEL_EEPROM == 1
{
const struct programmer_entry programmer_nicintel_eeprom = {
.name = "nicintel_eeprom",
.type = PCI,
.devs.dev = nics_intel_ee,
@ -318,11 +317,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_OGP_SPI == 1
{
const struct programmer_entry programmer_ogp_spi = {
.name = "ogp_spi",
.type = PCI,
.devs.dev = ogp_spi,
@ -330,11 +329,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_SATAMV == 1
{
const struct programmer_entry programmer_satamv = {
.name = "satamv",
.type = PCI,
.devs.dev = satas_mv,
@ -342,11 +341,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_LINUX_MTD == 1
{
const struct programmer_entry programmer_linux_mtd = {
.name = "linux_mtd",
.type = OTHER,
.devs.note = "Device files /dev/mtd*\n",
@ -354,11 +353,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_LINUX_SPI == 1
{
const struct programmer_entry programmer_linux_spi = {
.name = "linux_spi",
.type = OTHER,
.devs.note = "Device files /dev/spidev*.*\n",
@ -366,11 +365,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_LSPCON_I2C_SPI == 1
{
const struct programmer_entry programmer_lspcon_i2c_spi = {
.name = "lspcon_i2c_spi",
.type = OTHER,
.devs.note = "Device files /dev/i2c-*.\n",
@ -378,11 +377,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_REALTEK_MST_I2C_SPI == 1
{
const struct programmer_entry programmer_realtek_mst_i2c_spi = {
.name = "realtek_mst_i2c_spi",
.type = OTHER,
.devs.note = "Device files /dev/i2c-*.\n",
@ -390,11 +389,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_USBBLASTER_SPI == 1
{
const struct programmer_entry programmer_usbblaster_spi = {
.name = "usbblaster_spi",
.type = USB,
.devs.dev = devs_usbblasterspi,
@ -402,11 +401,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_MSTARDDC_SPI == 1
{
const struct programmer_entry programmer_mstarddc_spi = {
.name = "mstarddc_spi",
.type = OTHER,
.devs.note = "MSTAR DDC devices addressable via /dev/i2c-* on Linux.\n",
@ -414,11 +413,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_PICKIT2_SPI == 1
{
const struct programmer_entry programmer_pickit2_spi = {
.name = "pickit2_spi",
.type = USB,
.devs.dev = devs_pickit2_spi,
@ -426,11 +425,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_CH341A_SPI == 1
{
const struct programmer_entry programmer_ch341a_spi = {
.name = "ch341a_spi",
.type = USB,
.devs.dev = devs_ch341a_spi,
@ -438,11 +437,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = ch341a_spi_delay,
},
};
#endif
#if CONFIG_DIGILENT_SPI == 1
{
const struct programmer_entry programmer_digilent_spi = {
.name = "digilent_spi",
.type = USB,
.devs.dev = devs_digilent_spi,
@ -450,11 +449,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_JLINK_SPI == 1
{
const struct programmer_entry programmer_jlink_spi = {
.name = "jlink_spi",
.type = OTHER,
.init = jlink_spi_init,
@ -462,11 +461,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_NI845X_SPI == 1
{
const struct programmer_entry programmer_ni845x_spi = {
.name = "ni845x_spi",
.type = OTHER, // choose other because NI-845x uses own USB implementation
.devs.note = "National Instruments USB-845x\n",
@ -474,11 +473,11 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
#if CONFIG_STLINKV3_SPI == 1
{
const struct programmer_entry programmer_stlinkv3_spi = {
.name = "stlinkv3_spi",
.type = USB,
.devs.dev = devs_stlinkv3_spi,
@ -486,7 +485,165 @@ const struct programmer_entry programmer_table[] = {
.map_flash_region = fallback_map,
.unmap_flash_region = fallback_unmap,
.delay = internal_delay,
},
};
#endif
const struct programmer_entry *const programmer_table[] = {
#if CONFIG_INTERNAL == 1
&programmer_internal,
#endif
#if CONFIG_DUMMY == 1
&programmer_dummy,
#endif
#if CONFIG_MEC1308 == 1
&programmer_mec1308,
#endif
#if CONFIG_NIC3COM == 1
&programmer_nic3com,
#endif
#if CONFIG_NICREALTEK == 1
& programmer_nicrealtek,
#endif
#if CONFIG_NICNATSEMI == 1
&programmer_nicnatsemi,
#endif
#if CONFIG_GFXNVIDIA == 1
&programmer_gfxnvidia,
#endif
#if CONFIG_RAIDEN_DEBUG_SPI == 1
&programmer_raiden_debug_spi,
#endif
#if CONFIG_DRKAISER == 1
&programmer_drkaiser,
#endif
#if CONFIG_SATASII == 1
&programmer_satasii,
#endif
#if CONFIG_ATAHPT == 1
&programmer_atahpt,
#endif
#if CONFIG_ATAVIA == 1
&programmer_atavia,
#endif
#if CONFIG_ATAPROMISE == 1
&programmer_atapromise,
#endif
#if CONFIG_IT8212 == 1
&programmer_it8212,
#endif
#if CONFIG_FT2232_SPI == 1
&programmer_ft2232_spi,
#endif
#if CONFIG_SERPROG == 1
&programmer_serprog,
#endif
#if CONFIG_BUSPIRATE_SPI == 1
&programmer_buspirate_spi,
#endif
#if CONFIG_DEDIPROG == 1
&programmer_dediprog,
#endif
#if CONFIG_DEVELOPERBOX_SPI == 1
&programmer_developerbox,
#endif
#if CONFIG_ENE_LPC == 1
&programmer_ene_lpc,
#endif
#if CONFIG_RAYER_SPI == 1
&programmer_rayer_spi,
#endif
#if CONFIG_PONY_SPI == 1
&programmer_pony_spi,
#endif
#if CONFIG_NICINTEL == 1
&programmer_nicintel,
#endif
#if CONFIG_NICINTEL_SPI == 1
&programmer_nicintel_spi,
#endif
#if CONFIG_NICINTEL_EEPROM == 1
&programmer_nicintel_eeprom,
#endif
#if CONFIG_OGP_SPI == 1
&programmer_ogp_spi,
#endif
#if CONFIG_SATAMV == 1
&programmer_satamv,
#endif
#if CONFIG_LINUX_MTD == 1
&programmer_linux_mtd,
#endif
#if CONFIG_LINUX_SPI == 1
&programmer_linux_spi,
#endif
#if CONFIG_LSPCON_I2C_SPI == 1
&programmer_lspcon_i2c_spi,
#endif
#if CONFIG_REALTEK_MST_I2C_SPI == 1
&programmer_realtek_mst_i2c_spi,
#endif
#if CONFIG_USBBLASTER_SPI == 1
&programmer_usbblaster_spi,
#endif
#if CONFIG_MSTARDDC_SPI == 1
&programmer_mstarddc_spi,
#endif
#if CONFIG_PICKIT2_SPI == 1
&programmer_pickit2_spi,
#endif
#if CONFIG_CH341A_SPI == 1
&programmer_ch341a_spi,
#endif
#if CONFIG_DIGILENT_SPI == 1
&programmer_digilent_spi,
#endif
#if CONFIG_JLINK_SPI == 1
&programmer_jlink_spi,
#endif
#if CONFIG_NI845X_SPI == 1
&programmer_ni845x_spi,
#endif
#if CONFIG_STLINKV3_SPI == 1
&programmer_stlinkv3_spi,
#endif
};