From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753690AbdDEBIO (ORCPT ); Tue, 4 Apr 2017 21:08:14 -0400 Received: from mailout1.samsung.com ([203.254.224.24]:63152 "EHLO epoutp01.samsung.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751901AbdDEBIN (ORCPT ); Tue, 4 Apr 2017 21:08:13 -0400 X-AuditID: b6c32a38-f791a6d0000031eb-66-58e4437ac4eb MIME-version: 1.0 Content-transfer-encoding: 8BIT Content-type: text/plain; charset="UTF-8" Message-id: <58E44379.6090703@samsung.com> Date: Wed, 05 Apr 2017 10:08:09 +0900 From: Chanwoo Choi Organization: Samsung Electronics User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 To: Hans de Goede , MyungJoo Ham Cc: linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 2/2] extcon: intel-cht-wc: Ignore failure to detect charger-type on host mode exit In-reply-to: <20170404220452.9891-2-hdegoede@redhat.com> X-Brightmail-Tracker: H4sIAAAAAAAAA01SbUhTYRTm3d2u19Xsdk07Gda8YDBha3fOnJGiJTFKQspgGGEXfdvm3Ga7 MyoiXKQOteyTSkyjDypBrVmhFhUq9aualSWF0zIs+i61ST+ybdeof895eM45z3k4FMFMyhIo q8ONXQ6+jCXl0pt9KrV6z5q3Jm3Ps/mGTw9OSgxPe5pIwyvPZTKbMH69M0gaD11vRcYJ35J8 ohCvsmC+BLuU2FHsLLE6zJns+k1Fa4rSVmg5NZdhSGeVDt6OM9ncvHz1WmtZaBGr3MmXVYSo fF4Q2OVZq1zOCjdWWpyCO5PdwnE6DadN1+h0Oo0+detKXVpIsg1bRoM3UPl92FU31U5Wos+x tSiaAloP79o6JSKOB3+gg6xFcoqhuxCcOdaCxKJGAn3vm8i/Hb+8QRTGDH0JQVu7OowV9HyY PhaQ1iKKIuil0P/EFqYJWgU3bnVEiXMCCC49HSJFfQpMDvsim6V0MvQETkVmkiH+7ntRM49O gsHpsQgfR5ugu+VnVBgvoDfCUPCyTFyghF8BXwTH0jbof/wpMjOaNkBV8zlC9FwXBZ0HS8Pe gE4E371ZOhdefPTMHh8LHx5cjxLxYmj9/VIS9gx0DYLOpvBd4cKLYOSKRyaqUmFkNECIJmLg y1S9TFygAG81I0qMUB08jUScAw3BW7OBdiM4O+AlDiNl43/ZNf7LrvG/7M4iohXF43LBbsYC V67XCLxdqHCYNcVOuw9FPi7F0IVuP8rrRTSF2LkK/6kxEyPjdwq77b0IKIJdoHCwb02MooTf vQe7nEWuijIs9KK0UPRHiIS4Ymfofx3uIk6fodWv0IW+LoPj2IWKuI7nJoY2825sw7gcu/72 SajohErkvXbNtLDjhPTr2teWFrl/+FCexVo60zKzecLWpxpP7Cuo8tc3HB+4114pH525OBSz v3D7d+N0s7Wb0ezLPmAUBuSqrM53/ef2FvivrrPiAs4Obxp2bD36sNAzZq27MGe75psqecOy JE9XjhzyqxelT50f//gjMOcmYzHjpNXrWKlg4bkUwiXwfwCPYInghwMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrIIsWRmVeSWpSXmKPExsVy+t9jAd0q5ycRBrNfM1u8OT6dyeLyrjls FrcbV7A5MHu833eVzaNvyypGj8+b5AKYo9xsMlITU1KLFFLzkvNTMvPSbZVCQ9x0LZQU8hJz U22VInR9Q4KUFMoSc0qBPCMDNODgHOAerKRvl+CW8eD7VsaCYxIV3V/XsTUwvhXuYuTkkBAw kfjV8Z0RwhaTuHBvPVsXIxeHkMBSRolFt3ewgiR4BQQlfky+x9LFyMHBLCAvceRSNkiYWUBd YtK8RcwQ9Q8YJRp69jND1GtJfLm7iQnEZhFQldh1bwbYAjag+P4XN9hAbH4BRYmrPx4zgswU FYiQ6D5RCRIWEQiQ+Hmqnx1ivoLEr3ubwE4QFsiWOHL+DRPErp2MEiuWvgJLcApYSLQCHTGB UXAWklNnIZw6C8mpCxiZVzFKpBYkFxQnpeca5qWW6xUn5haX5qXrJefnbmIER88zqR2MB3e5 H2IU4GBU4uGtmPY4Qog1say4MvcQowQHs5IIb57Skwgh3pTEyqrUovz4otKc1OJDjKZAv05k lhJNzgdGdl5JvKGJuYm5sYGFuaWliZGSOG/j7GfhQgLpiSWp2ampBalFMH1MHJxSDYxzWDaH zFl9wHztBVO7k/ZPny7/8NV6n8mmfQX6dXOku9YI1sWdrleVTazIWPeoXvsN64YfbgHuVb/b tx3o7cz2zGnhLtJa53LUtyBPR6bpid6HrWxKOzZuTw5dy1++MeiQqvyaY/0tfzpe1i6MKOBQ Wl2RVGtX+0rit8Tt+S+uL3gfq5BjEKHEUpyRaKjFXFScCABrArBatAIAAA== X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170405010810epcas1p25c32b332f7fbd92718ed308ea46d8664 X-Msg-Generator: CA X-Sender-IP: 203.254.230.26 X-Local-Sender: =?UTF-8?B?7LWc7LCs7JqwG1RpemVuIFBsYXRmb3JtIExhYihTL1fshLw=?= =?UTF-8?B?7YSwKRvsgrzshLHsoITsnpAbU2VuaW9yIEVuZ2luZWVy?= X-Global-Sender: =?UTF-8?B?Q2hhbndvbyBDaG9pG1RpemVuIFBsYXRmb3JtIExhYi4bU2Ft?= =?UTF-8?B?c3VuZyBFbGVjdHJvbmljcxtTZW5pb3IgRW5naW5lZXI=?= X-Sender-Code: =?UTF-8?B?QzEwG1NUQUYbQzEwVjgxMTE=?= CMS-TYPE: 101P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20170404220503epcas4p30467966d21d9b157fd6883246c4971b7 X-RootMTR: 20170404220503epcas4p30467966d21d9b157fd6883246c4971b7 References: <20170404220452.9891-1-hdegoede@redhat.com> <20170404220452.9891-2-hdegoede@redhat.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2017년 04월 05일 07:04, Hans de Goede wrote: > When we leave host-mode because the id-pin is no longer connected to > ground, the 5v boost converter is normally still on, so we will see > Vbus, but it is not from a charger (normally) so the charger-type > detection will fail. > > This commit silences the cht_wc_extcon_get_charger() false-positive > errors when we're leaving host mode. > > Signed-off-by: Hans de Goede > --- > drivers/extcon/extcon-intel-cht-wc.c | 15 +++++++++++---- > 1 file changed, 11 insertions(+), 4 deletions(-) > > diff --git a/drivers/extcon/extcon-intel-cht-wc.c b/drivers/extcon/extcon-intel-cht-wc.c > index e22df5f..5f37112 100644 > --- a/drivers/extcon/extcon-intel-cht-wc.c > +++ b/drivers/extcon/extcon-intel-cht-wc.c > @@ -96,6 +96,7 @@ struct cht_wc_extcon_data { > struct regmap *regmap; > struct extcon_dev *edev; > unsigned int previous_cable; > + bool usb_host; > }; > > static int cht_wc_extcon_get_id(struct cht_wc_extcon_data *ext, int pwrsrc_sts) > @@ -112,7 +113,8 @@ static int cht_wc_extcon_get_id(struct cht_wc_extcon_data *ext, int pwrsrc_sts) > return USB_ID_FLOAT; > } > > -static int cht_wc_extcon_get_charger(struct cht_wc_extcon_data *ext) > +static int cht_wc_extcon_get_charger(struct cht_wc_extcon_data *ext, > + bool ignore_errors) > { > int ret, usbsrc, status; > unsigned long timeout; > @@ -135,6 +137,9 @@ static int cht_wc_extcon_get_charger(struct cht_wc_extcon_data *ext) > } while (time_before(jiffies, timeout)); > > if (status != CHT_WC_USBSRC_STS_SUCCESS) { > + if (ignore_errors) > + return EXTCON_CHG_USB_SDP; /* Save fallback */ > + > if (status == CHT_WC_USBSRC_STS_FAIL) > dev_warn(ext->dev, "Could not detect charger type\n"); > else > @@ -203,6 +208,8 @@ static void cht_wc_extcon_pwrsrc_event(struct cht_wc_extcon_data *ext) > { > int ret, pwrsrc_sts, id; > unsigned int cable = EXTCON_NONE; > + /* Ignore errors in host mode, as the 5v boost converter is on then */ > + bool ignore_get_charger_errors = ext->usb_host; > > ret = regmap_read(ext->regmap, CHT_WC_PWRSRC_STS, &pwrsrc_sts); > if (ret) { > @@ -223,7 +230,7 @@ static void cht_wc_extcon_pwrsrc_event(struct cht_wc_extcon_data *ext) > goto set_state; > } > > - ret = cht_wc_extcon_get_charger(ext); > + ret = cht_wc_extcon_get_charger(ext, ignore_get_charger_errors); > if (ret >= 0) > cable = ret; > > @@ -238,8 +245,8 @@ static void cht_wc_extcon_pwrsrc_event(struct cht_wc_extcon_data *ext) > ext->previous_cable = cable; > } > > - extcon_set_state_sync(ext->edev, EXTCON_USB_HOST, > - id == USB_ID_GND || id == USB_RID_A); > + ext->usb_host = id == USB_ID_GND || id == USB_RID_A; I'll modify it as following to improve the readability: ext->usb_host = ((id == USB_ID_GND) || (id == USB_RID_A)); > + extcon_set_state_sync(ext->edev, EXTCON_USB_HOST, ext->usb_host); > } > > static irqreturn_t cht_wc_extcon_isr(int irq, void *data) > -- Best Regards, Chanwoo Choi Samsung Electronics