summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorAmaury Pouly <amaury.pouly@gmail.com>2014-05-25 16:04:19 +0200
committerAmaury Pouly <amaury.pouly@gmail.com>2014-09-07 17:44:53 +0200
commit1dc1a9310e8a078a633dd90def13103f80e01ce7 (patch)
treee28ba06d68a5cedfac33ea6e893b7e42288e58ba /utils
parent50778c82f1311979ca3d3a6a7d0021367bb26ef4 (diff)
downloadrockbox-1dc1a9310e8a078a633dd90def13103f80e01ce7.tar.gz
rockbox-1dc1a9310e8a078a633dd90def13103f80e01ce7.zip
sbtools: use default transfer size if it cannot be probed
A older commit removed this ability but it tends to be a problem since the HID driver can prevent probing of transfer size which then needs to be entered by hand on the command line. Change-Id: Ie5a556ffdcc2adec0e1c984810983e19136b6473
Diffstat (limited to 'utils')
-rw-r--r--utils/imxtools/sbtools/sbloader.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/utils/imxtools/sbtools/sbloader.c b/utils/imxtools/sbtools/sbloader.c
index 0a82a66a0c..99715a6232 100644
--- a/utils/imxtools/sbtools/sbloader.c
+++ b/utils/imxtools/sbtools/sbloader.c
@@ -61,9 +61,9 @@ struct dev_info_t
61 61
62struct dev_info_t g_dev_info[] = 62struct dev_info_t g_dev_info[] =
63{ 63{
64 {0x066f, 0x3780, 0, HID_DEVICE}, /* i.MX233 / STMP3780 */ 64 {0x066f, 0x3780, 1024, HID_DEVICE}, /* i.MX233 / STMP3780 */
65 {0x066f, 0x3770, 0, HID_DEVICE}, /* STMP3770 */ 65 {0x066f, 0x3770, 48, HID_DEVICE}, /* STMP3770 */
66 {0x15A2, 0x004F, 0, HID_DEVICE}, /* i.MX28 */ 66 {0x15A2, 0x004F, 1024, HID_DEVICE}, /* i.MX28 */
67 {0x066f, 0x3600, 4096, RECOVERY_DEVICE}, /* STMP36xx */ 67 {0x066f, 0x3600, 4096, RECOVERY_DEVICE}, /* STMP36xx */
68}; 68};
69 69
@@ -427,8 +427,7 @@ static int probe_hid_xfer_size(libusb_device_handle *dev)
427 return xfer_size / 8; 427 return xfer_size / 8;
428 428
429 Lerr: 429 Lerr:
430 printf("Cannot probe transfer size, please specify it on command line.\n"); 430 printf("Cannot probe transfer size, using default.\n");
431 exit(11);
432 return 0; 431 return 0;
433} 432}
434 433
@@ -436,8 +435,7 @@ static int probe_xfer_size(enum dev_type_t prot, libusb_device_handle *dev)
436{ 435{
437 if(prot == HID_DEVICE) 436 if(prot == HID_DEVICE)
438 return probe_hid_xfer_size(dev); 437 return probe_hid_xfer_size(dev);
439 printf("Cannot probe transfer size, please specify it on command line.\n"); 438 printf("Cannot probe transfer size, using default.\n");
440 exit(10);
441 return 0; 439 return 0;
442} 440}
443 441
@@ -593,12 +591,19 @@ int main(int argc, char **argv)
593 dev_type = g_dev_info[db_idx].dev_type; 591 dev_type = g_dev_info[db_idx].dev_type;
594 xfer_size = g_dev_info[db_idx].xfer_size; 592 xfer_size = g_dev_info[db_idx].xfer_size;
595 } 593 }
594 /* if not forced, try to probe transfer size */
595 if(force_xfer_size == 0)
596 force_xfer_size = probe_xfer_size(dev_type, dev);
597 /* make a decision */
596 if(force_xfer_size > 0) 598 if(force_xfer_size > 0)
597 xfer_size = force_xfer_size; 599 xfer_size = force_xfer_size;
600 else if(xfer_size == 0)
601 {
602 printf("Cannot probe transfer size, please specify it on the command line.\n");
603 exit(10);
604 }
598 if(dev_type == PROBE_DEVICE) 605 if(dev_type == PROBE_DEVICE)
599 dev_type = probe_protocol(dev); 606 dev_type = probe_protocol(dev);
600 if(xfer_size == 0)
601 xfer_size = probe_xfer_size(dev_type, dev);
602 /* open file */ 607 /* open file */
603 FILE *f = fopen(filename, "r"); 608 FILE *f = fopen(filename, "r");
604 if(f == NULL) 609 if(f == NULL)