summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/platforms/85xx/deepsleep.c22
-rw-r--r--arch/powerpc/platforms/85xx/sleep.S6
2 files changed, 22 insertions, 6 deletions
diff --git a/arch/powerpc/platforms/85xx/deepsleep.c b/arch/powerpc/platforms/85xx/deepsleep.c
index 454c070..755be0b 100644
--- a/arch/powerpc/platforms/85xx/deepsleep.c
+++ b/arch/powerpc/platforms/85xx/deepsleep.c
@@ -83,6 +83,11 @@ int fsl_dp_iomap(void)
int ret = 0;
phys_addr_t ccsr_phy_addr, dcsr_phy_addr;
+ saved_law = NULL;
+ ccsr_base = NULL;
+ dcsr_base = NULL;
+ pld_base = NULL;
+
ccsr_phy_addr = get_immrbase();
if (ccsr_phy_addr == -1) {
pr_err("%s: Can't get the address of CCSR\n", __func__);
@@ -128,31 +133,33 @@ int fsl_dp_iomap(void)
if (!np) {
pr_err("%s: Can't find the node of \"law\"\n", __func__);
ret = -EINVAL;
- goto pld_err;
+ goto alloc_err;
}
ret = of_property_read_u32(np, "fsl,num-laws", &num_laws);
if (ret) {
ret = -EINVAL;
- goto pld_err;
+ goto alloc_err;
}
saved_law = kzalloc(sizeof(*saved_law) * num_laws, GFP_KERNEL);
if (!saved_law) {
ret = -ENOMEM;
- goto pld_err;
+ goto alloc_err;
}
of_node_put(np);
return 0;
+alloc_err:
+ iounmap(pld_base);
+ pld_base = NULL;
pld_err:
iounmap(dcsr_base);
+ dcsr_base = NULL;
dcsr_err:
iounmap(ccsr_base);
-ccsr_err:
ccsr_base = NULL;
- dcsr_base = NULL;
- pld_base = NULL;
+ccsr_err:
return ret;
}
@@ -172,6 +179,9 @@ void fsl_dp_iounmap(void)
iounmap(pld_base);
pld_base = NULL;
}
+
+ kfree(saved_law);
+ saved_law = NULL;
}
static void fsl_dp_ddr_save(void *ccsr_base)
diff --git a/arch/powerpc/platforms/85xx/sleep.S b/arch/powerpc/platforms/85xx/sleep.S
index 9c7c0f3..a6e89b7 100644
--- a/arch/powerpc/platforms/85xx/sleep.S
+++ b/arch/powerpc/platforms/85xx/sleep.S
@@ -892,6 +892,8 @@ deepsleep_start:
PPC_STL r8, 8(r9)
mfspr r8, SPRN_TCR
PPC_STL r8, 16(r9)
+ mfcr r8
+ PPC_STL r8, 24(r9)
li r8, 0
mtspr SPRN_TCR, r8
@@ -1103,6 +1105,8 @@ _GLOBAL(fsl_booke_deep_sleep_resume)
mtlr r4
lwz r4, 8(r3)
mtmsr r4
+ lwz r4, 24(r3)
+ mtcr r4
blr
@@ -1155,6 +1159,8 @@ _GLOBAL(fsl_booke_deep_sleep_resume)
mtlr r4
ld r4, 8(r3)
mtmsr r4
+ ld r4, 24(r3)
+ mtcr r4
blr