On 19/01/17 13:48, Stephen Boyd wrote: > On 01/13, Chris Packham wrote: >> diff --git a/arch/arm/mach-mvebu/platsmp.c b/arch/arm/mach-mvebu/platsmp.c >> index 46c742d3bd41..59be3ca0464f 100644 >> --- a/arch/arm/mach-mvebu/platsmp.c >> +++ b/arch/arm/mach-mvebu/platsmp.c >> @@ -184,3 +184,89 @@ const struct smp_operations armada_xp_smp_ops __initconst = { >> >> CPU_METHOD_OF_DECLARE(armada_xp_smp, "marvell,armada-xp-smp", >> &armada_xp_smp_ops); >> + >> +struct resume_controller { >> + u32 resume_control; >> + u32 resume_boot_addr; >> +}; >> + >> +static const struct resume_controller mv98dx3336_resume_controller = { >> + .resume_control = 0x08, >> + .resume_boot_addr = 0x04, >> +}; >> + >> +static const struct of_device_id of_mv98dx3236_resume_table[] = { >> + { >> + .compatible = "marvell,98dx3336-resume-ctrl", >> + .data = (void *)&mv98dx3336_resume_controller, > > Useless cast? > >> + }, >> + { /* end of list */ }, >> +}; >> + >> +static int mv98dx3236_resume_set_cpu_boot_addr(int hw_cpu, void *boot_addr) >> +{ >> + const struct of_device_id *match; >> + struct device_node *np; >> + void __iomem *base; >> + struct resume_controller *rc; >> + >> + WARN_ON(hw_cpu != 1); >> + >> + np = of_find_matching_node_and_match(NULL, of_mv98dx3236_resume_table, >> + &match); >> + if (!np) >> + return -ENODEV; >> + >> + base = of_io_request_and_map(np, 0, of_node_full_name(np)); >> + rc = (struct resume_controller *)match->data; > > Useless cast? > >> + of_node_put(np); >> + if (IS_ERR(base)) >> + return PTR_ERR(base); >> + >> + writel(0, base + rc->resume_control); >> + writel(virt_to_phys(boot_addr), base + rc->resume_boot_addr); >> + > > Otherwise > > Reviewed-by: Stephen Boyd <sboyd@xxxxxxxxxxxxxx> > Thanks for the review. Changes will be in v5. -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html