- /* 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);
- rt5025_reg_write(ii->i2c, RT5025_REG_IRQEN3, 0x00);
- 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);
- irq_stat[2] = rt5025_reg_read(ii->i2c, RT5025_REG_IRQSTATUS3);
- irq_stat[3] = rt5025_reg_read(ii->i2c, RT5025_REG_IRQSTATUS4);
- irq_stat[4] = rt5025_reg_read(ii->i2c, RT5025_REG_IRQSTATUS5);
- irq_stat[5] = rt5025_reg_read(ii->i2c, RT5025_REG_GAUGEIRQFLG);
- RTINFO("irq1->0x%02x, irq2->0x%02x, irq3->0x%02x\n", irq_stat[0], irq_stat[1], irq_stat[2]);
- RTINFO("irq4->0x%02x, irq5->0x%02x, irq6->0x%02x\n", irq_stat[3], irq_stat[4], irq_stat[5]);
- RTINFO("stat value = %02x\n", rt5025_reg_read(ii->i2c, RT5025_REG_CHGSTAT));
-
- chg_event = irq_stat[0]<<16 | irq_stat[1]<<8 | irq_stat[2];
- pwr_event = irq_stat[3]<<8 | irq_stat[4];
- #ifdef CONFIG_POWER_RT5025
- if ((chg_event & CHARGER_DETECT_MASK))
- {
- if (chg_event & CHG_EVENT_CHTERMI)
- {
- ii->chip->power_info->chg_term++;
- if (ii->chip->power_info->chg_term > 3)
- ii->chip->power_info->chg_term = 4;
- }
-
- if (chg_event & CHG_EVENT_CHRCHGI)
- ii->chip->power_info->chg_term = 0;
-
- if (chg_event & (CHG_EVENT_CHSLPI_INAC | CHG_EVENT_CHSLPI_INUSB))
- {
- ii->chip->power_info->chg_term = 0;
- if (chg_event & CHG_EVENT_CHSLPI_INAC)
- ii->acin_cnt = 0;
- if (chg_event & CHG_EVENT_CHSLPI_INUSB)
- ii->usbin_cnt = 0;
-
- }
-
- if (chg_event & (CHG_EVENT_INAC_PLUGIN | CHG_EVENT_INUSB_PLUGIN))
- {
- RTINFO("acin_cnt %d, usbin_cnt %d\n", ii->acin_cnt, ii->usbin_cnt);
- if (ii->acin_cnt == 0 && ii->usbin_cnt == 0)
- {
- #if 1
- rt5025_charger_reset_and_reinit(ii->chip->power_info);
- rt5025_reg_write(ii->i2c, RT5025_REG_IRQEN1, irq_enable[0]);
- rt5025_reg_write(ii->i2c, RT5025_REG_IRQEN2, irq_enable[1]&(~RT5025_CHTERMI_MASK));
- rt5025_reg_write(ii->i2c, RT5025_REG_IRQEN3, irq_enable[2]);
- #else
- rt5025_set_charging_buck(ii->i2c, 0);
- mdelay(50);
- rt5025_set_charging_buck(ii->i2c, 1);
- mdelay(100);
- rt5025_set_charging_buck(ii->i2c, 0);
- mdelay(50);
- rt5025_set_charging_buck(ii->i2c, 1);
- mdelay(400);
- #endif /* #if 1 */
- }
-
- if (chg_event & CHG_EVENT_INAC_PLUGIN)
- ii->acin_cnt = 1;
- if (chg_event & CHG_EVENT_INUSB_PLUGIN)
- ii->usbin_cnt = 1;
- RTINFO("acin_cnt %d, usbin_cnt %d\n", ii->acin_cnt, ii->usbin_cnt);
- }
-
- if (ii->chip->power_info->chg_term <= 3)
- rt5025_power_charge_detect(ii->chip->power_info);
-
- }
- #endif /* CONFIG_POWER_RT5025 */
- if (ii->event_cb)
- {
- if (chg_event)
- ii->event_cb->charger_event_callback(chg_event);
- if (pwr_event)
- ii->event_cb->power_event_callkback(pwr_event);
- }
- #if 0