
Hi Seung-Woo,
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.
I assume that it was also tested that this patch will not break devices already using protocol version 4 (like some hobbysts trats2 users, or odroid XU3)?
To be more specific - is the init_data[1] zeroed in the earlier version (version 4) of the THOR protocol?
Signed-off-by: Seung-Woo Kim sw0312.kim@samsung.com
drivers/usb/gadget/f_thor.c | 10 +++++++--- drivers/usb/gadget/f_thor.h | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/usb/gadget/f_thor.c b/drivers/usb/gadget/f_thor.c index 6d38cb6..c8eda05 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);
break; case RQT_DL_FILE_INFO: file_type = rqt->int_data[0];debug("INIT: total %llu bytes\n", thor_file_size);
@@ -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])
memcpy(f_name, rqt->str_data[0], F_NAME_BUF_SIZE); f_name[F_NAME_BUF_SIZE] = '\0';<< 32);
diff --git a/drivers/usb/gadget/f_thor.h b/drivers/usb/gadget/f_thor.h index 47abc8a..8ba3fa2 100644 --- a/drivers/usb/gadget/f_thor.h +++ b/drivers/usb/gadget/f_thor.h @@ -34,7 +34,7 @@ struct usb_cdc_attribute_vendor_descriptor { __u8 DAUValue; } __packed;
-#define VER_PROTOCOL_MAJOR 4 +#define VER_PROTOCOL_MAJOR 5 #define VER_PROTOCOL_MINOR 0
enum rqt {
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de