diff options
author | Matthew McClintock <msm@freescale.com> | 2010-08-31 18:44:51 -0400 |
---|---|---|
committer | Kumar Gala <galak@kernel.crashing.org> | 2010-10-14 01:52:56 -0400 |
commit | 4ea7c88bec9221031fa57fc7c290fdb5d279748c (patch) | |
tree | a7df33a4768b8759c82da33801fb5f2613ec10f6 | |
parent | 92437d41374bf59b1914b53bd10ca69d31b1b581 (diff) |
powerpc/fsl_soc: Search all global-utilities nodes for rstccr
The first global-utilities node might not contain the rstcr
property, so we should search all the nodes
Signed-off-by: Matthew McClintock <msm@freescale.com>
Acked-by: Timur Tabi <timur@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
-rw-r--r-- | arch/powerpc/sysdev/fsl_soc.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/arch/powerpc/sysdev/fsl_soc.c b/arch/powerpc/sysdev/fsl_soc.c index b91f7acdda6f..6c67d9ebf166 100644 --- a/arch/powerpc/sysdev/fsl_soc.c +++ b/arch/powerpc/sysdev/fsl_soc.c | |||
@@ -378,17 +378,23 @@ static __be32 __iomem *rstcr; | |||
378 | static int __init setup_rstcr(void) | 378 | static int __init setup_rstcr(void) |
379 | { | 379 | { |
380 | struct device_node *np; | 380 | struct device_node *np; |
381 | np = of_find_node_by_name(NULL, "global-utilities"); | 381 | |
382 | if ((np && of_get_property(np, "fsl,has-rstcr", NULL))) { | 382 | for_each_node_by_name(np, "global-utilities") { |
383 | rstcr = of_iomap(np, 0) + 0xb0; | 383 | if ((of_get_property(np, "fsl,has-rstcr", NULL))) { |
384 | if (!rstcr) | 384 | rstcr = of_iomap(np, 0) + 0xb0; |
385 | printk (KERN_EMERG "Error: reset control register " | 385 | if (!rstcr) |
386 | "not mapped!\n"); | 386 | printk (KERN_ERR "Error: reset control " |
387 | } else if (ppc_md.restart == fsl_rstcr_restart) | 387 | "register not mapped!\n"); |
388 | break; | ||
389 | } | ||
390 | } | ||
391 | |||
392 | if (!rstcr && ppc_md.restart == fsl_rstcr_restart) | ||
388 | printk(KERN_ERR "No RSTCR register, warm reboot won't work\n"); | 393 | printk(KERN_ERR "No RSTCR register, warm reboot won't work\n"); |
389 | 394 | ||
390 | if (np) | 395 | if (np) |
391 | of_node_put(np); | 396 | of_node_put(np); |
397 | |||
392 | return 0; | 398 | return 0; |
393 | } | 399 | } |
394 | 400 | ||