From: Jouni Hogander Date: Mon, 30 Jun 2008 08:52:43 +0000 (+0300) Subject: 34XX: PM: Workaround to reset all wkdeps X-Git-Tag: v2.6.26-omap1~81 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=d8721109b91eac588072a659608f407fc666be78;p=linux-2.6-omap-h63xx.git 34XX: PM: Workaround to reset all wkdeps This workaround is needed until powerdomain code resets wkdeps. Signed-off-by: Jouni Hogander Signed-off-by: Tony Lindgren --- diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c index 202c269568a..449e7b5aeaa 100644 --- a/arch/arm/mach-omap2/pm34xx.c +++ b/arch/arm/mach-omap2/pm34xx.c @@ -332,6 +332,20 @@ static struct platform_suspend_ops omap_pm_ops = { static void __init prcm_setup_regs(void) { + /* XXX Reset all wkdeps. This should be done when initializing + * powerdomains */ + prm_write_mod_reg(0, OMAP3430_IVA2_MOD, PM_WKDEP); + prm_write_mod_reg(0, MPU_MOD, PM_WKDEP); + prm_write_mod_reg(0, OMAP3430_DSS_MOD, PM_WKDEP); + prm_write_mod_reg(0, OMAP3430_NEON_MOD, PM_WKDEP); + prm_write_mod_reg(0, OMAP3430_CAM_MOD, PM_WKDEP); + prm_write_mod_reg(0, OMAP3430_PER_MOD, PM_WKDEP); + if (is_sil_rev_greater_than(OMAP3430_REV_ES1_0)) { + prm_write_mod_reg(0, OMAP3430ES2_SGX_MOD, PM_WKDEP); + prm_write_mod_reg(0, OMAP3430ES2_USBHOST_MOD, PM_WKDEP); + } else + prm_write_mod_reg(0, GFX_MOD, PM_WKDEP); + /* setup wakup source */ prm_write_mod_reg(OMAP3430_EN_IO | OMAP3430_EN_GPIO1 | OMAP3430_EN_GPT1, WKUP_MOD, PM_WKEN); @@ -371,6 +385,10 @@ int __init omap3_pm_init(void) printk(KERN_ERR "Power Management for TI OMAP3.\n"); + /* XXX prcm_setup_regs needs to be before enabling hw + * supervised mode for powerdomains */ + prcm_setup_regs(); + ret = request_irq(INT_34XX_PRCM_MPU_IRQ, (irq_handler_t)prcm_interrupt_handler, IRQF_DISABLED, "prcm", NULL); @@ -397,8 +415,6 @@ int __init omap3_pm_init(void) suspend_set_ops(&omap_pm_ops); - prcm_setup_regs(); - pm_idle = omap3_pm_idle; err1: