Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b1e52287 authored by Geert Uytterhoeven's avatar Geert Uytterhoeven Committed by Simon Horman
Browse files

soc: renesas: rcar-sysc: Make rcar_sysc_init() init the PM domains



Let rcar_sysc_init() trigger initialization of the SYSC PM domains from
DT if called before the early_initcall.
On failure, it falls back to mapping the passed register block, as
before.

Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: default avatarSimon Horman <horms+renesas@verge.net.au>
parent 1023578e
Loading
Loading
Loading
Loading
+11 −9
Original line number Diff line number Diff line
@@ -164,15 +164,6 @@ static bool rcar_sysc_power_is_off(const struct rcar_sysc_ch *sysc_ch)
	return false;
}

void __iomem *rcar_sysc_init(phys_addr_t base)
{
	rcar_sysc_base = ioremap_nocache(base, PAGE_SIZE);
	if (!rcar_sysc_base)
		panic("unable to ioremap R-Car SYSC hardware block\n");

	return rcar_sysc_base;
}

struct rcar_sysc_pd {
	struct generic_pm_domain genpd;
	struct rcar_sysc_ch ch;
@@ -328,6 +319,9 @@ static int __init rcar_sysc_pd_init(void)
	unsigned int i;
	int error;

	if (rcar_sysc_base)
		return 0;

	np = of_find_matching_node_and_match(NULL, rcar_sysc_matches, &match);
	if (!np)
		return -ENODEV;
@@ -405,3 +399,11 @@ static int __init rcar_sysc_pd_init(void)
	return error;
}
early_initcall(rcar_sysc_pd_init);

void __iomem * __init rcar_sysc_init(phys_addr_t base)
{
	if (rcar_sysc_pd_init())
		rcar_sysc_base = ioremap_nocache(base, PAGE_SIZE);

	return rcar_sysc_base;
}