diff options
author | Alexandre Belloni <alexandre.belloni@free-electrons.com> | 2014-08-27 18:06:51 +0200 |
---|---|---|
committer | Nicolas Ferre <nicolas.ferre@atmel.com> | 2014-09-01 18:37:51 +0200 |
commit | c8260db557389c1fb46eeafb54414b03d9f19e49 (patch) | |
tree | 7fa322efeb42840e096350b8aafc233109ff8de2 /arch/arm/mach-at91 | |
parent | f55df0d654e10ad49e0e7edaeef02fa00e084d94 (diff) |
ARM: at91: fix ramc standby function registration
After the for_each_matching_node loop, we end up with a null value for np. Then,
of_match_node() is not matching anything and we can't register the standby
function and "ramc no standby function available" is printed.
Fix that by selecting the first available standby function. For now,
at91_pm_set_standby doesn't support multiple different standby functions and no
existing SoCs have different RAM controllers.
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Diffstat (limited to 'arch/arm/mach-at91')
-rw-r--r-- | arch/arm/mach-at91/setup.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/arch/arm/mach-at91/setup.c b/arch/arm/mach-at91/setup.c index 28ae63b8eb1..d2cade21ebd 100644 --- a/arch/arm/mach-at91/setup.c +++ b/arch/arm/mach-at91/setup.c @@ -343,25 +343,28 @@ static void at91_dt_ramc(void) struct device_node *np; const struct of_device_id *of_id; int idx = 0; + const void *standby = NULL; - for_each_matching_node(np, ramc_ids) { + for_each_matching_node_and_match(np, ramc_ids, &of_id) { at91_ramc_base[idx] = of_iomap(np, 0); if (!at91_ramc_base[idx]) panic(pr_fmt("unable to map ramc[%d] cpu registers\n"), idx); + if (!standby) + standby = of_id->data; + idx++; } if (!idx) panic(pr_fmt("unable to find compatible ram controller node in dtb\n")); - of_id = of_match_node(ramc_ids, np); - if (!of_id) { + if (!standby) { pr_warn("ramc no standby function available\n"); return; } - at91_pm_set_standby(of_id->data); + at91_pm_set_standby(standby); } void __init at91rm9200_dt_initialize(void) |