From: Steffen Trumtrar <s.trumtrar@pengutronix.de> To: Barebox List <barebox@lists.infradead.org> Subject: [PATCH v4 08/10] commands: firmwareload: allow loading firmware from dt Date: Wed, 16 Jun 2021 08:32:44 +0200 [thread overview] Message-ID: <20210616063246.14900-8-s.trumtrar@pengutronix.de> (raw) In-Reply-To: <20210616063246.14900-1-s.trumtrar@pengutronix.de> firmwareload can only load a bitstream into an FPGA without any knowledge of possible additional needs (e.g. FPGA bridges). These are defined in the fpga-region nodes in the devicetree. The fpga-region describes the layout of the FPGA and the bridges it needs en/disabled. Add an option to let firmwareload go via the oftree route and load the firmware that way. Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de> --- v2->v3 - remove unused arg 'o' - use xstrdup() --- commands/firmwareload.c | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/commands/firmwareload.c b/commands/firmwareload.c index b735088f6117..c2a017c45479 100644 --- a/commands/firmwareload.c +++ b/commands/firmwareload.c @@ -5,18 +5,35 @@ #include <command.h> #include <getopt.h> #include <firmware.h> +#include <of.h> static int do_firmwareload(int argc, char *argv[]) { - int ret, opt; + int opt; const char *name = NULL, *firmware; struct firmware_mgr *mgr; + char *path = NULL; + char *search_path = NULL; + char *compatible = NULL; + int oftree = 0; - while ((opt = getopt(argc, argv, "t:l")) > 0) { + while ((opt = getopt(argc, argv, "t:c:S:D:l")) > 0) { switch (opt) { case 't': name = optarg; break; + case 'c': + compatible = xstrdup(optarg); + oftree = 1; + break; + case 'S': + search_path = xstrdup(optarg); + oftree = 1; + break; + case 'D': + path = xstrdup(optarg); + oftree = 1; + break; case 'l': firmwaremgr_list_handlers(); return 0; @@ -25,11 +42,20 @@ static int do_firmwareload(int argc, char *argv[]) } } - if (!(argc - optind)) + if (!oftree && !(argc - optind)) return COMMAND_ERROR_USAGE; firmware = argv[optind]; + if (oftree) { + if (!search_path && !firmware) { + printf("Provide at least a file to load or a search path (-S)\n"); + return 1; + } + + return of_firmware_load_file(path, compatible, search_path, firmware); + } + mgr = firmwaremgr_find(name); if (!mgr) { @@ -38,14 +64,15 @@ static int do_firmwareload(int argc, char *argv[]) return 1; } - ret = firmwaremgr_load_file(mgr, firmware); - - return ret; + return firmwaremgr_load_file(mgr, firmware); } BAREBOX_CMD_HELP_START(firmwareload) BAREBOX_CMD_HELP_TEXT("Options:") BAREBOX_CMD_HELP_OPT("-t <target>", "define the firmware handler by name") +BAREBOX_CMD_HELP_OPT("-c <compatible>", "type of firmware device (e.g. 'fpga-region')") +BAREBOX_CMD_HELP_OPT("-D <path>", "load firmware to oftree path") +BAREBOX_CMD_HELP_OPT("-S <path>", "load firmware using this search path") BAREBOX_CMD_HELP_OPT("-l\t", "list devices capable of firmware loading") BAREBOX_CMD_HELP_END -- 2.29.2 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox
next prev parent reply other threads:[~2021-06-16 6:34 UTC|newest] Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-06-16 6:32 [PATCH v4 01/10] reset: add of_reset_control_get to header Steffen Trumtrar 2021-06-16 6:32 ` [PATCH v4 02/10] drivers: add fpga bridge framework Steffen Trumtrar 2021-06-16 6:32 ` [PATCH v4 03/10] drivers: fpga: add socfpga bridges Steffen Trumtrar 2021-06-16 6:32 ` [PATCH v4 04/10] firmware: socfpga: change function prefixes Steffen Trumtrar 2021-06-16 6:32 ` [PATCH v4 05/10] firmware: import fpga-mgr.h from linux Steffen Trumtrar 2021-06-16 6:32 ` [PATCH v4 06/10] of: kconfig: of_overlay uses firmwaremgr_load_file Steffen Trumtrar 2021-06-16 6:32 ` [PATCH v4 07/10] of: of_firmware: add support for fpga bridges Steffen Trumtrar 2021-06-18 8:32 ` Steffen Trumtrar 2021-06-21 8:01 ` Sascha Hauer 2021-06-16 6:32 ` Steffen Trumtrar [this message] 2021-06-22 9:08 ` [PATCH v4 08/10] commands: firmwareload: allow loading firmware from dt Sascha Hauer 2021-06-16 6:32 ` [PATCH v4 09/10] drivers: firmware: socfpga: remove bridges shutdown Steffen Trumtrar 2021-06-16 6:32 ` [PATCH v4 10/10] firmware: add support for compressed images Steffen Trumtrar
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210616063246.14900-8-s.trumtrar@pengutronix.de \ --to=s.trumtrar@pengutronix.de \ --cc=barebox@lists.infradead.org \ --subject='Re: [PATCH v4 08/10] commands: firmwareload: allow loading firmware from dt' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox