Skip to content

Commit 08956f1

Browse files
committed
Merge branch 'for_3.4/fixes/pm' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap-pm into fixes
2 parents 3916043 + 4ba7c3c commit 08956f1

File tree

4 files changed

+31
-23
lines changed

4 files changed

+31
-23
lines changed

arch/arm/mach-omap2/opp.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,10 @@ int __init omap_init_opp_table(struct omap_opp_def *opp_def,
6464
}
6565
oh = omap_hwmod_lookup(opp_def->hwmod_name);
6666
if (!oh || !oh->od) {
67-
pr_warn("%s: no hwmod or odev for %s, [%d] "
67+
pr_debug("%s: no hwmod or odev for %s, [%d] "
6868
"cannot add OPPs.\n", __func__,
6969
opp_def->hwmod_name, i);
70-
return -EINVAL;
70+
continue;
7171
}
7272
dev = &oh->od->pdev->dev;
7373

arch/arm/mach-omap2/pm34xx.c

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,7 @@ static void omap3_save_secure_ram_context(void)
153153
pwrdm_set_next_pwrst(mpu_pwrdm, mpu_next_state);
154154
/* Following is for error tracking, it should not happen */
155155
if (ret) {
156-
printk(KERN_ERR "save_secure_sram() returns %08x\n",
157-
ret);
156+
pr_err("save_secure_sram() returns %08x\n", ret);
158157
while (1)
159158
;
160159
}
@@ -289,7 +288,7 @@ void omap_sram_idle(void)
289288
break;
290289
default:
291290
/* Invalid state */
292-
printk(KERN_ERR "Invalid mpu state in sram_idle\n");
291+
pr_err("Invalid mpu state in sram_idle\n");
293292
return;
294293
}
295294

@@ -439,18 +438,17 @@ static int omap3_pm_suspend(void)
439438
list_for_each_entry(pwrst, &pwrst_list, node) {
440439
state = pwrdm_read_prev_pwrst(pwrst->pwrdm);
441440
if (state > pwrst->next_state) {
442-
printk(KERN_INFO "Powerdomain (%s) didn't enter "
443-
"target state %d\n",
441+
pr_info("Powerdomain (%s) didn't enter "
442+
"target state %d\n",
444443
pwrst->pwrdm->name, pwrst->next_state);
445444
ret = -1;
446445
}
447446
omap_set_pwrdm_state(pwrst->pwrdm, pwrst->saved_state);
448447
}
449448
if (ret)
450-
printk(KERN_ERR "Could not enter target state in pm_suspend\n");
449+
pr_err("Could not enter target state in pm_suspend\n");
451450
else
452-
printk(KERN_INFO "Successfully put all powerdomains "
453-
"to target state\n");
451+
pr_info("Successfully put all powerdomains to target state\n");
454452

455453
return ret;
456454
}
@@ -734,21 +732,22 @@ static int __init omap3_pm_init(void)
734732

735733
if (ret) {
736734
pr_err("pm: Failed to request pm_io irq\n");
737-
goto err1;
735+
goto err2;
738736
}
739737

740738
ret = pwrdm_for_each(pwrdms_setup, NULL);
741739
if (ret) {
742-
printk(KERN_ERR "Failed to setup powerdomains\n");
743-
goto err2;
740+
pr_err("Failed to setup powerdomains\n");
741+
goto err3;
744742
}
745743

746744
(void) clkdm_for_each(omap_pm_clkdms_setup, NULL);
747745

748746
mpu_pwrdm = pwrdm_lookup("mpu_pwrdm");
749747
if (mpu_pwrdm == NULL) {
750-
printk(KERN_ERR "Failed to get mpu_pwrdm\n");
751-
goto err2;
748+
pr_err("Failed to get mpu_pwrdm\n");
749+
ret = -EINVAL;
750+
goto err3;
752751
}
753752

754753
neon_pwrdm = pwrdm_lookup("neon_pwrdm");
@@ -781,8 +780,8 @@ static int __init omap3_pm_init(void)
781780
omap3_secure_ram_storage =
782781
kmalloc(0x803F, GFP_KERNEL);
783782
if (!omap3_secure_ram_storage)
784-
printk(KERN_ERR "Memory allocation failed when"
785-
"allocating for secure sram context\n");
783+
pr_err("Memory allocation failed when "
784+
"allocating for secure sram context\n");
786785

787786
local_irq_disable();
788787
local_fiq_disable();
@@ -796,14 +795,17 @@ static int __init omap3_pm_init(void)
796795
}
797796

798797
omap3_save_scratchpad_contents();
799-
err1:
800798
return ret;
801-
err2:
802-
free_irq(INT_34XX_PRCM_MPU_IRQ, NULL);
799+
800+
err3:
803801
list_for_each_entry_safe(pwrst, tmp, &pwrst_list, node) {
804802
list_del(&pwrst->node);
805803
kfree(pwrst);
806804
}
805+
free_irq(omap_prcm_event_to_irq("io"), omap3_pm_init);
806+
err2:
807+
free_irq(omap_prcm_event_to_irq("wkup"), NULL);
808+
err1:
807809
return ret;
808810
}
809811

arch/arm/mach-omap2/pm44xx.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ static void omap_default_idle(void)
144144
static int __init omap4_pm_init(void)
145145
{
146146
int ret;
147-
struct clockdomain *emif_clkdm, *mpuss_clkdm, *l3_1_clkdm;
147+
struct clockdomain *emif_clkdm, *mpuss_clkdm, *l3_1_clkdm, *l4wkup;
148148
struct clockdomain *ducati_clkdm, *l3_2_clkdm, *l4_per_clkdm;
149149

150150
if (!cpu_is_omap44xx())
@@ -168,21 +168,27 @@ static int __init omap4_pm_init(void)
168168
* MPUSS -> L4_PER/L3_* and DUCATI -> L3_* doesn't work as
169169
* expected. The hardware recommendation is to enable static
170170
* dependencies for these to avoid system lock ups or random crashes.
171+
* The L4 wakeup depedency is added to workaround the OCP sync hardware
172+
* BUG with 32K synctimer which lead to incorrect timer value read
173+
* from the 32K counter. The BUG applies for GPTIMER1 and WDT2 which
174+
* are part of L4 wakeup clockdomain.
171175
*/
172176
mpuss_clkdm = clkdm_lookup("mpuss_clkdm");
173177
emif_clkdm = clkdm_lookup("l3_emif_clkdm");
174178
l3_1_clkdm = clkdm_lookup("l3_1_clkdm");
175179
l3_2_clkdm = clkdm_lookup("l3_2_clkdm");
176180
l4_per_clkdm = clkdm_lookup("l4_per_clkdm");
181+
l4wkup = clkdm_lookup("l4_wkup_clkdm");
177182
ducati_clkdm = clkdm_lookup("ducati_clkdm");
178-
if ((!mpuss_clkdm) || (!emif_clkdm) || (!l3_1_clkdm) ||
183+
if ((!mpuss_clkdm) || (!emif_clkdm) || (!l3_1_clkdm) || (!l4wkup) ||
179184
(!l3_2_clkdm) || (!ducati_clkdm) || (!l4_per_clkdm))
180185
goto err2;
181186

182187
ret = clkdm_add_wkdep(mpuss_clkdm, emif_clkdm);
183188
ret |= clkdm_add_wkdep(mpuss_clkdm, l3_1_clkdm);
184189
ret |= clkdm_add_wkdep(mpuss_clkdm, l3_2_clkdm);
185190
ret |= clkdm_add_wkdep(mpuss_clkdm, l4_per_clkdm);
191+
ret |= clkdm_add_wkdep(mpuss_clkdm, l4wkup);
186192
ret |= clkdm_add_wkdep(ducati_clkdm, l3_1_clkdm);
187193
ret |= clkdm_add_wkdep(ducati_clkdm, l3_2_clkdm);
188194
if (ret) {

arch/arm/mach-omap2/prm_common.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ int omap_prcm_register_chain_handler(struct omap_prcm_irq_setup *irq_setup)
290290
goto err;
291291
}
292292

293-
for (i = 0; i <= irq_setup->nr_regs; i++) {
293+
for (i = 0; i < irq_setup->nr_regs; i++) {
294294
gc = irq_alloc_generic_chip("PRCM", 1,
295295
irq_setup->base_irq + i * 32, prm_base,
296296
handle_level_irq);

0 commit comments

Comments
 (0)