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
|
@ -585,6 +585,92 @@ static int write_memory(struct libusb_device_handle *h, struct usb_id *p_id,
|
|||
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,
|
||||
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;
|
||||
}
|
||||
|
||||
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,
|
||||
struct usb_work *curr, int verify)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue