From e0258457a78bf7fc1660be5f848d910a9e933123 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E5=BC=A0=E6=99=B4?= Date: Tue, 29 Oct 2013 14:45:46 +0800 Subject: [PATCH 1/1] rk31:pmu:rt5025:modify some irq error --- drivers/mfd/rt5025-irq.c | 6 +++++- drivers/power/rt5025-power.c | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/mfd/rt5025-irq.c b/drivers/mfd/rt5025-irq.c index c0fa0dae5b5e..6989f812553b 100644 --- a/drivers/mfd/rt5025-irq.c +++ b/drivers/mfd/rt5025-irq.c @@ -75,6 +75,7 @@ static void rt5025_work_func(struct work_struct *work) irq_enable[3] = rt5025_reg_read(ii->i2c, RT5025_REG_IRQEN4); irq_enable[4] = rt5025_reg_read(ii->i2c, RT5025_REG_IRQEN5); irq_enable[5] = rt5025_reg_read(ii->i2c, RT5025_REG_GAUGEIRQEN); + #if 0 /* disable all irq enable bit first */ rt5025_reg_write(ii->i2c, RT5025_REG_IRQEN1, irq_enable[0]&RT5025_ADAPIRQ_MASK); rt5025_reg_write(ii->i2c, RT5025_REG_IRQEN2, 0x00); @@ -82,6 +83,7 @@ static void rt5025_work_func(struct work_struct *work) rt5025_reg_write(ii->i2c, RT5025_REG_IRQEN4, 0x00); rt5025_reg_write(ii->i2c, RT5025_REG_IRQEN5, 0x00); rt5025_reg_write(ii->i2c, RT5025_REG_GAUGEIRQEN, 0x00); + #endif //#if 0 /* read irq status bit */ irq_stat[0] = rt5025_reg_read(ii->i2c, RT5025_REG_IRQSTATUS1); irq_stat[1] = rt5025_reg_read(ii->i2c, RT5025_REG_IRQSTATUS2); @@ -124,7 +126,7 @@ static void rt5025_work_func(struct work_struct *work) rt5025_set_charging_buck(ii->i2c, 0); mdelay(50); rt5025_set_charging_buck(ii->i2c, 1); - mdelay(200); + mdelay(400); } } @@ -157,6 +159,7 @@ static void rt5025_work_func(struct work_struct *work) if (ii->init_once) ii->init_once = 0; + #if 0 /* restore all irq enable bit */ rt5025_reg_write(ii->i2c, RT5025_REG_IRQEN1, irq_enable[0]); rt5025_reg_write(ii->i2c, RT5025_REG_IRQEN2, irq_enable[1]); @@ -165,6 +168,7 @@ static void rt5025_work_func(struct work_struct *work) rt5025_reg_write(ii->i2c, RT5025_REG_IRQEN5, irq_enable[4]); if (rt5025_reg_read(ii->i2c, RT5025_REG_GAUGEIRQEN) == 0) rt5025_reg_write(ii->i2c, RT5025_REG_GAUGEIRQEN, irq_enable[5]); + #endif //#if 0 //enable_irq(ii->irq); } diff --git a/drivers/power/rt5025-power.c b/drivers/power/rt5025-power.c index 85d089e9dcdb..fbc55b7e8c89 100644 --- a/drivers/power/rt5025-power.c +++ b/drivers/power/rt5025-power.c @@ -253,7 +253,8 @@ int rt5025_power_charge_detect(struct rt5025_power_info *info) msleep(100); } - if (old_acval != new_acval || old_usbval != new_usbval) + //if (old_acval != new_acval || old_usbval != new_usbval) + if (new_acval || new_usbval) schedule_delayed_work(&info->usb_detect_work, 0); //no delay new_chgval = (chgstatval&RT5025_CHGSTAT_MASK)>>RT5025_CHGSTAT_SHIFT; -- 2.34.1