[U-Boot] [PATCH] fastboot: allow retrieving fastboot variables from env

Boris Brezillon boris.brezillon at free-electrons.com
Thu Mar 17 17:21:23 CET 2016


From: Rob Herring <rob.herring at linaro.org>

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 at linaro.org>
[Boris Brezillon: add a commit message]
Signed-off-by: Boris Brezillon <boris.brezillon at free-electrons.com>

Signed-off-by: Boris Brezillon <boris.brezillon at free-electrons.com>
---
 drivers/usb/gadget/f_fastboot.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/gadget/f_fastboot.c b/drivers/usb/gadget/f_fastboot.c
index a54b4ee..2e87fee 100644
--- a/drivers/usb/gadget/f_fastboot.c
+++ b/drivers/usb/gadget/f_fastboot.c
@@ -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);
 }
-- 
2.5.0



More information about the U-Boot mailing list