Commit f5292058 authored by Carl-Daniel Hailfinger's avatar Carl-Daniel Hailfinger
Browse files

Refactor main loop in preparation of libflashrom


To prepare for libflashrom I wanted to make the main loop more readable and more correct and factor out stuff which can be useful in libflashrom.

- Factor out printing of supported devices to print.c.
- Adjust name of wiki printing function to fit the pattern.
- Abort if the user specified --verify and --noverify at the same time.
- Check for extra parameters which don't fit commandline syntax.

Corresponding to flashrom svn r766.
Signed-off-by: default avatarCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: default avatarStefan Reinauer <stepan@coresystems.de>
parent 6161ff18
...@@ -338,11 +338,9 @@ uint32_t pcidev_init(uint16_t vendor_id, uint32_t bar, struct pcidev_status *dev ...@@ -338,11 +338,9 @@ uint32_t pcidev_init(uint16_t vendor_id, uint32_t bar, struct pcidev_status *dev
/* print.c */ /* print.c */
char *flashbuses_to_text(enum chipbustype bustype); char *flashbuses_to_text(enum chipbustype bustype);
void print_supported_chips(void); void print_supported(void);
void print_supported_chipsets(void);
void print_supported_boards(void);
void print_supported_pcidevs(struct pcidev_status *devs); void print_supported_pcidevs(struct pcidev_status *devs);
void print_wiki_tables(void); void print_supported_wiki(void);
/* board_enable.c */ /* board_enable.c */
void w836xx_ext_enter(uint16_t port); void w836xx_ext_enter(uint16_t port);
......
...@@ -801,14 +801,25 @@ int main(int argc, char *argv[]) ...@@ -801,14 +801,25 @@ int main(int argc, char *argv[])
write_it = 1; write_it = 1;
break; break;
case 'v': case 'v':
//FIXME: gracefully handle superfluous -v
if (++operation_specified > 1) { if (++operation_specified > 1) {
fprintf(stderr, "More than one operation " fprintf(stderr, "More than one operation "
"specified. Aborting.\n"); "specified. Aborting.\n");
exit(1); exit(1);
} }
if (dont_verify_it) {
fprintf(stderr, "--verify and --noverify are"
"mutually exclusive. Aborting.\n");
exit(1);
}
verify_it = 1; verify_it = 1;
break; break;
case 'n': case 'n':
if (verify_it) {
fprintf(stderr, "--verify and --noverify are"
"mutually exclusive. Aborting.\n");
exit(1);
}
dont_verify_it = 1; dont_verify_it = 1;
break; break;
case 'c': case 'c':
...@@ -896,29 +907,13 @@ int main(int argc, char *argv[]) ...@@ -896,29 +907,13 @@ int main(int argc, char *argv[])
} }
if (list_supported) { if (list_supported) {
print_supported_chips(); print_supported();
print_supported_chipsets();
print_supported_boards();
printf("\nSupported PCI devices flashrom can use "
"as programmer:\n\n");
#if NIC3COM_SUPPORT == 1
print_supported_pcidevs(nics_3com);
#endif
#if GFXNVIDIA_SUPPORT == 1
print_supported_pcidevs(gfx_nvidia);
#endif
#if DRKAISER_SUPPORT == 1
print_supported_pcidevs(drkaiser_pcidev);
#endif
#if SATASII_SUPPORT == 1
print_supported_pcidevs(satas_sii);
#endif
exit(0); exit(0);
} }
#if PRINT_WIKI_SUPPORT == 1 #if PRINT_WIKI_SUPPORT == 1
if (list_supported_wiki) { if (list_supported_wiki) {
print_wiki_tables(); print_supported_wiki();
exit(0); exit(0);
} }
#endif #endif
...@@ -930,6 +925,11 @@ int main(int argc, char *argv[]) ...@@ -930,6 +925,11 @@ int main(int argc, char *argv[])
if (optind < argc) if (optind < argc)
filename = argv[optind++]; filename = argv[optind++];
if (optind < argc) {
printf("Error: Extra parameter found.\n");
usage(argv[0]);
}
if (programmer_init()) { if (programmer_init()) {
fprintf(stderr, "Error: Programmer initialization failed.\n"); fprintf(stderr, "Error: Programmer initialization failed.\n");
...@@ -1146,7 +1146,7 @@ int main(int argc, char *argv[]) ...@@ -1146,7 +1146,7 @@ int main(int argc, char *argv[])
if (write_it) if (write_it)
programmer_delay(1000*1000); programmer_delay(1000*1000);
ret = verify_flash(flash, buf); ret = verify_flash(flash, buf);
/* If we tried to write, and now we don't properly verify, we /* If we tried to write, and verification now fails, we
* might have an emergency situation. * might have an emergency situation.
*/ */
if (ret && write_it) if (ret && write_it)
......
...@@ -222,6 +222,27 @@ void print_supported_boards(void) ...@@ -222,6 +222,27 @@ void print_supported_boards(void)
"Laptops which have been verified to NOT work yet"); "Laptops which have been verified to NOT work yet");
} }
void print_supported(void)
{
print_supported_chips();
print_supported_chipsets();
print_supported_boards();
printf("\nSupported PCI devices flashrom can use "
"as programmer:\n\n");
#if NIC3COM_SUPPORT == 1
print_supported_pcidevs(nics_3com);
#endif
#if GFXNVIDIA_SUPPORT == 1
print_supported_pcidevs(gfx_nvidia);
#endif
#if DRKAISER_SUPPORT == 1
print_supported_pcidevs(drkaiser_pcidev);
#endif
#if SATASII_SUPPORT == 1
print_supported_pcidevs(satas_sii);
#endif
}
/* Please keep this list alphabetically ordered by vendor/board. */ /* Please keep this list alphabetically ordered by vendor/board. */
const struct board_info boards_ok[] = { const struct board_info boards_ok[] = {
......
...@@ -539,7 +539,7 @@ void print_supported_pcidevs_wiki(struct pcidev_status *devs) ...@@ -539,7 +539,7 @@ void print_supported_pcidevs_wiki(struct pcidev_status *devs)
} }
} }
void print_wiki_tables(void) void print_supported_wiki(void)
{ {
time_t t = time(NULL); time_t t = time(NULL);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment