From: Lukasz Majewski Date: Thu, 12 May 2016 11:25:43 +0000 (+0200) Subject: TPL: TM2: f_thor: Allow to download 4GB images X-Git-Tag: accepted/tizen/unified/20241126.175211~512 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8b240ba484b6fa8b0c8329945e7c2b152c5870c3;p=platform%2Fkernel%2Fu-boot.git TPL: TM2: f_thor: Allow to download 4GB images This commit fixes 2GB file size limit for thor downloader. The application on host side sends the downloaded file size as 32-bit unsigned value. But the thor implementation on U-Boot side interpreted this as signed value. This caused an error for files with size greater than 2GB. This commit fixes the data types in code, which allows to send file of size 4GB. Signed-off-by: Przemyslaw Marczak [m.szyprowski: ported from tizen.org and fixed 64bit issues] Signed-off-by: Marek Szyprowski --- diff --git a/drivers/usb/gadget/f_thor.c b/drivers/usb/gadget/f_thor.c index a842972f08..aa64e2ac46 100644 --- a/drivers/usb/gadget/f_thor.c +++ b/drivers/usb/gadget/f_thor.c @@ -180,7 +180,7 @@ static long long int download_head(struct udevice *udc, if (ret_rcv < 0) return ret_rcv; rcv_cnt += ret_rcv; - debug("%d: RCV data count: %u cnt: %d\n", usb_pkt_cnt, + debug("%d: RCV data count: %zu cnt: %d\n", usb_pkt_cnt, rcv_cnt, *cnt); if ((rcv_cnt % THOR_STORE_UNIT_SIZE) == 0) { @@ -205,7 +205,7 @@ static long long int download_head(struct udevice *udc, * on the medium (they are smaller than THOR_STORE_UNIT_SIZE) */ *left = left_to_rcv + buf - transfer_buffer; - debug("%s: left: %u left_to_rcv: %u buf: 0x%p\n", __func__, + debug("%s: left: %zu left_to_rcv: %zu buf: 0x%p\n", __func__, *left, left_to_rcv, buf); if (left_to_rcv) { @@ -217,7 +217,7 @@ static long long int download_head(struct udevice *udc, send_data_rsp(udc, 0, ++usb_pkt_cnt); } - debug("%s: %u total: %llu cnt: %d\n", __func__, rcv_cnt, total, *cnt); + debug("%s: %zu total: %llu cnt: %d\n", __func__, rcv_cnt, total, *cnt); return 0; } @@ -284,7 +284,7 @@ static long long int process_rqt_download(struct udevice *udc, const struct rqt_ total_file_size = thor_file_size; downloaded_file_size = 0; #endif - debug("INIT: total %u bytes\n", (size_t)rqt->int_data[0]); + debug("INIT: total %zu bytes\n", (size_t)rqt->int_data[0]); break; case RQT_DL_FILE_INFO: file_type = rqt->int_data[0]; @@ -301,7 +301,7 @@ static long long int process_rqt_download(struct udevice *udc, const struct rqt_ memcpy(f_name, rqt->str_data[0], F_NAME_BUF_SIZE); f_name[F_NAME_BUF_SIZE] = '\0'; - debug("INFO: name(%s, %d), size(%llu), type(%d)\n", + debug("INFO: name(%s, %d), size(%zu), type(%d)\n", f_name, 0, thor_file_size, file_type); rsp->int_data[0] = THOR_PACKET_SIZE;