From: Marek Vasut <marex@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v3 2/4] usb/gadget: fastboot: add eMMC support for flash command
Date: Thu, 31 Jul 2014 03:37:50 +0200 [thread overview]
Message-ID: <201407310337.50805.marex@denx.de> (raw)
In-Reply-To: <1403813604-31685-3-git-send-email-srae@broadcom.com>
On Thursday, June 26, 2014 at 10:13:22 PM, Steve Rae wrote:
[...]
> +
> +#include <common.h>
> +#include <fb_mmc.h>
> +#include <part.h>
> +#include <sparse_format.h>
> +
> +/* The 64 defined bytes plus \0 */
> +#define RESPONSE_LEN (64 + 1)
> +
> +static char *response_str;
I'd suggest to pass this "response_str" around instead of making it global.
> +static void fastboot_resp(const char *s)
> +{
> + strncpy(response_str, s, RESPONSE_LEN);
> + response_str[RESPONSE_LEN - 1] = '\0';
This could be shrunk to a single snprintf(response_str, RESPONSE_LENGTH, s); I
think, but I'm not sure if the overhead won't grow.
> +}
> +
> +static int is_sparse_image(void *buf)
> +{
> + sparse_header_t *s_header = (sparse_header_t *)buf;
> +
> + if ((le32_to_cpu(s_header->magic) == SPARSE_HEADER_MAGIC) &&
> + (le16_to_cpu(s_header->major_version) == 1))
> + return 1;
> +
> + return 0;
> +}
> +
> +static void write_sparse_image(block_dev_desc_t *dev_desc,
> + disk_partition_t *info, const char *part_name,
> + void *buffer, unsigned int download_bytes)
> +{
> + lbaint_t blk;
> + lbaint_t blkcnt;
> + lbaint_t blks;
> + sparse_header_t *s_header = (sparse_header_t *)buffer;
> + chunk_header_t *c_header;
> + void *buf;
> + uint32_t blk_sz;
> + uint32_t remaining_chunks;
> + uint32_t bytes_written = 0;
> +
> + blk_sz = le32_to_cpu(s_header->blk_sz);
> +
> + /* verify s_header->blk_sz is exact multiple of info->blksz */
> + if (blk_sz != (blk_sz & ~(info->blksz - 1))) {
> + printf("%s: Sparse image block size issue [%u]\n",
> + __func__, blk_sz);
> + fastboot_resp("FAILsparse image block size issue");
Can't you just make the fastboot_resp() function a variadic one AND move the
printf() into the fastboot_resp() function? You could then even get consistent
output on both the device and in the response if you snprintf() into the
response_str first and then printf() the response_str .
> + return;
> + }
[...]
> +static void write_raw_image(block_dev_desc_t *dev_desc, disk_partition_t
> *info, + const char *part_name, void *buffer,
> + unsigned int download_bytes)
> +{
> + lbaint_t blkcnt;
> + lbaint_t blks;
> +
> + /* determine number of blocks to write */
> + blkcnt = ((download_bytes + (info->blksz - 1)) & ~(info->blksz - 1));
> + blkcnt = blkcnt / info->blksz;
> +
> + if (blkcnt > info->size) {
> + printf("%s: too large for partition: '%s'\n", __func__,
> + part_name);
> + fastboot_resp("FAILtoo large for partition");
> + return;
> + }
> +
> + printf("Flashing Raw Image\n");
Use puts() here and everywhere where printf() is not taking any args please.
> + blks = dev_desc->block_write(dev_desc->dev, info->start, blkcnt,
> + buffer);
> + if (blks != blkcnt) {
> + printf("%s: failed writing to device %d\n", __func__,
> + dev_desc->dev);
> + fastboot_resp("FAILfailed writing to device");
> + return;
> + }
> +
> + printf("........ wrote " LBAFU " bytes to '%s'\n", blkcnt * info->blksz,
> + part_name);
> + fastboot_resp("OKAY");
> +}
[...]
next prev parent reply other threads:[~2014-07-31 1:37 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-26 20:13 [U-Boot] [PATCH v3 0/4] Implement "fastboot flash" for eMMC Steve Rae
2014-06-26 20:13 ` [U-Boot] [PATCH v3 1/4] usb/gadget: fastboot: add sparse image definitions Steve Rae
2014-07-31 1:25 ` Marek Vasut
2014-07-31 17:32 ` Steve Rae
2014-08-01 12:13 ` Marek Vasut
2014-08-05 14:00 ` Tom Rini
2014-08-05 22:17 ` Steve Rae
2014-06-26 20:13 ` [U-Boot] [PATCH v3 2/4] usb/gadget: fastboot: add eMMC support for flash command Steve Rae
2014-07-31 1:37 ` Marek Vasut [this message]
2014-08-06 23:48 ` Steve Rae
2014-08-07 0:13 ` Marek Vasut
2014-08-07 0:28 ` Steve Rae
2014-08-07 13:23 ` Marek Vasut
2014-08-07 13:28 ` Pantelis Antoniou
2014-08-07 13:43 ` Marek Vasut
2014-08-07 16:52 ` Steve Rae
2014-08-07 17:12 ` Marek Vasut
2014-06-26 20:13 ` [U-Boot] [PATCH v3 3/4] usb/gadget: fastboot: add " Steve Rae
2014-07-31 1:39 ` Marek Vasut
2014-08-06 23:35 ` Steve Rae
2014-06-26 20:13 ` [U-Boot] [PATCH v3 4/4] usb/gadget: fastboot: minor cleanup Steve Rae
2014-07-31 1:40 ` Marek Vasut
2014-08-06 23:34 ` Steve Rae
2014-07-31 1:02 ` [U-Boot] [PATCH v3 0/4] Implement "fastboot flash" for eMMC Steve Rae
2014-07-31 1:23 ` Marek Vasut
2014-07-31 17:30 ` Steve Rae
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201407310337.50805.marex@denx.de \
--to=marex@denx.de \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox