From: Marek Vasut <marex@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v3 4/5] usb/gadget: add the fastboot gadget
Date: Sat, 12 Apr 2014 00:08:59 +0200 [thread overview]
Message-ID: <201404120008.59452.marex@denx.de> (raw)
In-Reply-To: <1397157488-8695-5-git-send-email-robherring2@gmail.com>
On Thursday, April 10, 2014 at 09:18:06 PM, Rob Herring wrote:
> From: Sebastian Siewior <bigeasy@linutronix.de>
[...]
> +++ b/doc/README.android-fastboot
> @@ -0,0 +1,86 @@
> +Android Fastboot
> +~~~~~~~~~~~~~~~~
> +
> +Overview
> +========
> +The protocol that is used over USB is described in
> +README.android-fastboot-protocol in same folder.
"directory", this is not windows, so no folders here either ...
> +The current implementation does not yet support the flash and erase
> +commands.
> +
> +Client installation
> +===================
> +The counterpart to this gadget is the fastboot client which can
> +be found in Android's platform/system/core repository in the fastboot
> +folder. It runs on Windows, Linux and even OSx. Linux user are lucky since
> +they only need libusb.
OSX is written like so, the X is also capital.
[...]
> +In Action
> +=========
> +Enter into fastboot by executing the fastboot command in u-boot and you
> +should see:
> +|Fastboot entered...
> +
> +The gadget terminates once the is unplugged.
The above sentence makes zero sense to me.
[...]
> +
> +/* e1 */
This is a fine comment, but please make it sensible.
[...]
> +
> +static struct usb_request *ep0_req;
> +
> +struct usb_ep *ep_in;
> +struct usb_request *req_in;
> +
> +struct usb_ep *ep_out;
> +struct usb_request *req_out;
Please define all global variables at the top of the file.
[...]
> diff --git a/drivers/usb/gadget/g_fastboot.h
> b/drivers/usb/gadget/g_fastboot.h new file mode 100644
> index 0000000..733eb38
> --- /dev/null
> +++ b/drivers/usb/gadget/g_fastboot.h
> @@ -0,0 +1,15 @@
> +#ifndef _G_FASTBOOT_H_
> +#define _G_FASTBOOT_H_
> +
> +#define EP_BUFFER_SIZE 4096
> +
> +extern struct usb_ep *ep_in;
> +extern struct usb_request *req_in;
> +extern struct usb_ep *ep_out;
> +extern struct usb_request *req_out;
Ick, I really dislike how you're distributing the variables across the code. Is
this really necessary ?
> +void rx_handler_command(struct usb_ep *ep, struct usb_request *req);
> +int fastboot_tx_write(const char *buffer, unsigned int buffer_size);
> +const char *fb_find_usb_string(unsigned int id);
Please produce a consistent naming for those function names, something that can
also be identified that it's coming from the fastboot gadget. Otherwise, these
function names look rather random and are hard to pair with particular part of
U-Boot at first glance.
[...]
> +static int strcmp_l1(const char *s1, const char *s2)
> +{
> + return strncmp(s1, s2, strlen(s1));
I suspect someone will sooner or later call this function with non-null-
terminated string as $s1 . Can't you do some boundary checking here?
I'd hate to have some fastbleed bug here (sorry, bad pun).
[...]
> +static void rx_handler_dl_image(struct usb_ep *ep, struct usb_request
> *req) +{
> + char response[RESPONSE_LEN];
> + unsigned int transfer_size = download_size - download_bytes;
> + const unsigned char *buffer = req->buf;
> + unsigned int buffer_size = req->actual;
> +
> + if (req->status != 0) {
> + printf("Bad status: %d\n", req->status);
> + return;
> + }
> +
> + if (buffer_size < transfer_size)
> + transfer_size = buffer_size;
> +
> + memcpy((void *)load_addr + download_bytes, buffer, transfer_size);
> +
> + download_bytes += transfer_size;
> +
> + /* Check if transfer is done */
> + if (download_bytes >= download_size) {
> + /*
> + * Reset global transfer variable, keep download_bytes because
> + * it will be used in the next possible flashing command
> + */
> + download_size = 0;
> + req->complete = rx_handler_command;
> + req->length = EP_BUFFER_SIZE;
> +
> + sprintf(response, "OKAY");
> + fastboot_tx_write_str(response);
> +
> + printf("\ndownloading of %d bytes finished\n", download_bytes);
> + } else {
> + req->length = rx_bytes_expected();
> + }
> +
> + if (download_bytes && !(download_bytes % BYTES_PER_DOT)) {
> + printf(".");
putc()
> + if (!(download_bytes % (74 * BYTES_PER_DOT)))
> + printf("\n");
putc()
> + }
> + req->actual = 0;
> + usb_ep_queue(ep, req, 0);
> +}
[...]
> +#define FB_STR_PRODUCT_IDX 1
> +#define FB_STR_SERIAL_IDX 2
> +#define FB_STR_CONFIG_IDX 3
> +#define FB_STR_INTERFACE_IDX 4
> +#define FB_STR_MANUFACTURER_IDX 5
> +#define FB_STR_PROC_REV_IDX 6
> +#define FB_STR_PROC_TYPE_IDX 7
Use enum {} for those for the sake of typechecking ?
[..]
next prev parent reply other threads:[~2014-04-11 22:08 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-10 19:18 [U-Boot] [PATCH v3 0/5] Android Fastboot support Rob Herring
2014-04-10 19:18 ` [U-Boot] [PATCH v3 1/5] common: introduce maximum load size Rob Herring
2014-04-11 14:46 ` Tom Rini
2014-04-15 12:55 ` Lukasz Majewski
2014-04-15 21:59 ` Wolfgang Denk
2014-04-15 23:54 ` Rob Herring
2014-04-16 7:27 ` Wolfgang Denk
2014-04-10 19:18 ` [U-Boot] [PATCH v3 2/5] usb: handle NULL table in usb_gadget_get_string Rob Herring
2014-04-11 14:46 ` Tom Rini
2014-04-11 21:39 ` Marek Vasut
2014-04-15 13:00 ` Lukasz Majewski
2014-04-10 19:18 ` [U-Boot] [PATCH v3 3/5] image: add support for Android's boot image format Rob Herring
2014-04-11 14:46 ` Tom Rini
2014-04-11 21:44 ` Marek Vasut
2014-04-12 21:54 ` Rob Herring
2014-04-13 16:55 ` Marek Vasut
2014-04-15 13:59 ` Lukasz Majewski
2014-04-10 19:18 ` [U-Boot] [PATCH v3 4/5] usb/gadget: add the fastboot gadget Rob Herring
2014-04-11 7:14 ` Bo Shen
2014-04-11 12:55 ` Rob Herring
2014-04-11 22:13 ` Marek Vasut
2014-04-14 6:51 ` Lukasz Majewski
2014-04-14 2:28 ` Bo Shen
2014-04-11 7:30 ` Lukasz Majewski
2014-04-11 14:46 ` Tom Rini
2014-04-11 22:08 ` Marek Vasut [this message]
2014-04-15 15:41 ` Lukasz Majewski
2014-04-15 16:01 ` Rob Herring
2014-04-10 19:18 ` [U-Boot] [PATCH v3 5/5] arm: beagle: enable Android fastboot support Rob Herring
2014-04-11 14:46 ` Tom Rini
2014-04-10 19:18 ` [U-Boot] [PATCH 5/5] beagle: " Rob Herring
2014-04-10 19:42 ` Rob Herring
2014-04-11 7:04 ` [U-Boot] [PATCH v3 0/5] Android Fastboot support Sebastian Andrzej Siewior
2014-04-11 14:15 ` Tom Rini
2014-04-11 14:45 ` Tom Rini
2014-04-14 12:19 ` Rob Herring
2014-04-18 13:54 ` [U-Boot] [PATCH v4 " Rob Herring
2014-04-18 13:54 ` [U-Boot] [PATCH v4 1/5] usb: handle NULL table in usb_gadget_get_string Rob Herring
2014-04-18 13:54 ` [U-Boot] [PATCH v4 2/5] image: add support for Android's boot image format Rob Herring
2014-04-18 13:54 ` [U-Boot] [PATCH v4 3/5] usb: musb: fill in usb_gadget_unregister_driver Rob Herring
2014-04-23 9:46 ` Lukasz Majewski
2014-04-18 13:54 ` [U-Boot] [PATCH v4 4/5] usb/gadget: add the fastboot gadget Rob Herring
2014-04-23 11:02 ` Lukasz Majewski
2014-04-23 12:25 ` Marek Vasut
2014-04-24 15:02 ` Rob Herring
2014-04-25 5:26 ` Lukasz Majewski
2014-04-25 13:30 ` Rob Herring
2014-04-28 7:00 ` Lukasz Majewski
2014-04-18 13:54 ` [U-Boot] [PATCH v4 5/5] arm: beagle: enable Android fastboot support Rob Herring
2014-04-18 16:14 ` [U-Boot] [PATCH v4 0/5] Android Fastboot support Wolfgang Denk
2014-04-21 15:13 ` Marek Vasut
2014-04-23 14:36 ` Rob Herring
2014-04-23 16:57 ` Marek Vasut
2014-05-05 20:08 ` [U-Boot] [PATCH v5 0/3] " Rob Herring
2014-05-05 20:08 ` [U-Boot] [PATCH v5 1/3] image: add support for Android's boot image format Rob Herring
2014-05-05 20:08 ` [U-Boot] [PATCH v5 2/3] usb/gadget: add the fastboot gadget Rob Herring
2014-05-05 20:08 ` [U-Boot] [PATCH v5 3/3] arm: beagle: enable Android fastboot support Rob Herring
2014-05-05 20:21 ` [U-Boot] [PATCH v5 0/3] Android Fastboot support Marek Vasut
2014-05-07 6:35 ` Lukasz Majewski
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=201404120008.59452.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