aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlof Johansson <olof@lixom.net>2017-05-25 19:59:43 -0400
committerOlof Johansson <olof@lixom.net>2017-05-25 19:59:43 -0400
commit3616aa198fdc3c673ce920a138913b933c1f31a7 (patch)
treeb0af44c81d1fd522ef84017bce0b352d66cf14e1
parent6bf1c2d26716dcd483699cc62474e49d164c5563 (diff)
parent95d7c1f18bf8ac03b0fc48eac1f1b11f867765b8 (diff)
Merge tag 'davinci-fixes-for-v4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/nsekhar/linux-davinci into fixes
These fix issues with power management initialization code on DaVinci. Some resources were getting freed prematurely. And there was an issue with resources not being on error. * tag 'davinci-fixes-for-v4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/nsekhar/linux-davinci: ARM: davinci: PM: Do not free useful resources in normal path in 'davinci_pm_init' ARM: davinci: PM: Free resources in error handling path in 'davinci_pm_init' Signed-off-by: Olof Johansson <olof@lixom.net>
-rw-r--r--arch/arm/mach-davinci/pm.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/arm/mach-davinci/pm.c b/arch/arm/mach-davinci/pm.c
index efb80354f303..b5cc05dc2cb2 100644
--- a/arch/arm/mach-davinci/pm.c
+++ b/arch/arm/mach-davinci/pm.c
@@ -153,7 +153,8 @@ int __init davinci_pm_init(void)
153 davinci_sram_suspend = sram_alloc(davinci_cpu_suspend_sz, NULL); 153 davinci_sram_suspend = sram_alloc(davinci_cpu_suspend_sz, NULL);
154 if (!davinci_sram_suspend) { 154 if (!davinci_sram_suspend) {
155 pr_err("PM: cannot allocate SRAM memory\n"); 155 pr_err("PM: cannot allocate SRAM memory\n");
156 return -ENOMEM; 156 ret = -ENOMEM;
157 goto no_sram_mem;
157 } 158 }
158 159
159 davinci_sram_push(davinci_sram_suspend, davinci_cpu_suspend, 160 davinci_sram_push(davinci_sram_suspend, davinci_cpu_suspend,
@@ -161,6 +162,10 @@ int __init davinci_pm_init(void)
161 162
162 suspend_set_ops(&davinci_pm_ops); 163 suspend_set_ops(&davinci_pm_ops);
163 164
165 return 0;
166
167no_sram_mem:
168 iounmap(pm_config.ddrpsc_reg_base);
164no_ddrpsc_mem: 169no_ddrpsc_mem:
165 iounmap(pm_config.ddrpll_reg_base); 170 iounmap(pm_config.ddrpll_reg_base);
166no_ddrpll_mem: 171no_ddrpll_mem: