This gets rid of a of-fixup which is strange because the soc init stuff is rerun then when a new dt for booting into Linux is loaded. It also only calls mvebu_mbus_add_range if we're running on an Armada 370 or XP and inlines a simple function. The initcall must be postponed to post-core to ensure of_machine_is_compatible is working correctly. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx> --- arch/arm/mach-mvebu/armada-370-xp.c | 34 +++++++++++----------------------- 1 file changed, 11 insertions(+), 23 deletions(-) diff --git a/arch/arm/mach-mvebu/armada-370-xp.c b/arch/arm/mach-mvebu/armada-370-xp.c index 5fb207594fd4..196b770277f3 100644 --- a/arch/arm/mach-mvebu/armada-370-xp.c +++ b/arch/arm/mach-mvebu/armada-370-xp.c @@ -83,25 +83,16 @@ static void __noreturn armada_370_xp_restart_soc(struct restart_handler *rst) hang(); } -static int armada_xp_init_soc(struct device_node *root) -{ - u32 reg; - - /* Enable GBE0, GBE1, LCD and NFC PUP */ - reg = readl(ARMADA_XP_PUP_ENABLE); - reg |= GE0_PUP_EN | GE1_PUP_EN | LCD_PUP_EN | NAND_PUP_EN | SPI_PUP_EN; - writel(reg, ARMADA_XP_PUP_ENABLE); - - return 0; -} - -static int armada_370_xp_init_soc(struct device_node *root, void *context) +static int armada_370_xp_init_soc(void) { u32 reg; if (!of_machine_is_compatible("marvell,armada-370-xp")) return 0; + mvebu_mbus_add_range("marvell,armada-370-xp", 0xf0, 0x01, + MVEBU_REMAP_INT_REG_BASE); + restart_handler_register_fn(armada_370_xp_restart_soc); barebox_set_model("Marvell Armada 370/XP"); @@ -116,16 +107,13 @@ static int armada_370_xp_init_soc(struct device_node *root, void *context) armada_xp_soc_id_fixup(); - if (of_machine_is_compatible("marvell,armadaxp")) - armada_xp_init_soc(root); + if (of_machine_is_compatible("marvell,armadaxp")) { + /* Enable GBE0, GBE1, LCD and NFC PUP */ + reg = readl(ARMADA_XP_PUP_ENABLE); + reg |= GE0_PUP_EN | GE1_PUP_EN | LCD_PUP_EN | NAND_PUP_EN | SPI_PUP_EN; + writel(reg, ARMADA_XP_PUP_ENABLE); + } return 0; } - -static int armada_370_xp_register_soc_fixup(void) -{ - mvebu_mbus_add_range("marvell,armada-370-xp", 0xf0, 0x01, - MVEBU_REMAP_INT_REG_BASE); - return of_register_fixup(armada_370_xp_init_soc, NULL); -} -pure_initcall(armada_370_xp_register_soc_fixup); +postcore_initcall(armada_370_xp_init_soc); -- 2.11.0 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox