From f7169a90bc441107240c042440391310dd1b2ba1 Mon Sep 17 00:00:00 2001 From: William Wu Date: Fri, 7 Jul 2017 09:53:00 +0800 Subject: [PATCH] power: rk818-charger: fix usb charger undetected 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 --- drivers/power/rk818_charger.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/power/rk818_charger.c b/drivers/power/rk818_charger.c index d785f89eb268..bd5b03e1f649 100644 --- a/drivers/power/rk818_charger.c +++ b/drivers/power/rk818_charger.c @@ -926,6 +926,9 @@ static void rk818_cg_irq_delay_work(struct work_struct *work) 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; -- 2.34.1