... if global variable configured to do it. Signed-off-by: Oleksij Rempel <o.rempel@xxxxxxxxxxxxxx> --- drivers/usb/gadget/Kconfig | 6 ++++ drivers/usb/gadget/Makefile | 1 + drivers/usb/gadget/autostart.c | 67 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 drivers/usb/gadget/autostart.c diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig index eb279ae8d..dd5d4a75a 100644 --- a/drivers/usb/gadget/Kconfig +++ b/drivers/usb/gadget/Kconfig @@ -30,6 +30,12 @@ config USB_GADGET_DRIVER_PXA27X default y select USB_GADGET_DUALSPEED +config USB_GADGET_AUTOSTART + bool + default y + select ENVIRONMENT_VARIABLES + prompt "Automatically start usbgadget on boot" + comment "USB Gadget drivers" config USB_GADGET_DFU diff --git a/drivers/usb/gadget/Makefile b/drivers/usb/gadget/Makefile index 9ef594575..e74cf0266 100644 --- a/drivers/usb/gadget/Makefile +++ b/drivers/usb/gadget/Makefile @@ -1,5 +1,6 @@ obj-$(CONFIG_USB_GADGET) += composite.o config.o usbstring.o epautoconf.o udc-core.o functions.o config.o multi.o +obj-$(CONFIG_USB_GADGET_AUTOSTART) += autostart.o obj-$(CONFIG_USB_GADGET_SERIAL) += u_serial.o serial.o f_serial.o f_acm.o obj-$(CONFIG_USB_GADGET_DFU) += dfu.o obj-$(CONFIG_USB_GADGET_FASTBOOT) += f_fastboot.o diff --git a/drivers/usb/gadget/autostart.c b/drivers/usb/gadget/autostart.c new file mode 100644 index 000000000..43c2ba23d --- /dev/null +++ b/drivers/usb/gadget/autostart.c @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2017 Oleksij Rempel <o.rempel@xxxxxxxxxxxxxx>, Pengutronix + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ +#include <common.h> +#include <command.h> +#include <errno.h> +#include <malloc.h> +#include <getopt.h> +#include <fs.h> +#include <xfuncs.h> +#include <usb/usbserial.h> +#include <usb/dfu.h> +#include <usb/gadget-multi.h> +#include <globalvar.h> +#include <magicvar.h> + +static int autostart; +static int acm; +static char *fastboot_function; + +static int usbgadget_autostart(void) +{ + struct f_multi_opts opts = {}; + + if (!autostart) + return 0; + + if (fastboot_function) + opts.fastboot_opts.files = file_list_parse(fastboot_function); + + opts.create_acm = acm; + + return usb_multi_register(&opts); +} +postenvironment_initcall(usbgadget_autostart); + +static int usbgadget_globalvars_init(void) +{ + + globalvar_add_simple_bool("usbgadget.autostart", &autostart); + globalvar_add_simple_bool("usbgadget.acm", &acm); + globalvar_add_simple_string("usbgadget.fastboot_function", + &fastboot_function); + + return 0; +} +device_initcall(usbgadget_globalvars_init); + +BAREBOX_MAGICVAR_NAMED(global_usbgadget_autostart, + global.usbgadget.autostart, + "usbgadget: Automatically start usbgadget on boot"); +BAREBOX_MAGICVAR_NAMED(global_usbgadget_acm, + global.usbgadget.acm, + "usbgadget: Create CDC ACM function"); +BAREBOX_MAGICVAR_NAMED(global_usbgadget_fastboot_function, + global.usbgadget.fastboot_function, + "usbgadget: Create Android Fastboot function"); -- 2.11.0 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox