void twl60xx_pmu_early_suspend(struct regulator_dev *rdev)
{
printk("%s\n", __func__);
-
- twl_reg_write(REG_INT_MSK_STS_A,TWL_MODULE_PIH, 0x00); //open vlow interrupt
+ int ret;
+ ret = twl_reg_read(REG_INT_MSK_STS_A,TWL_MODULE_PIH);
+ twl_reg_write(REG_INT_MSK_STS_A,TWL_MODULE_PIH, ret & (~(1 << 2))); //open vlow interrupt
}
void twl60xx_pmu_early_resume(struct regulator_dev *rdev)
{
printk("%s\n", __func__);
-
- twl_reg_write(REG_INT_MSK_STS_A,TWL_MODULE_PIH, 0x04); //close vlow interrupt
+ int ret;
+ ret = twl_reg_read(REG_INT_MSK_STS_A,TWL_MODULE_PIH);
+ twl_reg_write(REG_INT_MSK_STS_A,TWL_MODULE_PIH, ret |(1 << 2)); //close vlow interrupt
}
#else
void twl60xx_pmu_early_suspend(struct regulator_dev *rdev)
int i;
int ret;
u8 mask[4];
+ u8 reg;
static struct irq_chip twl6030_irq_chip;
status = twl6030_vlow_init(twl6030_irq_base + TWL_VLOW_INTR_OFFSET);
if (status < 0)
goto fail_vlow;
-
- twl_i2c_write_u8(TWL_MODULE_PIH, 0x04,REG_INT_MSK_STS_A); //close vlow interrupt
+
+ twl_i2c_write_u8(TWL_MODULE_PIH, ®,REG_INT_MSK_STS_A);
+ twl_i2c_write_u8(TWL_MODULE_PIH, reg | (1 << 2),REG_INT_MSK_STS_A); //close vlow interrupt
return status;