diff options
Diffstat (limited to 'arch/powerpc/sysdev/fsl_soc.c')
-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 | ||