Skip to content

Commit

Permalink
drivers/of: Add empty ranges quirk for PA-Semi
Browse files Browse the repository at this point in the history
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 746c9e9, "of/base: Fix PowerPC address parsing hack"

Tested-by: Steven Rostedt <[email protected]>
Signed-off-by: Benjamin Herrenschmidt <[email protected]>
Signed-off-by: Grant Likely <[email protected]>
Cc: Stable <[email protected]> # v3.18+
  • Loading branch information
ozbenh authored and glikely committed Mar 28, 2015
1 parent 121c92c commit a5ed1ad
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions drivers/of/address.c
Original file line number Diff line number Diff line change
Expand Up @@ -450,12 +450,17 @@ static struct of_bus *of_match_bus(struct device_node *np)
return NULL;
}

static int of_empty_ranges_quirk(void)
static int of_empty_ranges_quirk(struct device_node *np)
{
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;

/* PA-SEMI sdc DT bug */
if (of_device_is_compatible(np, "1682m-sdc"))
return true;

/* Make quirk cached */
if (quirk_state < 0)
quirk_state =
of_machine_is_compatible("Power Macintosh") ||
Expand Down Expand Up @@ -490,7 +495,7 @@ static int of_translate_one(struct device_node *parent, struct of_bus *bus,
* This code is only enabled on powerpc. --gcl
*/
ranges = of_get_property(parent, rprop, &rlen);
if (ranges == NULL && !of_empty_ranges_quirk()) {
if (ranges == NULL && !of_empty_ranges_quirk(parent)) {
pr_debug("OF: no ranges; cannot translate\n");
return 1;
}
Expand Down

0 comments on commit a5ed1ad

Please sign in to comment.