Skip to content

Commit

Permalink
ARM: mvebu: prepare mvebu_pm_store_bootinfo() to support multiple SoCs
Browse files Browse the repository at this point in the history
As we are going to introduce support for Armada 38x in pm.c, split out
the Armada XP part of mvebu_pm_store_bootinfo() into
mvebu_pm_store_armadaxp_bootinfo(), and make the former retunr an
error when an unsupported SoC is used.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
  • Loading branch information
Thomas Petazzoni authored and Gregory CLEMENT committed Jul 25, 2015
1 parent a101b53 commit 88ed69f
Showing 1 changed file with 21 additions and 4 deletions.
25 changes: 21 additions & 4 deletions arch/arm/mach-mvebu/pm.c
Original file line number Diff line number Diff line change
Expand Up @@ -105,12 +105,10 @@ static phys_addr_t mvebu_internal_reg_base(void)
return of_translate_address(np, in_addr);
}

static void mvebu_pm_store_bootinfo(void)
static void mvebu_pm_store_armadaxp_bootinfo(u32 *store_addr)
{
u32 *store_addr;
phys_addr_t resume_pc;

store_addr = phys_to_virt(BOOT_INFO_ADDR);
resume_pc = virt_to_phys(armada_370_xp_cpu_resume);

/*
Expand Down Expand Up @@ -151,14 +149,33 @@ static void mvebu_pm_store_bootinfo(void)
writel(BOOT_MAGIC_LIST_END, store_addr);
}

static int mvebu_pm_store_bootinfo(void)
{
u32 *store_addr;

store_addr = phys_to_virt(BOOT_INFO_ADDR);

if (of_machine_is_compatible("marvell,armadaxp"))
mvebu_pm_store_armadaxp_bootinfo(store_addr);
else
return -ENODEV;

return 0;
}

static int mvebu_pm_enter(suspend_state_t state)
{
int ret;

if (state != PM_SUSPEND_MEM)
return -EINVAL;

ret = mvebu_pm_store_bootinfo();
if (ret)
return ret;

cpu_pm_enter();

mvebu_pm_store_bootinfo();
cpu_suspend(0, mvebu_pm_powerdown);

outer_resume();
Expand Down

0 comments on commit 88ed69f

Please sign in to comment.