diff options
Diffstat (limited to 'configs/platform-v7a/patches/barebox-2017.06.0/0202-of_device_is_stdout_path-split-off-options-and-suppo.patch')
-rw-r--r-- | configs/platform-v7a/patches/barebox-2017.06.0/0202-of_device_is_stdout_path-split-off-options-and-suppo.patch | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/configs/platform-v7a/patches/barebox-2017.06.0/0202-of_device_is_stdout_path-split-off-options-and-suppo.patch b/configs/platform-v7a/patches/barebox-2017.06.0/0202-of_device_is_stdout_path-split-off-options-and-suppo.patch new file mode 100644 index 0000000..674294d --- /dev/null +++ b/configs/platform-v7a/patches/barebox-2017.06.0/0202-of_device_is_stdout_path-split-off-options-and-suppo.patch @@ -0,0 +1,53 @@ +From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= <u.kleine-koenig@pengutronix.de> +Date: Wed, 14 Jun 2017 13:30:54 +0200 +Subject: [PATCH] of_device_is_stdout_path: split off options and support + aliases +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Several device trees use something like: + + stdout-path = "serial0:115200n8"; + +Currently of_device_is_stdout_path fails to do the right thing here +because it expects an absolute node path and no options. So split off +options (everything after the colon) and resolve aliases. + +Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> +Forwarded: id:20170614180249.12644-1-u.kleine-koenig@pengutronix.de (v2) +--- + drivers/of/base.c | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +diff --git a/drivers/of/base.c b/drivers/of/base.c +index 94e4c6b7b4f8..a1ae8073931d 100644 +--- a/drivers/of/base.c ++++ b/drivers/of/base.c +@@ -2015,6 +2015,8 @@ int of_device_is_stdout_path(struct device_d *dev) + { + struct device_node *dn; + const char *name; ++ const char *p; ++ char *q; + + if (!dev->device_node) + return 0; +@@ -2026,7 +2028,16 @@ int of_device_is_stdout_path(struct device_d *dev) + if (!name) + return 0; + +- dn = of_find_node_by_path(name); ++ /* This could make use of strchrnul if it were available */ ++ p = strchr(name, ':'); ++ if (!p) ++ p = name + strlen(name); ++ ++ q = xstrndup(name, p - name); ++ ++ dn = of_find_node_by_path_or_alias(NULL, q); ++ ++ free(q); + + return dn == dev->device_node; + } |