brcm2708: update to v3.18
[15.05/openwrt.git] / target / linux / brcm2708 / patches-3.18 / 0065-fdt-Add-support-for-the-CONFIG_CMDLINE_EXTEND-option.patch
1 From b99050b7f7480499855dec85be2deac75db5fc62 Mon Sep 17 00:00:00 2001
2 From: Phil Elwell <phil@raspberrypi.org>
3 Date: Fri, 5 Dec 2014 17:26:26 +0000
4 Subject: [PATCH 65/99] fdt: Add support for the CONFIG_CMDLINE_EXTEND option
5
6 ---
7  drivers/of/fdt.c | 29 ++++++++++++++++++++++++-----
8  1 file changed, 24 insertions(+), 5 deletions(-)
9
10 diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
11 index 2e2b6d0..badc6a3 100644
12 --- a/drivers/of/fdt.c
13 +++ b/drivers/of/fdt.c
14 @@ -901,22 +901,38 @@ int __init early_init_dt_scan_chosen(uns
15  
16         /* Retrieve command line */
17         p = of_get_flat_dt_prop(node, "bootargs", &l);
18 -       if (p != NULL && l > 0)
19 -               strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE));
20 -       p = of_get_flat_dt_prop(node, "bootargs-append", &l);
21 -       if (p != NULL && l > 0)
22 -               strlcat(data, p, min_t(int, strlen(data) + (int)l, COMMAND_LINE_SIZE));
23  
24         /*
25          * CONFIG_CMDLINE is meant to be a default in case nothing else
26          * managed to set the command line, unless CONFIG_CMDLINE_FORCE
27          * is set in which case we override whatever was found earlier.
28 +        *
29 +        * However, it can be useful to be able to treat the default as
30 +        * a starting point to be extended using CONFIG_CMDLINE_EXTEND.
31          */
32 +       ((char *)data)[0] = '\0';
33 +
34  #ifdef CONFIG_CMDLINE
35 -#ifndef CONFIG_CMDLINE_FORCE
36 -       if (!((char *)data)[0])
37 +       strlcpy(data, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
38 +
39 +       if (p != NULL && l > 0) {
40 +#if defined(CONFIG_CMDLINE_EXTEND)
41 +               int len = strlen(data);
42 +               if (len > 0) {
43 +                       strlcat(data, " ", COMMAND_LINE_SIZE);
44 +                       len++;
45 +               }
46 +               strlcpy((char *)data + len, p, min((int)l, COMMAND_LINE_SIZE - len));
47 +#elif defined(CONFIG_CMDLINE_FORCE)
48 +               pr_warning("Ignoring bootargs property (using the default kernel command line)\n");
49 +#else
50 +               /* Neither extend nor force - just override */
51 +               strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE));
52  #endif
53 -               strlcpy(data, CONFIG_CMDLINE, COMMAND_LINE_SIZE);
54 +       }
55 +#else /* CONFIG_CMDLINE */
56 +       if (p != NULL && l > 0)
57 +               strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE));
58  #endif /* CONFIG_CMDLINE */
59  
60         pr_debug("Command line is: %s\n", (char*)data);
61 -- 
62 1.8.3.2
63