[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