diff options
author | Seung-Woo Kim <sw0312.kim@samsung.com> | 2018-05-10 10:52:15 +0900 |
---|---|---|
committer | Marek Vasut <marex@denx.de> | 2018-05-18 13:17:30 +0200 |
commit | 1fe9ae76b113103bcc40aa15949f9dd8aa0a06a2 (patch) | |
tree | 80d86ae54e7aa73f549529e20ad280640f6ab730 /drivers/usb/gadget/f_thor.c | |
parent | f9e8dc0abda94869d2734843c1c14ba6f2867031 (diff) |
gadget: f_thor: update to support more than 4GB file as thor 5.0
During file download, it only uses 32bit variable for file size and
it limits maximum file size less than 4GB. Update to support more
than 4GB file with using two 32bit variables for file size as thor
protocol 5.0.
Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
Diffstat (limited to 'drivers/usb/gadget/f_thor.c')
-rw-r--r-- | drivers/usb/gadget/f_thor.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/usb/gadget/f_thor.c b/drivers/usb/gadget/f_thor.c index 6d38cb6d49..c8eda05832 100644 --- a/drivers/usb/gadget/f_thor.c +++ b/drivers/usb/gadget/f_thor.c @@ -262,8 +262,10 @@ static long long int process_rqt_download(const struct rqt_box *rqt) switch (rqt->rqt_data) { case RQT_DL_INIT: - thor_file_size = rqt->int_data[0]; - debug("INIT: total %d bytes\n", rqt->int_data[0]); + thor_file_size = (unsigned long long int)rqt->int_data[0] + + (((unsigned long long int)rqt->int_data[1]) + << 32); + debug("INIT: total %llu bytes\n", thor_file_size); break; case RQT_DL_FILE_INFO: file_type = rqt->int_data[0]; @@ -274,7 +276,9 @@ static long long int process_rqt_download(const struct rqt_box *rqt) break; } - thor_file_size = rqt->int_data[1]; + thor_file_size = (unsigned long long int)rqt->int_data[1] + + (((unsigned long long int)rqt->int_data[2]) + << 32); memcpy(f_name, rqt->str_data[0], F_NAME_BUF_SIZE); f_name[F_NAME_BUF_SIZE] = '\0'; |