diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2016-05-09 08:50:02 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2016-05-09 08:50:02 +0200 |
commit | 06f5a7c9ad41a78f6e19eca96574bb3c49d058c8 (patch) | |
tree | a9c5a63bf8a3fb778355832bee97cbb9b5e52d10 /drivers/usb | |
parent | 5c83ce6091f7ec0ea25cd9c1fadbb8f3438fa2e4 (diff) | |
parent | c17e8cf262a16f6038cd6f76f58de031f2317171 (diff) | |
download | barebox-06f5a7c9ad41a78f6e19eca96574bb3c49d058c8.tar.gz barebox-06f5a7c9ad41a78f6e19eca96574bb3c49d058c8.tar.xz |
Merge branch 'for-next/ubiformat'
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/gadget/Kconfig | 1 | ||||
-rw-r--r-- | drivers/usb/gadget/f_fastboot.c | 22 |
2 files changed, 16 insertions, 7 deletions
diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig index 13a3e7062a..81c3723200 100644 --- a/drivers/usb/gadget/Kconfig +++ b/drivers/usb/gadget/Kconfig @@ -44,7 +44,6 @@ config USB_GADGET_SERIAL config USB_GADGET_FASTBOOT bool select BANNER - depends on COMMAND_SUPPORT prompt "Android Fastboot support" endif diff --git a/drivers/usb/gadget/f_fastboot.c b/drivers/usb/gadget/f_fastboot.c index 859aaff279..08c96e1b4a 100644 --- a/drivers/usb/gadget/f_fastboot.c +++ b/drivers/usb/gadget/f_fastboot.c @@ -29,6 +29,8 @@ #include <dma.h> #include <fs.h> #include <libfile.h> +#include <ubiformat.h> +#include <stdlib.h> #include <file-list.h> #include <progress.h> #include <environment.h> @@ -688,9 +690,12 @@ static void cb_flash(struct usb_ep *ep, struct usb_request *req, const char *cmd } if (filetype == filetype_ubi) { - char *cmd; int fd; struct mtd_info_user meminfo; + struct ubiformat_args args = { + .yes = 1, + .image = FASTBOOT_TMPFILE, + }; fd = open(filename, O_RDONLY); if (fd < 0) @@ -702,14 +707,14 @@ static void cb_flash(struct usb_ep *ep, struct usb_request *req, const char *cmd if (ret) goto copy; - cmd = basprintf("ubiformat -y -f %s %s", FASTBOOT_TMPFILE, - filename); - fastboot_tx_print(f_fb, "INFOThis is an UBI image..."); - ret = run_command(cmd); + if (!IS_ENABLED(CONFIG_UBIFORMAT)) { + fastboot_tx_print(f_fb, "FAILubiformat is not available"); + return; + } - free(cmd); + ret = ubiformat(meminfo.mtd, &args); if (ret) { fastboot_tx_print(f_fb, "FAILwrite partition: %s", strerror(-ret)); @@ -868,6 +873,11 @@ static void cb_oem_exec(struct usb_ep *ep, struct usb_request *req, const char * struct f_fastboot *f_fb = req->context; int ret; + if (!IS_ENABLED(CONFIG_COMMAND)) { + fastboot_tx_print(f_fb, "FAILno command support available"); + return; + } + ret = run_command(cmd); if (ret < 0) fastboot_tx_print(f_fb, "FAIL%s", strerror(-ret)); |