|
@@ -63,7 +63,7 @@ static struct powerdomain *mpu_pwrdm;
|
|
|
*/
|
|
|
static int prcm_clear_mod_irqs(s16 module, u8 regs)
|
|
|
{
|
|
|
- u32 wkst, fclk, iclk;
|
|
|
+ u32 wkst, fclk, iclk, clken;
|
|
|
u16 wkst_off = (regs == 3) ? OMAP3430ES2_PM_WKST3 : PM_WKST1;
|
|
|
u16 fclk_off = (regs == 3) ? OMAP3430ES2_CM_FCLKEN3 : CM_FCLKEN1;
|
|
|
u16 iclk_off = (regs == 3) ? CM_ICLKEN3 : CM_ICLKEN1;
|
|
@@ -77,8 +77,15 @@ static int prcm_clear_mod_irqs(s16 module, u8 regs)
|
|
|
iclk = cm_read_mod_reg(module, iclk_off);
|
|
|
fclk = cm_read_mod_reg(module, fclk_off);
|
|
|
while (wkst) {
|
|
|
- cm_set_mod_reg_bits(wkst, module, iclk_off);
|
|
|
- cm_set_mod_reg_bits(wkst, module, fclk_off);
|
|
|
+ clken = wkst;
|
|
|
+ cm_set_mod_reg_bits(clken, module, iclk_off);
|
|
|
+ /*
|
|
|
+ * For USBHOST, we don't know whether HOST1 or
|
|
|
+ * HOST2 woke us up, so enable both f-clocks
|
|
|
+ */
|
|
|
+ if (module == OMAP3430ES2_USBHOST_MOD)
|
|
|
+ clken |= 1 << OMAP3430ES2_EN_USBHOST2_SHIFT;
|
|
|
+ cm_set_mod_reg_bits(clken, module, fclk_off);
|
|
|
prm_write_mod_reg(wkst, module, wkst_off);
|
|
|
wkst = prm_read_mod_reg(module, wkst_off);
|
|
|
c++;
|