main: Fix usb loop

This commit is contained in:
Pali Rohár committed 2012-08-11 15:25:28 +02:00
1 parent 6062a736d2
commit 24a12b2e72
1 file changed
+19 -3
+19 -3
View File
@@ -818,7 +818,11 @@ int main(int argc, char **argv) {
if ( dev_boot || dev_reboot || dev_load || dev_flash || dev_cold_flash || dev_ident || set_root || set_usb || set_rd || set_rd_flags || set_hw || set_kernel || set_nolo || set_sw || set_emmc ) { if ( dev_boot || dev_reboot || dev_load || dev_flash || dev_cold_flash || dev_ident || set_root || set_usb || set_rd || set_rd_flags || set_hw || set_kernel || set_nolo || set_sw || set_emmc ) {
do { int again = 1;
while ( again ) {
again = 0;
usb_dev = usb_open_and_wait_for_device(); usb_dev = usb_open_and_wait_for_device();
@@ -829,14 +833,17 @@ int main(int argc, char **argv) {
usb_close_device(usb_dev); usb_close_device(usb_dev);
usb_dev = NULL; usb_dev = NULL;
if ( ret != -EAGAIN ) if ( ret != -EAGAIN ) {
again = 1;
continue; continue;
}
if ( ret != 0 ) if ( ret != 0 )
goto clean; goto clean;
if ( dev_flash ) { if ( dev_flash ) {
dev_cold_flash = 0; dev_cold_flash = 0;
again = 1;
continue; continue;
} }
@@ -844,6 +851,14 @@ int main(int argc, char **argv) {
} }
if ( usb_dev->flash_device->protocol == FLASH_COLD ) {
leave_cold_flash(usb_dev);
usb_close_device(usb_dev);
usb_dev = NULL;
again = 1;
continue;
}
if ( usb_dev->flash_device->protocol != FLASH_NOLO ) { if ( usb_dev->flash_device->protocol != FLASH_NOLO ) {
printf("Only NOLO protocol is supported now\n"); printf("Only NOLO protocol is supported now\n");
usb_close_device(usb_dev); usb_close_device(usb_dev);
@@ -855,6 +870,7 @@ int main(int argc, char **argv) {
printf("Cannot initialize NOLO\n"); printf("Cannot initialize NOLO\n");
usb_close_device(usb_dev); usb_close_device(usb_dev);
usb_dev = NULL; usb_dev = NULL;
again = 1;
continue; continue;
} }
@@ -994,7 +1010,7 @@ int main(int argc, char **argv) {
break; break;
} }
} while ( dev_cold_flash || dev_flash ); }
} }