[PATCH] of: address: Don't fail a lookup just because a node has no reg property

Subsystems: open firmware and flattened device tree, the rest

STALE5178d REVIEWED: 5 (5M)

1 review trailer.

6 messages, 4 authors, 2012-07-05 · open the first message on its own page

[PATCH] of: address: Don't fail a lookup just because a node has no reg property

From: Lee Jones <hidden>
Date: 2012-07-05 14:32:44

Sometimes it doesn't make any sense for a node to have an address.
In this case device lookup will always be unsuccessful because we
currently assume every node will have a reg property. This patch
changes the semantics so that the resource address and the lookup
address will only be compared if one exists.

Things like AUXDATA() rely on of_dev_lookup to return the lookup
entry of a particular device in order to do things like apply
platform_data to a device. However, this is currently broken for
nodes which do not have a reg property, meaning that platform_data
can not be passed in those cases.

Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Lee Jones <redacted>
---
 drivers/of/platform.c |    7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/of/platform.c b/drivers/of/platform.c
index 343ad29..9600480 100644
--- a/drivers/of/platform.c
+++ b/drivers/of/platform.c
@@ -317,10 +317,9 @@ static const struct of_dev_auxdata *of_dev_lookup(const struct of_dev_auxdata *l
 	for(; lookup->compatible != NULL; lookup++) {
 		if (!of_device_is_compatible(np, lookup->compatible))
 			continue;
-		if (of_address_to_resource(np, 0, &res))
-			continue;
-		if (res.start != lookup->phys_addr)
-			continue;
+		if (!of_address_to_resource(np, 0, &res))
+			if (res.start != lookup->phys_addr)
+				continue;
 		pr_debug("%s: devname=%s\n", np->full_name, lookup->name);
 		return lookup;
 	}
-- 
1.7.9.5

Re: [PATCH] of: address: Don't fail a lookup just because a node has no reg property

From: Linus Walleij <hidden>
Date: 2012-07-05 14:38:06

On Thu, Jul 5, 2012 at 4:32 PM, Lee Jones [off-list ref] wrote:
Sometimes it doesn't make any sense for a node to have an address.
In this case device lookup will always be unsuccessful because we
currently assume every node will have a reg property. This patch
changes the semantics so that the resource address and the lookup
address will only be compared if one exists.

Things like AUXDATA() rely on of_dev_lookup to return the lookup
entry of a particular device in order to do things like apply
platform_data to a device. However, this is currently broken for
nodes which do not have a reg property, meaning that platform_data
can not be passed in those cases.

Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Lee Jones <redacted>
I sure see the problem!
Acked-by: Linus Walleij <redacted>

Yours,
Linus Walleij

Re: [PATCH] of: address: Don't fail a lookup just because a node has no reg property

From: Rob Herring <hidden>
Date: 2012-07-05 14:57:23

On 07/05/2012 09:32 AM, Lee Jones wrote:
Sometimes it doesn't make any sense for a node to have an address.
In this case device lookup will always be unsuccessful because we
currently assume every node will have a reg property. This patch
changes the semantics so that the resource address and the lookup
address will only be compared if one exists.

Things like AUXDATA() rely on of_dev_lookup to return the lookup
entry of a particular device in order to do things like apply
platform_data to a device. However, this is currently broken for
nodes which do not have a reg property, meaning that platform_data
can not be passed in those cases.

Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Lee Jones <redacted>
---
Acked-by: Rob Herring <redacted>

Do you have something dependent on this or want me to apply?

Rob
quoted hunk
 drivers/of/platform.c |    7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/of/platform.c b/drivers/of/platform.c
index 343ad29..9600480 100644
--- a/drivers/of/platform.c
+++ b/drivers/of/platform.c
@@ -317,10 +317,9 @@ static const struct of_dev_auxdata *of_dev_lookup(const struct of_dev_auxdata *l
 	for(; lookup->compatible != NULL; lookup++) {
 		if (!of_device_is_compatible(np, lookup->compatible))
 			continue;
-		if (of_address_to_resource(np, 0, &res))
-			continue;
-		if (res.start != lookup->phys_addr)
-			continue;
+		if (!of_address_to_resource(np, 0, &res))
+			if (res.start != lookup->phys_addr)
+				continue;
 		pr_debug("%s: devname=%s\n", np->full_name, lookup->name);
 		return lookup;
 	}

Re: [PATCH] of: address: Don't fail a lookup just because a node has no reg property

From: Lee Jones <hidden>
Date: 2012-07-05 15:17:31

On 05/07/12 15:57, Rob Herring wrote:
On 07/05/2012 09:32 AM, Lee Jones wrote:
quoted
Sometimes it doesn't make any sense for a node to have an address.
In this case device lookup will always be unsuccessful because we
currently assume every node will have a reg property. This patch
changes the semantics so that the resource address and the lookup
address will only be compared if one exists.

Things like AUXDATA() rely on of_dev_lookup to return the lookup
entry of a particular device in order to do things like apply
platform_data to a device. However, this is currently broken for
nodes which do not have a reg property, meaning that platform_data
can not be passed in those cases.

Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Lee Jones <redacted>
---
Acked-by: Rob Herring <redacted>

Do you have something dependent on this or want me to apply?
I have things that require this patch yes. Please apply.

Thanks Rob.

-- 
Lee Jones
Linaro ST-Ericsson Landing Team Lead
M: +44 77 88 633 515
Linaro.org ? Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

Re: [PATCH] of: address: Don't fail a lookup just because a node has no reg property

From: Arnd Bergmann <arnd@arndb.de>
Date: 2012-07-05 15:39:56

On Thursday 05 July 2012, Lee Jones wrote:
quoted
Acked-by: Rob Herring <redacted>

Do you have something dependent on this or want me to apply?
I have things that require this patch yes. Please apply.
I guess Rob's question was whether you want to keep this together
with the patch that depends on it rather than him applying just
the one patch.

	Arnd

Re: [PATCH] of: address: Don't fail a lookup just because a node has no reg property

From: Lee Jones <hidden>
Date: 2012-07-05 15:50:48

On 05/07/12 16:38, Arnd Bergmann wrote:
On Thursday 05 July 2012, Lee Jones wrote:
quoted
quoted
Acked-by: Rob Herring <redacted>

Do you have something dependent on this or want me to apply?
I have things that require this patch yes. Please apply.
I guess Rob's question was whether you want to keep this together
with the patch that depends on it rather than him applying just
the one patch.
No, it's not important.

I'll send you the other patch as part of my DT pull-request.

I'm just waiting on Linus' Ack on a few patches and it'll be ready.

-- 
Lee Jones
Linaro ST-Ericsson Landing Team Lead
M: +44 77 88 633 515
Linaro.org ? Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help