diff options
Diffstat (limited to 'utils')
-rw-r--r-- | utils/imxtools/sbtools/sbloader.c | 23 |
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 | ||
62 | struct dev_info_t g_dev_info[] = | 62 | struct 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) |