mirror of
https://github.com/Ysurac/openmptcprouter.git
synced 2025-02-12 19:31:52 +00:00
Remove not more needed rpi patch
This commit is contained in:
parent
d6bb31eb2e
commit
e7bac8f04f
1 changed files with 0 additions and 147 deletions
|
@ -1,147 +0,0 @@
|
|||
From 8bff48328aff10c1e9c134a55337620929e449c2 Mon Sep 17 00:00:00 2001
|
||||
From: Frank Rowand <frank.rowand@sony.com>
|
||||
Date: Fri, 12 Oct 2018 19:21:16 -0700
|
||||
Subject: [PATCH 519/520] of: overlay: set node fields from properties when add
|
||||
new overlay node
|
||||
|
||||
commit f96278810150fc39085d1872e5b39ea06366d03e upstream.
|
||||
See: https://github.com/raspberrypi/linux/issues/2995
|
||||
|
||||
Overlay nodes added by add_changeset_node() do not have the node
|
||||
fields name, phandle, and type set.
|
||||
|
||||
The node passed to __of_attach_node() when the add node changeset
|
||||
entry is processed does not contain any properties. The node's
|
||||
properties are located in add property changeset entries that will
|
||||
be processed after the add node changeset is applied.
|
||||
|
||||
Set the node's fields in the node contained in the add node
|
||||
changeset entry and do not set them to incorrect values in
|
||||
add_changeset_node().
|
||||
|
||||
A visible symptom that is fixed by this patch is the names of nodes
|
||||
added by overlays that have an entry in /sys/bus/platform/drivers/*/
|
||||
will contain the unit-address but the node-name will be <NULL>, for
|
||||
example, "fc4ab000.<NULL>". After applying the patch the name, in
|
||||
this example, for node restart@fc4ab000 is "fc4ab000.restart".
|
||||
|
||||
Tested-by: Alan Tull <atull@kernel.org>
|
||||
Signed-off-by: Frank Rowand <frank.rowand@sony.com>
|
||||
---
|
||||
drivers/of/dynamic.c | 27 ++++++++++++++++++---------
|
||||
drivers/of/overlay.c | 34 +++++++++++++++++++++++++++-------
|
||||
2 files changed, 45 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/drivers/of/dynamic.c b/drivers/of/dynamic.c
|
||||
index 45c0b1f4cb69..a09c1c3cf831 100644
|
||||
--- a/drivers/of/dynamic.c
|
||||
+++ b/drivers/of/dynamic.c
|
||||
@@ -205,15 +205,24 @@ static void __of_attach_node(struct device_node *np)
|
||||
const __be32 *phandle;
|
||||
int sz;
|
||||
|
||||
- np->name = __of_get_property(np, "name", NULL) ? : "<NULL>";
|
||||
- np->type = __of_get_property(np, "device_type", NULL) ? : "<NULL>";
|
||||
-
|
||||
- phandle = __of_get_property(np, "phandle", &sz);
|
||||
- if (!phandle)
|
||||
- phandle = __of_get_property(np, "linux,phandle", &sz);
|
||||
- if (IS_ENABLED(CONFIG_PPC_PSERIES) && !phandle)
|
||||
- phandle = __of_get_property(np, "ibm,phandle", &sz);
|
||||
- np->phandle = (phandle && (sz >= 4)) ? be32_to_cpup(phandle) : 0;
|
||||
+ if (!of_node_check_flag(np, OF_OVERLAY)) {
|
||||
+ np->name = __of_get_property(np, "name", NULL);
|
||||
+ np->type = __of_get_property(np, "device_type", NULL);
|
||||
+ if (!np->name)
|
||||
+ np->name = "<NULL>";
|
||||
+ if (!np->type)
|
||||
+ np->type = "<NULL>";
|
||||
+
|
||||
+ phandle = __of_get_property(np, "phandle", &sz);
|
||||
+ if (!phandle)
|
||||
+ phandle = __of_get_property(np, "linux,phandle", &sz);
|
||||
+ if (IS_ENABLED(CONFIG_PPC_PSERIES) && !phandle)
|
||||
+ phandle = __of_get_property(np, "ibm,phandle", &sz);
|
||||
+ if (phandle && (sz >= 4))
|
||||
+ np->phandle = be32_to_cpup(phandle);
|
||||
+ else
|
||||
+ np->phandle = 0;
|
||||
+ }
|
||||
|
||||
np->child = NULL;
|
||||
np->sibling = np->parent->child;
|
||||
diff --git a/drivers/of/overlay.c b/drivers/of/overlay.c
|
||||
index 9808aae4621a..b2704badd987 100644
|
||||
--- a/drivers/of/overlay.c
|
||||
+++ b/drivers/of/overlay.c
|
||||
@@ -301,10 +301,11 @@ static int add_changeset_property(struct overlay_changeset *ovcs,
|
||||
struct property *new_prop = NULL, *prop;
|
||||
int ret = 0;
|
||||
|
||||
- if (!of_prop_cmp(overlay_prop->name, "name") ||
|
||||
- !of_prop_cmp(overlay_prop->name, "phandle") ||
|
||||
- !of_prop_cmp(overlay_prop->name, "linux,phandle"))
|
||||
- return 0;
|
||||
+ if (target->in_livetree)
|
||||
+ if (!of_prop_cmp(overlay_prop->name, "name") ||
|
||||
+ !of_prop_cmp(overlay_prop->name, "phandle") ||
|
||||
+ !of_prop_cmp(overlay_prop->name, "linux,phandle"))
|
||||
+ return 0;
|
||||
|
||||
if (target->in_livetree)
|
||||
prop = of_find_property(target->np, overlay_prop->name, NULL);
|
||||
@@ -322,12 +323,17 @@ static int add_changeset_property(struct overlay_changeset *ovcs,
|
||||
if (!new_prop)
|
||||
return -ENOMEM;
|
||||
|
||||
- if (!prop)
|
||||
+ if (!prop) {
|
||||
+ if (!target->in_livetree) {
|
||||
+ new_prop->next = target->np->deadprops;
|
||||
+ target->np->deadprops = new_prop;
|
||||
+ }
|
||||
ret = of_changeset_add_property(&ovcs->cset, target->np,
|
||||
new_prop);
|
||||
- else
|
||||
+ } else {
|
||||
ret = of_changeset_update_property(&ovcs->cset, target->np,
|
||||
new_prop);
|
||||
+ }
|
||||
|
||||
if (ret) {
|
||||
kfree(new_prop->name);
|
||||
@@ -382,9 +388,10 @@ static int add_changeset_node(struct overlay_changeset *ovcs,
|
||||
struct target *target, struct device_node *node)
|
||||
{
|
||||
const char *node_kbasename;
|
||||
+ const __be32 *phandle;
|
||||
struct device_node *tchild;
|
||||
struct target target_child;
|
||||
- int ret = 0;
|
||||
+ int ret = 0, size;
|
||||
|
||||
node_kbasename = kbasename(node->full_name);
|
||||
|
||||
@@ -398,6 +405,19 @@ static int add_changeset_node(struct overlay_changeset *ovcs,
|
||||
return -ENOMEM;
|
||||
|
||||
tchild->parent = target->np;
|
||||
+ tchild->name = __of_get_property(node, "name", NULL);
|
||||
+ tchild->type = __of_get_property(node, "device_type", NULL);
|
||||
+
|
||||
+ if (!tchild->name)
|
||||
+ tchild->name = "<NULL>";
|
||||
+ if (!tchild->type)
|
||||
+ tchild->type = "<NULL>";
|
||||
+
|
||||
+ /* ignore obsolete "linux,phandle" */
|
||||
+ phandle = __of_get_property(node, "phandle", &size);
|
||||
+ if (phandle && (size == 4))
|
||||
+ tchild->phandle = be32_to_cpup(phandle);
|
||||
+
|
||||
of_node_set_flag(tchild, OF_OVERLAY);
|
||||
|
||||
ret = of_changeset_attach_node(&ovcs->cset, tchild);
|
||||
--
|
||||
2.19.1
|
||||
|
Loading…
Reference in a new issue