diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-03 13:15:19 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-03 13:15:19 -0400 |
| commit | ccc20a3317c4985febbcb7e3d9e73ab639f45c0a (patch) | |
| tree | c603d002596fe04b7a378c89ad549ae29d47588c | |
| parent | b010a0f77a9b3b05d6268d863695694c3d377847 (diff) | |
| parent | 41d9489319f28f06cf51731131bc353d5a6bce59 (diff) | |
Merge tag 'devicetree-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/glikely/linux
Pull devicetree fix from Grant Likely:
"Simple bugfix for bad device tree data on the PA-Semi platform"
* tag 'devicetree-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/glikely/linux:
drivers/of: Add empty ranges quirk for PA-Semi
| -rw-r--r-- | drivers/of/address.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/of/address.c b/drivers/of/address.c index ad2906919d45..78a7dcbec7d8 100644 --- a/drivers/of/address.c +++ b/drivers/of/address.c | |||
| @@ -450,12 +450,17 @@ static struct of_bus *of_match_bus(struct device_node *np) | |||
| 450 | return NULL; | 450 | return NULL; |
| 451 | } | 451 | } |
| 452 | 452 | ||
| 453 | static int of_empty_ranges_quirk(void) | 453 | static int of_empty_ranges_quirk(struct device_node *np) |
| 454 | { | 454 | { |
| 455 | if (IS_ENABLED(CONFIG_PPC)) { | 455 | if (IS_ENABLED(CONFIG_PPC)) { |
| 456 | /* To save cycles, we cache the result */ | 456 | /* To save cycles, we cache the result for global "Mac" setting */ |
| 457 | static int quirk_state = -1; | 457 | static int quirk_state = -1; |
| 458 | 458 | ||
| 459 | /* PA-SEMI sdc DT bug */ | ||
| 460 | if (of_device_is_compatible(np, "1682m-sdc")) | ||
| 461 | return true; | ||
| 462 | |||
| 463 | /* Make quirk cached */ | ||
| 459 | if (quirk_state < 0) | 464 | if (quirk_state < 0) |
| 460 | quirk_state = | 465 | quirk_state = |
| 461 | of_machine_is_compatible("Power Macintosh") || | 466 | of_machine_is_compatible("Power Macintosh") || |
| @@ -490,7 +495,7 @@ static int of_translate_one(struct device_node *parent, struct of_bus *bus, | |||
| 490 | * This code is only enabled on powerpc. --gcl | 495 | * This code is only enabled on powerpc. --gcl |
| 491 | */ | 496 | */ |
| 492 | ranges = of_get_property(parent, rprop, &rlen); | 497 | ranges = of_get_property(parent, rprop, &rlen); |
| 493 | if (ranges == NULL && !of_empty_ranges_quirk()) { | 498 | if (ranges == NULL && !of_empty_ranges_quirk(parent)) { |
| 494 | pr_debug("OF: no ranges; cannot translate\n"); | 499 | pr_debug("OF: no ranges; cannot translate\n"); |
| 495 | return 1; | 500 | return 1; |
| 496 | } | 501 | } |
