12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- From 02b9189111d560c40c1ee4252b65d1dd59244108 Mon Sep 17 00:00:00 2001
- From: Phil Elwell <phil@raspberrypi.org>
- Date: Fri, 5 Dec 2014 17:26:26 +0000
- Subject: [PATCH] fdt: Add support for the CONFIG_CMDLINE_EXTEND option
- ---
- drivers/of/fdt.c | 29 ++++++++++++++++++++++++-----
- 1 file changed, 24 insertions(+), 5 deletions(-)
- --- a/drivers/of/fdt.c
- +++ b/drivers/of/fdt.c
- @@ -957,19 +957,38 @@ int __init early_init_dt_scan_chosen(uns
-
- /* Retrieve command line */
- p = of_get_flat_dt_prop(node, "bootargs", &l);
- - if (p != NULL && l > 0)
- - strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE));
-
- /*
- * CONFIG_CMDLINE is meant to be a default in case nothing else
- * managed to set the command line, unless CONFIG_CMDLINE_FORCE
- * is set in which case we override whatever was found earlier.
- + *
- + * However, it can be useful to be able to treat the default as
- + * a starting point to be extended using CONFIG_CMDLINE_EXTEND.
- */
- + ((char *)data)[0] = '\0';
- +
- #ifdef CONFIG_CMDLINE
- -#ifndef CONFIG_CMDLINE_FORCE
- - if (!((char *)data)[0])
- + strlcpy(data, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
- +
- + if (p != NULL && l > 0) {
- +#if defined(CONFIG_CMDLINE_EXTEND)
- + int len = strlen(data);
- + if (len > 0) {
- + strlcat(data, " ", COMMAND_LINE_SIZE);
- + len++;
- + }
- + strlcpy((char *)data + len, p, min((int)l, COMMAND_LINE_SIZE - len));
- +#elif defined(CONFIG_CMDLINE_FORCE)
- + pr_warning("Ignoring bootargs property (using the default kernel command line)\n");
- +#else
- + /* Neither extend nor force - just override */
- + strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE));
- #endif
- - strlcpy(data, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
- + }
- +#else /* CONFIG_CMDLINE */
- + if (p != NULL && l > 0)
- + strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE));
- #endif /* CONFIG_CMDLINE */
-
- pr_debug("Command line is: %s\n", (char*)data);
|