Commit 2e3e9f18 authored by Benjamin Herrenschmidt's avatar Benjamin Herrenschmidt Committed by Luis Henriques

drivers/of: Add empty ranges quirk for PA-Semi

commit a5ed1ad0 upstream.

The "sdc" node is missing the ranges property, it needs to be treated
as having an empty one otherwise translation fails for its children.

Fixes 746c9e9f, "of/base: Fix PowerPC address parsing hack"
Tested-by: default avatarSteven Rostedt <rostedt@goodmis.org>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: default avatarGrant Likely <grant.likely@linaro.org>
[ luis: backported to 3.16: adjusted context ]
Signed-off-by: default avatarLuis Henriques <luis.henriques@canonical.com>
parent 4216710d
...@@ -403,12 +403,17 @@ static struct of_bus *of_match_bus(struct device_node *np) ...@@ -403,12 +403,17 @@ static struct of_bus *of_match_bus(struct device_node *np)
return NULL; return NULL;
} }
static int of_empty_ranges_quirk(void) static int of_empty_ranges_quirk(struct device_node *np)
{ {
if (IS_ENABLED(CONFIG_PPC)) { if (IS_ENABLED(CONFIG_PPC)) {
/* To save cycles, we cache the result */ /* To save cycles, we cache the result for global "Mac" setting */
static int quirk_state = -1; static int quirk_state = -1;
/* PA-SEMI sdc DT bug */
if (of_device_is_compatible(np, "1682m-sdc"))
return true;
/* Make quirk cached */
if (quirk_state < 0) if (quirk_state < 0)
quirk_state = quirk_state =
of_machine_is_compatible("Power Macintosh") || of_machine_is_compatible("Power Macintosh") ||
...@@ -443,7 +448,7 @@ static int of_translate_one(struct device_node *parent, struct of_bus *bus, ...@@ -443,7 +448,7 @@ static int of_translate_one(struct device_node *parent, struct of_bus *bus,
* This code is only enabled on powerpc. --gcl * This code is only enabled on powerpc. --gcl
*/ */
ranges = of_get_property(parent, rprop, &rlen); ranges = of_get_property(parent, rprop, &rlen);
if (ranges == NULL && !of_empty_ranges_quirk()) { if (ranges == NULL && !of_empty_ranges_quirk(parent)) {
pr_err("OF: no ranges; cannot translate\n"); pr_err("OF: no ranges; cannot translate\n");
return 1; return 1;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment