[U-Boot] [PATCH 2/2] gadget: f_thor: update to support more than 4GB file as thor 5.0
Lukasz Majewski
lukma at denx.de
Thu May 10 10:58:20 UTC 2018
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 at 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);
> + 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';
>
> 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 at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180510/3d50e8e3/attachment.sig>
More information about the U-Boot
mailing list