From 8228f9e1fd0dc5a5dc7ffe5aacd94cb3310cb94b Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Fri, 22 Apr 2016 09:02:25 +0200 Subject: usb: fastboot: Use C API for ubiformat This makes it possible to compile the fastboot gadget without command support. While at it bail out when ubiformat is not compiled in. Signed-off-by: Sascha Hauer --- drivers/usb/gadget/f_fastboot.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/drivers/usb/gadget/f_fastboot.c b/drivers/usb/gadget/f_fastboot.c index aaf784913b..b483d7f556 100644 --- a/drivers/usb/gadget/f_fastboot.c +++ b/drivers/usb/gadget/f_fastboot.c @@ -28,6 +28,8 @@ #include #include #include +#include +#include #include #include #include @@ -687,9 +689,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) @@ -701,13 +706,14 @@ static void cb_flash(struct usb_ep *ep, struct usb_request *req, const char *cmd if (ret) goto copy; - cmd = asprintf("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)); -- cgit v1.2.3