On some platforms (e.g. rk3399), we use extcon notify
framework to receive USB charger notifier from USB PHY
driver. Generally, the USB PHY driver uses a work to check
vbus status and the USB charger type every 2 seconds,
this polling mechanism may cause USB charger undetected
if we plug in/out USB charger quickly.
A typical error case is:
1. Plug in an USB DCP Adapter.
- USB PHY driver sends notifier to rk818-charger
2. Plug out the USB Adapter, and plug in again immediately
- rk818 detects plug out irq, and turns off charging
- USB PHY driver schedule work doesn't detect the plug
out/in operations, and doesn't send usb charger notifier
Fortunately, rk818 can detect plug in irq, so let's check
the USB charger type in rk818 plug in irq handler.
Change-Id: Iee45769c8a98c709da2dbfa514198ab0f648fd20
Signed-off-by: William Wu <william.wu@rock-chips.com>
CG_INFO("pmic: plug in\n");
cg->plugin_trigger = 0;
rk_send_wakeup_key();
+ if (cg->pdata->extcon)
+ queue_delayed_work(cg->usb_charger_wq, &cg->usb_work,
+ msecs_to_jiffies(10));
} else if (cg->plugout_trigger) {
CG_INFO("pmic: plug out\n");
cg->plugout_trigger = 0;