From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steve Rae Date: Wed, 27 Aug 2014 10:43:24 -0700 Subject: [U-Boot] [PATCH v6 4/4] usb/gadget: fastboot: implement sparse format In-Reply-To: References: <1409078850-7873-1-git-send-email-srae@broadcom.com> <1409078850-7873-5-git-send-email-srae@broadcom.com> Message-ID: <53FE18BC.1020603@broadcom.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Michael On 14-08-26 10:07 PM, Michael Trimarchi wrote: > Hi > > Il 26/ago/2014 20:46 "Steve Rae" ha scritto: >> >> - add capability to "fastboot flash" with sparse format images >> >> Signed-off-by: Steve Rae >> Acked-by: Lukasz Majewski >> --- >> >> Changes in v6: >> - remove excess braces >> >> Changes in v5: >> - use the common/aboot.c for the "sparse format" handling >> >> Changes in v4: >> - rearranged "sparse format" support in this patchset, in order to > isolate... >> >> Changes in v3: None >> Changes in v2: None >> >> common/Makefile | 1 + >> common/fb_mmc.c | 32 ++++++++++++++++++++++---------- >> 2 files changed, 23 insertions(+), 10 deletions(-) >> >> diff --git a/common/Makefile b/common/Makefile >> index daebe39..bc53078 100644 >> --- a/common/Makefile >> +++ b/common/Makefile >> @@ -268,6 +268,7 @@ obj-y += stdio.o >> >> # This option is not just y/n - it can have a numeric value >> ifdef CONFIG_FASTBOOT_FLASH_MMC_DEV >> +obj-y += aboot.o >> obj-y += fb_mmc.o >> endif >> >> diff --git a/common/fb_mmc.c b/common/fb_mmc.c >> index 14d3982..fb06d8a 100644 >> --- a/common/fb_mmc.c >> +++ b/common/fb_mmc.c >> @@ -7,16 +7,24 @@ >> #include >> #include >> #include >> +#include >> +#include >> >> /* The 64 defined bytes plus the '\0' */ >> #define RESPONSE_LEN (64 + 1) >> >> static char *response_str; >> >> -static void fastboot_resp(const char *s) >> +void fastboot_fail(const char *s) >> { >> - strncpy(response_str, s, RESPONSE_LEN); >> - response_str[RESPONSE_LEN - 1] = '\0'; >> + strncpy(response_str, "FAIL", 4); >> + strncat(response_str, s, RESPONSE_LEN - 4 - 1); >> +} >> + > > Change not connect to bug description. If you remove static this should go > in some header. For now it's only overhead. Sorry for the confusion.... (1) the file "include/aboot.h" defines these two functions, and is part of the patchset that this series depends on (as documented in the cover letter): This series depends on: http://patchwork.ozlabs.org/patch/382443/ (to 382446) (2) this is the implementation of those functions that are required by that patchset (3) so I thought the the commit message was sufficient -- implying that in order to implement the "sparse format" (from aboot.c) that these changes are required... If required, I could submit a "v7" with more information in the commit message.... Please let me know! Thanks, Steve > >> +void fastboot_okay(const char *s) >> +{ >> + strncpy(response_str, "OKAY", 4); >> + strncat(response_str, s, RESPONSE_LEN - 4 - 1); >> } >> > > Ditto > > Michael > >> static void write_raw_image(block_dev_desc_t *dev_desc, disk_partition_t > *info, >> @@ -32,7 +40,7 @@ static void write_raw_image(block_dev_desc_t *dev_desc, > disk_partition_t *info, >> >> if (blkcnt > info->size) { >> error("too large for partition: '%s'\n", part_name); >> - fastboot_resp("FAILtoo large for partition"); >> + fastboot_fail("too large for partition"); >> return; >> } >> >> @@ -42,13 +50,13 @@ static void write_raw_image(block_dev_desc_t > *dev_desc, disk_partition_t *info, >> buffer); >> if (blks != blkcnt) { >> error("failed writing to device %d\n", dev_desc->dev); >> - fastboot_resp("FAILfailed writing to device"); >> + fastboot_fail("failed writing to device"); >> return; >> } >> >> printf("........ wrote " LBAFU " bytes to '%s'\n", blkcnt * > info->blksz, >> part_name); >> - fastboot_resp("OKAY"); >> + fastboot_okay(""); >> } >> >> void fb_mmc_flash_write(const char *cmd, void *download_buffer, >> @@ -64,17 +72,21 @@ void fb_mmc_flash_write(const char *cmd, void > *download_buffer, >> dev_desc = get_dev("mmc", CONFIG_FASTBOOT_FLASH_MMC_DEV); >> if (!dev_desc || dev_desc->type == DEV_TYPE_UNKNOWN) { >> error("invalid mmc device\n"); >> - fastboot_resp("FAILinvalid mmc device"); >> + fastboot_fail("invalid mmc device"); >> return; >> } >> >> ret = get_partition_info_efi_by_name(dev_desc, cmd, &info); >> if (ret) { >> error("cannot find partition: '%s'\n", cmd); >> - fastboot_resp("FAILcannot find partition"); >> + fastboot_fail("cannot find partition"); >> return; >> } >> >> - write_raw_image(dev_desc, &info, cmd, download_buffer, >> - download_bytes); >> + if (is_sparse_image(download_buffer)) >> + write_sparse_image(dev_desc, &info, cmd, download_buffer, >> + download_bytes); >> + else >> + write_raw_image(dev_desc, &info, cmd, download_buffer, >> + download_bytes); >> } >> -- >> 1.8.5 >> >> _______________________________________________ >> U-Boot mailing list >> U-Boot at lists.denx.de >> http://lists.denx.de/mailman/listinfo/u-boot >