]> git.ipfire.org Git - people/ms/u-boot.git/commitdiff
fastboot: allow retrieving fastboot variables from env
authorRob Herring <rob.herring@linaro.org>
Thu, 17 Mar 2016 16:21:23 +0000 (17:21 +0100)
committerTom Rini <trini@konsulko.com>
Fri, 1 Apr 2016 21:17:40 +0000 (17:17 -0400)
Some boards need to expose device specific variable through fastboot
(to adpat the flashing script depending on hardware revision for
example).

Provide a way to expose custom fastboot variables. Note that all
variables meant to be exposed through fastboot should be be prefixed
with 'fastboot.', the variable should not exceed 32 bytes (including
the prefix and the trailing '\0') and the variable content should
fit in the response buffer (60 bytes excluding the 'OKAY' prefix and
the trailing '\0').

Signed-off-by: Rob Herring <rob.herring@linaro.org>
[Boris Brezillon: add a commit message]
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Acked-by: Steve Rae <srae@broadcom.com>
drivers/usb/gadget/f_fastboot.c

index a54b4eebccab45e399916c8012727e4950a39111..2e87feeece36a8a2e02ff441ab83d3da4b5b7442 100644 (file)
@@ -413,8 +413,16 @@ static void cb_getvar(struct usb_ep *ep, struct usb_request *req)
                else
                        strcpy(response, "FAILValue not set");
        } else {
-               printf("WARNING: unknown variable: %s\n", cmd);
-               strcpy(response, "FAILVariable not implemented");
+               char envstr[32];
+
+               snprintf(envstr, sizeof(envstr) - 1, "fastboot.%s", cmd);
+               s = getenv(envstr);
+               if (s) {
+                       strncat(response, s, chars_left);
+               } else {
+                       printf("WARNING: unknown variable: %s\n", cmd);
+                       strcpy(response, "FAILVariable not implemented");
+               }
        }
        fastboot_tx_write_str(response);
 }