scripts: imx-usb-loader: Move load_file up
To avoid forward declaration in a later patch. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
parent
eee4a26680
commit
24315db717
1 changed files with 86 additions and 86 deletions
|
@ -585,6 +585,92 @@ static int write_memory(struct libusb_device_handle *h, struct usb_id *p_id,
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int load_file(struct libusb_device_handle *h, struct usb_id *p_id,
|
||||||
|
void *buf, unsigned len, unsigned dladdr, unsigned char type)
|
||||||
|
{
|
||||||
|
static unsigned char dl_command[] = {
|
||||||
|
0x04,
|
||||||
|
0x04,
|
||||||
|
V(0), /* address */
|
||||||
|
0x00, /* format */
|
||||||
|
V(0x00000020), /* data count */
|
||||||
|
V(0), /* data */
|
||||||
|
0xaa, /* type */
|
||||||
|
};
|
||||||
|
int last_trans, err;
|
||||||
|
int retry = 0;
|
||||||
|
unsigned transfer_size = 0;
|
||||||
|
unsigned char tmp[64];
|
||||||
|
void *p;
|
||||||
|
int cnt;
|
||||||
|
|
||||||
|
dl_command[2] = (unsigned char)(dladdr >> 24);
|
||||||
|
dl_command[3] = (unsigned char)(dladdr >> 16);
|
||||||
|
dl_command[4] = (unsigned char)(dladdr >> 8);
|
||||||
|
dl_command[5] = (unsigned char)(dladdr);
|
||||||
|
|
||||||
|
dl_command[7] = (unsigned char)(len >> 24);
|
||||||
|
dl_command[8] = (unsigned char)(len >> 16);
|
||||||
|
dl_command[9] = (unsigned char)(len >> 8);
|
||||||
|
dl_command[10] = (unsigned char)(len);
|
||||||
|
dl_command[15] = type;
|
||||||
|
|
||||||
|
for (;;) {
|
||||||
|
err = transfer(h, 1, dl_command, 16, &last_trans, p_id);
|
||||||
|
if (!err)
|
||||||
|
break;
|
||||||
|
|
||||||
|
printf("dl_command err=%i, last_trans=%i\n", err, last_trans);
|
||||||
|
|
||||||
|
if (retry > 5)
|
||||||
|
return -4;
|
||||||
|
retry++;
|
||||||
|
}
|
||||||
|
|
||||||
|
retry = 0;
|
||||||
|
|
||||||
|
if (p_id->mach_id->mode == MODE_BULK) {
|
||||||
|
err = transfer(h, 3, tmp, sizeof(tmp), &last_trans, p_id);
|
||||||
|
if (err)
|
||||||
|
printf("in err=%i, last_trans=%i %02x %02x %02x %02x\n",
|
||||||
|
err, last_trans, tmp[0], tmp[1], tmp[2], tmp[3]);
|
||||||
|
}
|
||||||
|
|
||||||
|
p = buf;
|
||||||
|
cnt = len;
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
int now = get_min(cnt, p_id->mach_id->max_transfer);
|
||||||
|
|
||||||
|
if (!now)
|
||||||
|
break;
|
||||||
|
|
||||||
|
err = transfer(h, 2, p, now, &now, p_id);
|
||||||
|
if (err) {
|
||||||
|
printf("dl_command err=%i, last_trans=%i\n", err, last_trans);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
p += now;
|
||||||
|
cnt -= now;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (p_id->mach_id->mode == MODE_HID) {
|
||||||
|
err = transfer(h, 3, tmp, sizeof(tmp), &last_trans, p_id);
|
||||||
|
if (err)
|
||||||
|
printf("3 in err=%i, last_trans=%i %02x %02x %02x %02x\n",
|
||||||
|
err, last_trans, tmp[0], tmp[1], tmp[2], tmp[3]);
|
||||||
|
err = transfer(h, 4, tmp, sizeof(tmp), &last_trans, p_id);
|
||||||
|
if (err)
|
||||||
|
printf("4 in err=%i, last_trans=%i %02x %02x %02x %02x\n",
|
||||||
|
err, last_trans, tmp[0], tmp[1], tmp[2], tmp[3]);
|
||||||
|
} else {
|
||||||
|
do_status(h, p_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
return transfer_size;
|
||||||
|
}
|
||||||
|
|
||||||
static int write_dcd_table_ivt(struct libusb_device_handle *h, struct usb_id *p_id,
|
static int write_dcd_table_ivt(struct libusb_device_handle *h, struct usb_id *p_id,
|
||||||
struct imx_flash_header_v2 *hdr, unsigned char *file_start, unsigned cnt)
|
struct imx_flash_header_v2 *hdr, unsigned char *file_start, unsigned cnt)
|
||||||
{
|
{
|
||||||
|
@ -958,92 +1044,6 @@ static int process_header(struct libusb_device_handle *h, struct usb_id *p_id,
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int load_file(struct libusb_device_handle *h, struct usb_id *p_id,
|
|
||||||
void *buf, unsigned len, unsigned dladdr, unsigned char type)
|
|
||||||
{
|
|
||||||
static unsigned char dl_command[] = {
|
|
||||||
0x04,
|
|
||||||
0x04,
|
|
||||||
V(0), /* address */
|
|
||||||
0x00, /* format */
|
|
||||||
V(0x00000020), /* data count */
|
|
||||||
V(0), /* data */
|
|
||||||
0xaa, /* type */
|
|
||||||
};
|
|
||||||
int last_trans, err;
|
|
||||||
int retry = 0;
|
|
||||||
unsigned transfer_size = 0;
|
|
||||||
unsigned char tmp[64];
|
|
||||||
void *p;
|
|
||||||
int cnt;
|
|
||||||
|
|
||||||
dl_command[2] = (unsigned char)(dladdr >> 24);
|
|
||||||
dl_command[3] = (unsigned char)(dladdr >> 16);
|
|
||||||
dl_command[4] = (unsigned char)(dladdr >> 8);
|
|
||||||
dl_command[5] = (unsigned char)(dladdr);
|
|
||||||
|
|
||||||
dl_command[7] = (unsigned char)(len >> 24);
|
|
||||||
dl_command[8] = (unsigned char)(len >> 16);
|
|
||||||
dl_command[9] = (unsigned char)(len >> 8);
|
|
||||||
dl_command[10] = (unsigned char)(len);
|
|
||||||
dl_command[15] = type;
|
|
||||||
|
|
||||||
for (;;) {
|
|
||||||
err = transfer(h, 1, dl_command, 16, &last_trans, p_id);
|
|
||||||
if (!err)
|
|
||||||
break;
|
|
||||||
|
|
||||||
printf("dl_command err=%i, last_trans=%i\n", err, last_trans);
|
|
||||||
|
|
||||||
if (retry > 5)
|
|
||||||
return -4;
|
|
||||||
retry++;
|
|
||||||
}
|
|
||||||
|
|
||||||
retry = 0;
|
|
||||||
|
|
||||||
if (p_id->mach_id->mode == MODE_BULK) {
|
|
||||||
err = transfer(h, 3, tmp, sizeof(tmp), &last_trans, p_id);
|
|
||||||
if (err)
|
|
||||||
printf("in err=%i, last_trans=%i %02x %02x %02x %02x\n",
|
|
||||||
err, last_trans, tmp[0], tmp[1], tmp[2], tmp[3]);
|
|
||||||
}
|
|
||||||
|
|
||||||
p = buf;
|
|
||||||
cnt = len;
|
|
||||||
|
|
||||||
while (1) {
|
|
||||||
int now = get_min(cnt, p_id->mach_id->max_transfer);
|
|
||||||
|
|
||||||
if (!now)
|
|
||||||
break;
|
|
||||||
|
|
||||||
err = transfer(h, 2, p, now, &now, p_id);
|
|
||||||
if (err) {
|
|
||||||
printf("dl_command err=%i, last_trans=%i\n", err, last_trans);
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
p += now;
|
|
||||||
cnt -= now;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (p_id->mach_id->mode == MODE_HID) {
|
|
||||||
err = transfer(h, 3, tmp, sizeof(tmp), &last_trans, p_id);
|
|
||||||
if (err)
|
|
||||||
printf("3 in err=%i, last_trans=%i %02x %02x %02x %02x\n",
|
|
||||||
err, last_trans, tmp[0], tmp[1], tmp[2], tmp[3]);
|
|
||||||
err = transfer(h, 4, tmp, sizeof(tmp), &last_trans, p_id);
|
|
||||||
if (err)
|
|
||||||
printf("4 in err=%i, last_trans=%i %02x %02x %02x %02x\n",
|
|
||||||
err, last_trans, tmp[0], tmp[1], tmp[2], tmp[3]);
|
|
||||||
} else {
|
|
||||||
do_status(h, p_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
return transfer_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int do_irom_download(struct libusb_device_handle *h, struct usb_id *p_id,
|
static int do_irom_download(struct libusb_device_handle *h, struct usb_id *p_id,
|
||||||
struct usb_work *curr, int verify)
|
struct usb_work *curr, int verify)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue