rk31:pmu:rt5025:modify some irq error
author张晴 <zhangqing@rock-chips.com>
Tue, 29 Oct 2013 06:45:46 +0000 (14:45 +0800)
committer张晴 <zhangqing@rock-chips.com>
Tue, 29 Oct 2013 06:45:46 +0000 (14:45 +0800)
drivers/mfd/rt5025-irq.c
drivers/power/rt5025-power.c

index c0fa0dae5b5e0ae21428bafa95cf560dfd6674bc..6989f812553bbd91023bbb05120a3e6bb4ec20fc 100644 (file)
@@ -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);
 }
index 85d089e9dcdb217e26b792843ae4707cf404a5dc..fbc55b7e8c89fc42e9231fc842280a33d3d01047 100644 (file)
@@ -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;