From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751834AbcDKAbe (ORCPT ); Sun, 10 Apr 2016 20:31:34 -0400 Received: from mailout2.samsung.com ([203.254.224.25]:50553 "EHLO mailout2.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751175AbcDKAbd convert rfc822-to-8bit (ORCPT ); Sun, 10 Apr 2016 20:31:33 -0400 X-AuditID: cbfee68d-f79e86d0000012da-b4-570af0625933 MIME-version: 1.0 Content-type: text/plain; charset=UTF-8 Content-transfer-encoding: 8BIT Message-id: <570AF062.5000609@samsung.com> Date: Mon, 11 Apr 2016 09:31:30 +0900 From: Chanwoo Choi User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 To: Roger Quadros , myungjoo.ham@samsung.com Cc: linux-kernel@vger.kernel.org, Grygorii Strashko Subject: Re: [PATCH v2] extcon: usb-gpio: Don't miss event during suspend/resume References: <1459951299-20578-1-git-send-email-rogerq@ti.com> <57075F23.8080703@ti.com> In-reply-to: <57075F23.8080703@ti.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprNIsWRmVeSWpSXmKPExsWyRsSkUDfpA1e4wYRtGhYrp7BYXN41h83i duMKNoueR1oOLB59W1Yxehy/sZ3J4/MmuQDmKC6blNSczLLUIn27BK6M5vP72Aq6eCpubIlq YJzI1cXIySEhYCLxc+tiZghbTOLCvfVsXYxcHEICKxglNjYcZe1i5AArarmSBRFfyijRduYP E0gDr4CgxI/J91hAbGYBdYlJ8xYxQ9giEmc2f2SFsLUlli18zQzR/IBRovPZAlaIZi2Jnwdm M4LYLAKqEjd6G8FsNqD4/hc32EAWiwpESHSfqAQxRQSsJTZ89wExmQX8JG5PlAMpFhYIkHi3 7yY7iC0kECkxt+8ZI0gJp4CaxNt1vCBLJQRWsUts/7GFBWKRgMS3yYdYIL6Sldh0AOpzSYmD K26wTGAUn4Xkr1lI/pqF5K9ZSP5awMiyilE0tSC5oDgpvchQrzgxt7g0L10vOT93EyMwzk7/ e9a7g/H2AetDjAIcjEo8vA7XuMKFWBPLiitzDzGaAl00kVlKNDkfGM15JfGGxmZGFqYmpsZG 5pZmSuK8ilI/g4UE0hNLUrNTUwtSi+KLSnNSiw8xMnFwSjUwOm0pSXDaFZzu/3IC7xL+yfXJ fSwHe9nLF548+eiKv7nuZJ1n+Qfmu9/+yJe/WUL0I6uHw+Fj5y2KCwM6jnTeNvi5qGl+7xxz 0yrpFY3da87L6x6XDCq+fUKoKJVJe0mzcKSz/181g8WJsirbmQ5J7X7/6uFqpZLbF7kSnMVM K/of5rFcu/tQiaU4I9FQi7moOBEAuc0TRq4CAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrPIsWRmVeSWpSXmKPExsVy+t9jAd2kD1zhBivOKVusnMJicXnXHDaL 240r2Cx6Hmk5sHj0bVnF6HH8xnYmj8+b5AKYoxoYbTJSE1NSixRS85LzUzLz0m2VvIPjneNN zQwMdQ0tLcyVFPISc1NtlVx8AnTdMnOAlikplCXmlAKFAhKLi5X07TBNCA1x07WAaYzQ9Q0J gusxMkADCWsYM16de8pU8I274vnf10wNjH85uxg5OCQETCRarmR1MXICmWISF+6tZ+ti5OIQ EljKKNF25g8TSIJXQFDix+R7LCD1zALyEkcuZYOEmQXUJSbNW8QMUf+AUaLz2QJWiHotiZ8H ZjOC2CwCqhI3ehvBbDag+P4XN9hA5ogKREh0n6gEMUUErCU2fPeBmO4ncXuiHEixsECAxLt9 N9lBbCGBSIm5fc8YQUo4BdQk3q7jncAoMAvJabMQTpuF5LQFjMyrGCVSC5ILipPScw3zUsv1 ihNzi0vz0vWS83M3MYIj85nUDsaDu9wPMQpwMCrx8L64zBUuxJpYVlyZe4hRgoNZSYR3xzug EG9KYmVValF+fFFpTmrxIUZToN8mMkuJJucDk0ZeSbyhsYmZkaWRuaGFkbG5kjjv4//rwoQE 0hNLUrNTUwtSi2D6mDg4pRoYYz2r/OV9BXxOrb0i87xZapfZo5+Pt9dXrBV/HVCzeN5lc60Z G584CUxKO7PjipGbp/5se6lz+yP5l+Qu6Xg8e1qTQPvCZcFbbS9Z7dt7ymp75pptdf37zj60 8pGJn8W0ULiNV9rrbb/3Rz3bz0H2Bln3bgpMZjcptZwjtienT65B32+1T56lEktxRqKhFnNR cSIABWEQl+ICAAA= DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Roger, On 2016년 04월 08일 16:34, Roger Quadros wrote: > Pin state might have changed during suspend/resume while > our interrupts were disabled and if device doesn't support wakeup. > > Scan for change during resume for such case. > > Signed-off-by: Roger Quadros > --- > v2: > - only check for state change during resume if device wakeup is not supported > > drivers/extcon/extcon-usb-gpio.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/extcon/extcon-usb-gpio.c b/drivers/extcon/extcon-usb-gpio.c > index bc61d11..118f8ab 100644 > --- a/drivers/extcon/extcon-usb-gpio.c > +++ b/drivers/extcon/extcon-usb-gpio.c > @@ -185,6 +185,8 @@ static int usb_extcon_resume(struct device *dev) > int ret = 0; > > enable_irq(info->id_irq); > + if (!device_may_wakeup(dev)) > + usb_extcon_detect_cable(&info->wq_detcable.work); The device_may_wakeup() check the following two states: - dev->power.can_wakeup - device_init_wakeup() function set the this field. - dev->power.wakeup - device_wakeup_enable() function set the this field. The probe function of extcon-usb-gpio.c always call the 'device_init_wakeup(dev,true). But, anywhere in extcon-usb-gpio.c don't handle the device_wakeup_enable() for dev->power.wakeup. In the extcon-usb-gpio.c, device_may_wakeup(dev) return always 'false'. If you use the only device_may_wakeup(), device_may_wakeup() is not able to check whether interrupt is wakeup source or not. Thanks, Chanwoo Choi