Commit ce229c5d authored by Mark A. Greer's avatar Mark A. Greer Committed by Kevin Hilman

arm: omap3: pm34xx.c: Fix omap3_pm_init() error out paths

It appears that the error paths were overlooked when the
omap3_pm_init() routine had the prcm chain handler code
added.  Fix this by adding a goto target and reordering
the error handling code.  Also fix how the irq argument
for free_irq() is determined.
Signed-off-by: default avatarMark A. Greer <mgreer@animalcreek.com>
Acked-by: default avatarTero Kristo <t-kristo@ti.com>
Signed-off-by: default avatarKevin Hilman <khilman@ti.com>
parent 68523f42
...@@ -817,13 +817,13 @@ static int __init omap3_pm_init(void) ...@@ -817,13 +817,13 @@ static int __init omap3_pm_init(void)
if (ret) { if (ret) {
pr_err("pm: Failed to request pm_io irq\n"); pr_err("pm: Failed to request pm_io irq\n");
goto err1; goto err2;
} }
ret = pwrdm_for_each(pwrdms_setup, NULL); ret = pwrdm_for_each(pwrdms_setup, NULL);
if (ret) { if (ret) {
printk(KERN_ERR "Failed to setup powerdomains\n"); printk(KERN_ERR "Failed to setup powerdomains\n");
goto err2; goto err3;
} }
(void) clkdm_for_each(clkdms_setup, NULL); (void) clkdm_for_each(clkdms_setup, NULL);
...@@ -831,7 +831,8 @@ static int __init omap3_pm_init(void) ...@@ -831,7 +831,8 @@ static int __init omap3_pm_init(void)
mpu_pwrdm = pwrdm_lookup("mpu_pwrdm"); mpu_pwrdm = pwrdm_lookup("mpu_pwrdm");
if (mpu_pwrdm == NULL) { if (mpu_pwrdm == NULL) {
printk(KERN_ERR "Failed to get mpu_pwrdm\n"); printk(KERN_ERR "Failed to get mpu_pwrdm\n");
goto err2; ret = -EINVAL;
goto err3;
} }
neon_pwrdm = pwrdm_lookup("neon_pwrdm"); neon_pwrdm = pwrdm_lookup("neon_pwrdm");
...@@ -879,14 +880,17 @@ static int __init omap3_pm_init(void) ...@@ -879,14 +880,17 @@ static int __init omap3_pm_init(void)
} }
omap3_save_scratchpad_contents(); omap3_save_scratchpad_contents();
err1:
return ret; return ret;
err2:
free_irq(INT_34XX_PRCM_MPU_IRQ, NULL); err3:
list_for_each_entry_safe(pwrst, tmp, &pwrst_list, node) { list_for_each_entry_safe(pwrst, tmp, &pwrst_list, node) {
list_del(&pwrst->node); list_del(&pwrst->node);
kfree(pwrst); kfree(pwrst);
} }
free_irq(omap_prcm_event_to_irq("io"), omap3_pm_init);
err2:
free_irq(omap_prcm_event_to_irq("wkup"), NULL);
err1:
return ret; return ret;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment