To be able to get rid of lots of #ifdefs and centralize programmer-specific data more... - introduce two new fields to struct programmer_entry, namely enum type (OTHER, USB, PCI) and union devs (pcidev_status, usbdev_status or char *note). - use those fields to generate device listings in print.c and print_wiki.c.
Bonus: add printing of USB devices to print_wiki.c and count supported PCI and USB devices.
Signed-off-by: Stefan Tauner stefan.tauner@student.tuwien.ac.at --- flashrom.c | 77 +++++++++++++++++++++++++++++- ft2232_spi.c | 13 ------ pcidev.c | 13 ------ print.c | 148 +++++++++++++++++++--------------------------------------- print_wiki.c | 141 ++++++++++++++++++++++++++++++++++--------------------- programmer.h | 41 ++++++++++------ 6 files changed, 240 insertions(+), 193 deletions(-)
diff --git a/flashrom.c b/flashrom.c index 77cae7c..b585dc4 100644 --- a/flashrom.c +++ b/flashrom.c @@ -64,6 +64,8 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_INTERNAL == 1 { .name = "internal", + .type = OTHER, + .devs.note = NULL, .init = internal_init, .map_flash_region = physmap, .unmap_flash_region = physunmap, @@ -74,6 +76,9 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_DUMMY == 1 { .name = "dummy", + .type = OTHER, + /* FIXME */ + .devs.note = "Dummy device, does nothing and logs all accesses\n", .init = dummy_init, .map_flash_region = dummy_map, .unmap_flash_region = dummy_unmap, @@ -84,6 +89,8 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_NIC3COM == 1 { .name = "nic3com", + .type = PCI, + .devs.pci = nics_3com, .init = nic3com_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -95,6 +102,8 @@ const struct programmer_entry programmer_table[] = { { /* This programmer works for Realtek RTL8139 and SMC 1211. */ .name = "nicrealtek", + .type = PCI, + .devs.pci = nics_realtek, .init = nicrealtek_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -105,6 +114,8 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_NICNATSEMI == 1 { .name = "nicnatsemi", + .type = PCI, + .devs.pci = nics_natsemi, .init = nicnatsemi_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -115,6 +126,8 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_GFXNVIDIA == 1 { .name = "gfxnvidia", + .type = PCI, + .devs.pci = gfx_nvidia, .init = gfxnvidia_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -125,6 +138,8 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_DRKAISER == 1 { .name = "drkaiser", + .type = PCI, + .devs.pci = drkaiser_pcidev, .init = drkaiser_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -135,6 +150,8 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_SATASII == 1 { .name = "satasii", + .type = PCI, + .devs.pci = satas_sii, .init = satasii_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -145,6 +162,8 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_ATAHPT == 1 { .name = "atahpt", + .type = PCI, + .devs.pci = ata_hpt, .init = atahpt_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -155,6 +174,8 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_FT2232_SPI == 1 { .name = "ft2232_spi", + .type = USB, + .devs.usb = devs_ft2232spi, .init = ft2232_spi_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -165,6 +186,9 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_SERPROG == 1 { .name = "serprog", + .type = OTHER, + /* FIXME */ + .devs.note = "All programmer devices speaking the serprog protocol\n", .init = serprog_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -175,6 +199,9 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_BUSPIRATE_SPI == 1 { .name = "buspirate_spi", + .type = OTHER, + /* FIXME */ + .devs.note = "Dangerous Prototypes Bus Pirate\n", .init = buspirate_spi_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -185,6 +212,9 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_DEDIPROG == 1 { .name = "dediprog", + .type = OTHER, + /* FIXME */ + .devs.note = "Dediprog SF100\n", .init = dediprog_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -195,6 +225,9 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_RAYER_SPI == 1 { .name = "rayer_spi", + .type = OTHER, + /* FIXME */ + .devs.note = "RayeR parallel port programmer\n", .init = rayer_spi_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -205,16 +238,21 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_PONY_SPI == 1 { .name = "pony_spi", + .type = OTHER, + /* FIXME */ + .devs.note = "Programmers compatible with SI-Prog, serbang or AJAWe\n", .init = pony_spi_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, .delay = internal_delay, -}, + }, #endif
#if CONFIG_NICINTEL == 1 { .name = "nicintel", + .type = PCI, + .devs.pci = nics_intel, .init = nicintel_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -225,6 +263,8 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_NICINTEL_SPI == 1 { .name = "nicintel_spi", + .type = PCI, + .devs.pci = nics_intel_spi, .init = nicintel_spi_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -235,6 +275,8 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_OGP_SPI == 1 { .name = "ogp_spi", + .type = PCI, + .devs.pci = ogp_spi, .init = ogp_spi_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -245,6 +287,8 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_SATAMV == 1 { .name = "satamv", + .type = PCI, + .devs.pci = satas_mv, .init = satamv_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -255,6 +299,8 @@ const struct programmer_entry programmer_table[] = { #if CONFIG_LINUX_SPI == 1 { .name = "linux_spi", + .type = OTHER, + .devs.note = "Device files /dev/spidev*.*\n", .init = linux_spi_init, .map_flash_region = fallback_map, .unmap_flash_region = fallback_unmap, @@ -1576,6 +1622,35 @@ int selfcheck(void) * messages below without jumping through hoops. */ continue; } + switch (p.type) { + case USB: + if (p.devs.usb == NULL) { + msg_gerr("Programmer %s is of type USB, but its device list is NULL!\n", + p.name); + ret = 1; + } + break; +#if NEED_PCI == 1 + case PCI: + if (p.devs.pci == NULL) { + msg_gerr("Programmer %s is of type PCI, but its device list is NULL!\n", + p.name); + ret = 1; + } + break; +#endif + case OTHER: + if (p.devs.note == NULL) { + if (strcmp("internal", p.name) == 0) + break; // this is expected, no worry + msg_gerr("Programmer %s is of type OTHER, but its note is NULL!\n", p.name); + ret = 1; + } + break; + default: + msg_gerr("Programmer %s does not have a valid type set!\n", p.name); + break; + } if (p.init == NULL) { msg_gerr("Programmer %s does not have a valid init function!\n", p.name); ret = 1; diff --git a/ft2232_spi.c b/ft2232_spi.c index c09405e..dc17d00 100644 --- a/ft2232_spi.c +++ b/ft2232_spi.c @@ -482,17 +482,4 @@ static int ft2232_spi_send_command(struct flashctx *flash, return failed ? -1 : 0; }
-void print_supported_usbdevs(const struct usbdev_status *devs) -{ - int i; - - msg_pinfo("USB devices:\n"); - for (i = 0; devs[i].vendor_name != NULL; i++) { - msg_pinfo("%s %s [%04x:%04x]%s\n", devs[i].vendor_name, - devs[i].device_name, devs[i].vendor_id, - devs[i].device_id, - (devs[i].status == NT) ? " (untested)" : ""); - } -} - #endif diff --git a/pcidev.c b/pcidev.c index c1b6d6a..bfc8a5d 100644 --- a/pcidev.c +++ b/pcidev.c @@ -224,19 +224,6 @@ uintptr_t pcidev_init(int bar, const struct pcidev_status *devs) return curaddr; }
-void print_supported_pcidevs(const struct pcidev_status *devs) -{ - int i; - - msg_pinfo("PCI devices:\n"); - for (i = 0; devs[i].vendor_name != NULL; i++) { - msg_pinfo("%s %s [%04x:%04x]%s\n", devs[i].vendor_name, - devs[i].device_name, devs[i].vendor_id, - devs[i].device_id, - (devs[i].status == NT) ? " (untested)" : ""); - } -} - enum pci_write_type { pci_write_type_byte, pci_write_type_word, diff --git a/print.c b/print.c index 5f6ae43..a2181bd 100644 --- a/print.c +++ b/print.c @@ -433,8 +433,32 @@ static void print_supported_boards_helper(const struct board_info *boards, } #endif
+void print_supported_usbdevs(const struct usbdev_status *devs) +{ + int i; + + msg_pinfo("USB devices:\n"); + for (i = 0; devs[i].vendor_name != NULL; i++) { + msg_pinfo("%s %s [%04x:%04x]%s\n", devs[i].vendor_name, devs[i].device_name, devs[i].vendor_id, + devs[i].device_id, (devs[i].status == NT) ? " (untested)" : ""); + } +} + +#if NEED_PCI == 1 +void print_supported_pcidevs(const struct pcidev_status *devs) +{ + int i; + + for (i = 0; devs[i].vendor_name != NULL; i++) { + msg_pinfo("%s %s [%04x:%04x]%s\n", devs[i].vendor_name, devs[i].device_name, devs[i].vendor_id, + devs[i].device_id, (devs[i].status == NT) ? " (untested)" : ""); + } +} +#endif + int print_supported(void) { + unsigned int i; if (print_supported_chips()) return 1;
@@ -450,107 +474,31 @@ int print_supported(void) msg_ginfo("\n"); print_supported_boards_helper(laptops_known, "laptops"); #endif -#if CONFIG_DUMMY == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_DUMMY].name); - /* FIXME */ - msg_ginfo("Dummy device, does nothing and logs all accesses\n"); -#endif -#if CONFIG_NIC3COM == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_NIC3COM].name); - print_supported_pcidevs(nics_3com); -#endif -#if CONFIG_NICREALTEK == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_NICREALTEK].name); - print_supported_pcidevs(nics_realtek); -#endif -#if CONFIG_NICNATSEMI == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_NICNATSEMI].name); - print_supported_pcidevs(nics_natsemi); -#endif -#if CONFIG_GFXNVIDIA == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_GFXNVIDIA].name); - print_supported_pcidevs(gfx_nvidia); -#endif -#if CONFIG_DRKAISER == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_DRKAISER].name); - print_supported_pcidevs(drkaiser_pcidev); -#endif -#if CONFIG_SATASII == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_SATASII].name); - print_supported_pcidevs(satas_sii); -#endif -#if CONFIG_ATAHPT == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_ATAHPT].name); - print_supported_pcidevs(ata_hpt); -#endif -#if CONFIG_FT2232_SPI == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_FT2232_SPI].name); - print_supported_usbdevs(devs_ft2232spi); -#endif -#if CONFIG_SERPROG == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_SERPROG].name); - /* FIXME */ - msg_ginfo("All programmer devices speaking the serprog protocol\n"); -#endif -#if CONFIG_BUSPIRATE_SPI == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_BUSPIRATE_SPI].name); - /* FIXME */ - msg_ginfo("Dangerous Prototypes Bus Pirate\n"); -#endif -#if CONFIG_DEDIPROG == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_DEDIPROG].name); - /* FIXME */ - msg_ginfo("Dediprog SF100\n"); -#endif -#if CONFIG_RAYER_SPI == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_RAYER_SPI].name); - /* FIXME */ - msg_ginfo("RayeR parallel port programmer\n"); -#endif -#if CONFIG_PONY_SPI == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_PONY_SPI].name); - /* FIXME */ - msg_ginfo("SI-Prog, serbang and AJAWe serial port programmers\n"); -#endif -#if CONFIG_NICINTEL == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_NICINTEL].name); - print_supported_pcidevs(nics_intel); -#endif -#if CONFIG_NICINTEL_SPI == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_NICINTEL_SPI].name); - print_supported_pcidevs(nics_intel_spi); -#endif -#if CONFIG_OGP_SPI == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_OGP_SPI].name); - print_supported_pcidevs(ogp_spi); -#endif -#if CONFIG_SATAMV == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_SATAMV].name); - print_supported_pcidevs(satas_mv); -#endif -#if CONFIG_LINUX_SPI == 1 - msg_ginfo("\nSupported devices for the %s programmer:\n", - programmer_table[PROGRAMMER_LINUX_SPI].name); - msg_ginfo("Device files /dev/spidev*.*\n"); + for (i = 0; i < PROGRAMMER_INVALID; i++) { + const struct programmer_entry prog = programmer_table[i]; + switch (prog.type) { + case USB: + msg_ginfo("\nSupported USB devices for the %s programmer:\n", prog.name); + print_supported_usbdevs(prog.devs.usb); + break; +#if NEED_PCI == 1 + case PCI: + msg_ginfo("\nSupported PCI devices for the %s programmer:\n", prog.name); + print_supported_pcidevs(prog.devs.pci); + break; #endif + case OTHER: + if (prog.devs.note == NULL) + break; + 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); + break; + } + } return 0; }
diff --git a/print_wiki.c b/print_wiki.c index 617053c..501a2d7 100644 --- a/print_wiki.c +++ b/print_wiki.c @@ -79,13 +79,9 @@ static const char chip_th[] = "\ static const char programmer_th[] = "\ ! align="left" | Vendor\n\ ! align="left" | Device\n\ -! align="center" | PCI IDs\n\ +! align="center" | IDs\n\ ! align="center" | Status\n\n";
-static const char programmer_intro[] = "\ -\n== Supported programmers ==\n\n\ -This is a list of supported PCI devices flashrom can use as programmer:\n\n{"; - #if CONFIG_INTERNAL == 1 static const char laptop_intro[] = "\n== Supported laptops/notebooks ==\n\n\ In general, flashing laptops is more difficult because laptops\n\n\ @@ -139,7 +135,7 @@ static void print_supported_chipsets_wiki(int cols) printf("\n\n|}\n"); }
-static void wiki_helper(const char *devicetype, int cols, const struct board_info boards[]) +static void print_supported_boards_wiki_helper(const char *devicetype, int cols, const struct board_info boards[]) { int i, k; unsigned int boardcount, lines_per_col; @@ -222,10 +218,10 @@ static void wiki_helper(const char *devicetype, int cols, const struct board_inf static void print_supported_boards_wiki(void) { printf("%s", board_intro); - wiki_helper("boards", 2, boards_known); + print_supported_boards_wiki_helper("boards", 2, boards_known);
printf("%s", laptop_intro); - wiki_helper("laptops", 1, laptops_known); + print_supported_boards_wiki_helper("laptops", 1, laptops_known); } #endif
@@ -302,9 +298,18 @@ static void print_supported_chips_wiki(int cols) printf("|}\n\n"); }
-/* Not needed for CONFIG_INTERNAL, but for all other PCI-based programmers. */ -#if CONFIG_NIC3COM+CONFIG_NICREALTEK+CONFIG_NICNATSEMI+CONFIG_GFXNVIDIA+CONFIG_DRKAISER+CONFIG_SATASII+CONFIG_ATAHPT+CONFIG_NICINTEL+CONFIG_NICINTEL_SPI+CONFIG_OGP_SPI+CONFIG_SATAMV >= 1 -static void print_supported_pcidevs_wiki(const struct pcidev_status *devs) +/* Following functions are not needed when no PCI/USB programmers are compiled in, + * but since print_wiki code has no size constraints we include it unconditionally. */ +static int count_supported_pcidevs_wiki(const struct pcidev_status *devs) +{ + unsigned int count = 0; + unsigned int i = 0; + for (i = 0; devs[i].vendor_name != NULL; i++) + count++; + return count; +} + +static void print_supported_pcidevs_wiki_helper(const struct pcidev_status *devs) { int i = 0; static int c = 0; @@ -313,14 +318,81 @@ static void print_supported_pcidevs_wiki(const struct pcidev_status *devs) c = !c;
for (i = 0; devs[i].vendor_name != NULL; i++) { - printf("|- bgcolor="#%s"\n| %s || %s || " - "%04x:%04x || {{%s}}\n", (c) ? "eeeeee" : "dddddd", - devs[i].vendor_name, devs[i].device_name, - devs[i].vendor_id, devs[i].device_id, + printf("|- bgcolor="#%s"\n| %s || %s || %04x:%04x || {{%s}}\n", (c) ? "eeeeee" : "dddddd", + devs[i].vendor_name, devs[i].device_name, devs[i].vendor_id, devs[i].device_id, (devs[i].status == NT) ? "?3" : "OK"); } } -#endif + +static int count_supported_usbdevs_wiki(const struct usbdev_status *devs) +{ + unsigned int count = 0; + unsigned int i = 0; + for (i = 0; devs[i].vendor_name != NULL; i++) + count++; + return count; +} + +static void print_supported_usbdevs_wiki_helper(const struct usbdev_status *devs) +{ + int i = 0; + static int c = 0; + + /* Alternate colors if the vendor changes. */ + c = !c; + + for (i = 0; devs[i].vendor_name != NULL; i++) { + printf("|- bgcolor="#%s"\n| %s || %s || %04x:%04x || {{%s}}\n", (c) ? "eeeeee" : "dddddd", + devs[i].vendor_name, devs[i].device_name, devs[i].vendor_id, devs[i].device_id, + (devs[i].status == NT) ? "?3" : "OK"); + } +} + +static void print_supported_devs_wiki() +{ + unsigned int pci_count = 0; + unsigned int usb_count = 0; + unsigned int i; + + for (i = 0; i < PROGRAMMER_INVALID; i++) { + const struct programmer_entry prog = programmer_table[i]; + switch (prog.type) { + case USB: + usb_count += count_supported_usbdevs_wiki(prog.devs.usb); + break; + case PCI: + pci_count += count_supported_pcidevs_wiki(prog.devs.pci); + break; + case OTHER: + default: + break; + } + } + + printf("\n== PCI Devices ==\n\n" + "Total amount of supported PCI devices flashrom can use as a programmer: '''%d'''\n\n" + "{%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) { + print_supported_pcidevs_wiki_helper(prog.devs.pci); + } + } + printf("\n|}\n\n|}\n"); + + printf("\n== USB Devices ==\n\n" + "Total amount of supported USB devices flashrom can use as a programmer: '''%d'''\n\n" + "{%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) { + print_supported_usbdevs_wiki_helper(prog.devs.usb); + } + } + printf("\n|}\n\n|}\n"); +}
void print_supported_wiki(void) { @@ -332,41 +404,6 @@ void print_supported_wiki(void) print_supported_chipsets_wiki(3); print_supported_boards_wiki(); #endif - printf("%s%s%s", programmer_intro, th_start, programmer_th); - -#if CONFIG_NIC3COM == 1 - print_supported_pcidevs_wiki(nics_3com); -#endif -#if CONFIG_NICREALTEK == 1 - print_supported_pcidevs_wiki(nics_realtek); -#endif -#if CONFIG_NICNATSEMI == 1 - print_supported_pcidevs_wiki(nics_natsemi); -#endif -#if CONFIG_GFXNVIDIA == 1 - print_supported_pcidevs_wiki(gfx_nvidia); -#endif -#if CONFIG_DRKAISER == 1 - print_supported_pcidevs_wiki(drkaiser_pcidev); -#endif -#if CONFIG_SATASII == 1 - print_supported_pcidevs_wiki(satas_sii); -#endif -#if CONFIG_ATAHPT == 1 - print_supported_pcidevs_wiki(ata_hpt); -#endif -#if CONFIG_NICINTEL == 1 - print_supported_pcidevs_wiki(nics_intel); -#endif -#if CONFIG_NICINTEL_SPI == 1 - print_supported_pcidevs_wiki(nics_intel_spi); -#endif -#if CONFIG_OGP_SPI == 1 - print_supported_pcidevs_wiki(ogp_spi); -#endif -#if CONFIG_SATAMV == 1 - print_supported_pcidevs_wiki(satas_mv); -#endif - printf("\n|}\n\n|}\n"); + print_supported_devs_wiki(); }
diff --git a/programmer.h b/programmer.h index 1510e2f..e2bb3d8 100644 --- a/programmer.h +++ b/programmer.h @@ -90,8 +90,20 @@ enum programmer { PROGRAMMER_INVALID /* This must always be the last entry. */ };
+enum programmer_type { + PCI = 1, /* to detect uninitialized values */ + USB, + OTHER, +}; + struct programmer_entry { const char *name; + const enum programmer_type type; + union { + const struct pcidev_status *const pci; + const struct usbdev_status *const usb; + const char *const note; + } devs;
int (*init) (void);
@@ -219,13 +231,6 @@ void internal_delay(int usecs); extern uint32_t io_base_addr; extern struct pci_access *pacc; extern struct pci_dev *pcidev_dev; -struct pcidev_status { - uint16_t vendor_id; - uint16_t device_id; - const enum test_state status; - const char *vendor_name; - const char *device_name; -}; uintptr_t pcidev_readbar(struct pci_dev *dev, int bar); uintptr_t pcidev_init(int bar, const struct pcidev_status *devs); /* rpci_write_* are reversible writes. The original PCI config space register @@ -242,6 +247,21 @@ int rpci_write_long(struct pci_dev *dev, int reg, uint32_t data); void print_supported_pcidevs(const struct pcidev_status *devs); #endif
+struct usbdev_status { + uint16_t vendor_id; + uint16_t device_id; + const enum test_state status; + const char *vendor_name; + const char *device_name; +}; +struct pcidev_status { + uint16_t vendor_id; + uint16_t device_id; + const enum test_state status; + const char *vendor_name; + const char *device_name; +}; + #if CONFIG_INTERNAL == 1 /* board_enable.c */ int board_parse_parameter(const char *boardstring, const char **vendor, const char **model); @@ -420,13 +440,6 @@ extern const struct pcidev_status ata_hpt[];
/* ft2232_spi.c */ #if CONFIG_FT2232_SPI == 1 -struct usbdev_status { - uint16_t vendor_id; - uint16_t device_id; - const enum test_state status; - const char *vendor_name; - const char *device_name; -}; int ft2232_spi_init(void); extern const struct usbdev_status devs_ft2232spi[]; void print_supported_usbdevs(const struct usbdev_status *devs);