From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755722AbbE2Kon (ORCPT ); Fri, 29 May 2015 06:44:43 -0400 Received: from mailout2.samsung.com ([203.254.224.25]:64885 "EHLO mailout2.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755544AbbE2KoY (ORCPT ); Fri, 29 May 2015 06:44:24 -0400 X-AuditID: cbfee690-f796f6d000005054-58-55684306665a Message-id: <55684305.9010405@samsung.com> Date: Fri, 29 May 2015 19:44:21 +0900 From: Chanwoo Choi User-Agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130106 Thunderbird/17.0.2 MIME-version: 1.0 To: "Ivan T. Ivanov" Cc: Chanwoo Choi , linux-kernel@vger.kernel.org, rogerq@ti.com, r.baldyga@samsung.com, peter.chen@freescale.com, kishon@ti.com, balbi@ti.com, myungjoo.ham@samsung.com Subject: Re: [PATCH v2 0/2] extcon: Inform the state of both ID and VBUS pin for USB References: <1432728910-10761-1-git-send-email-cw00.choi@samsung.com> <1432802731.2348.25.camel@mm-sol.com> In-reply-to: <1432802731.2348.25.camel@mm-sol.com> Content-type: text/plain; charset=UTF-8 Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrPIsWRmVeSWpSXmKPExsWyRsSkQJfNOSPU4OgXeYuD9+stnh3Vtng2 8SGjxYWnPWwWl3fNYbO43biCzeLY7L9MFg8O72S36Hmk5cDp8e9wP5PHzll32T027Z/G7NG3 ZRWjx/Eb25k8Pm+SC2CL4rJJSc3JLEst0rdL4Mo4d+4eW8F8iYqL9x8zNzAuEexi5OSQEDCR mHjyGyOELSZx4d56ti5GLg4hgaWMErv3fGaHKer/uoEVIrGIUWLrhs8sEM4DRom2rX3MIFW8 AloS706/AhvFIqAqcfXCeTCbDSi+/8UNNhBbVCBMYuX0KywQ9YISPybfA7I5OEQENCU2nQkG CTML7GOUeHOrHsQWBiqf2LMBrFVIIFfi4POLYDangJHEmu9t7BD16hKT5i1ihrDlJTavecsM cpuEwC12iR0nvrBC3CMg8W3yIbBdEgKyEpsOMEM8JilxcMUNlgmMYrOQXDQLydhZSMYuYGRe xSiaWpBcUJyUXmSiV5yYW1yal66XnJ+7iREYj6f/PZuwg/HeAetDjAIcjEo8vB030kOFWBPL iitzDzGaAl0xkVlKNDkfGPV5JfGGxmZGFqYmpsZG5pZmSuK8r6V+BgsJpCeWpGanphakFsUX leakFh9iZOLglGpgLNnE8ddi09SYD+yXfZ7OFM0tWmKmXbzz+at2S1t7vw2aXz4F8/Nuf/RD dOd3fe6qt0aKSfZG8e9uP/tSzHj4UJSu0k/xM6tfXf3DoT9ZeuW54AVe/Dl5P67WZiavvtnw /GZngpb8p09RQtsWHJHjPJcefk3hkWBS3uIsxQOpvQY5n+4c0cparMRSnJFoqMVcVJwIAH8V 9/vCAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrJIsWRmVeSWpSXmKPExsVy+t9jAV0254xQg2PdUhYH79dbPDuqbfFs 4kNGiwtPe9gsLu+aw2Zxu3EFm8Wx2X+ZLB4c3slu0fNIy4HT49/hfiaPnbPusnts2j+N2aNv yypGj+M3tjN5fN4kF8AW1cBok5GamJJapJCal5yfkpmXbqvkHRzvHG9qZmCoa2hpYa6kkJeY m2qr5OIToOuWmQN0k5JCWWJOKVAoILG4WEnfDtOE0BA3XQuYxghd35AguB4jAzSQsIYx49y5 e2wF8yUqLt5/zNzAuESwi5GTQ0LARKL/6wZWCFtM4sK99WxdjFwcQgKLGCW2bvjMAuE8YJRo 29rHDFLFK6Al8e70K0YQm0VAVeLqhfNgNhtQfP+LG2wgtqhAmMTK6VdYIOoFJX5Mvgdkc3CI CGhKbDoTDBJmFtjHKPHmVj2ILQxUPrFnA1irkECuxMHnF8FsTgEjiTXf29gh6tUlJs1bxAxh y0tsXvOWeQKjwCwkG2YhKZuFpGwBI/MqRtHUguSC4qT0XEO94sTc4tK8dL3k/NxNjOBofya1 g3Flg8UhRgEORiUe3o4b6aFCrIllxZW5hxglOJiVRHh36WSECvGmJFZWpRblxxeV5qQWH2I0 BQbARGYp0eR8YCLKK4k3NDYxM7I0Mje0MDI2VxLnPZnvEyokkJ5YkpqdmlqQWgTTx8TBKdXA GFNyVeRabIKXh/M0j4JNKpacr59yi5ddCd+Y+ZkjqWFCcnXpsputhxp/FEtclPjBxJf9oOyF T7RL+LR0pjfb4jZkbV7/xz1VI719bp37oyDdrSdSJqY9O/fzGq+gBacdo0LC6yWNjKX6tycH d7skVsbvO3M/Z5WuVe/07S9ZDgiu642R4f+txFKckWioxVxUnAgArIq1nAwDAAA= 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 Ivan, On 05/28/2015 05:45 PM, Ivan T. Ivanov wrote: > > Hi Chanwoo, > > On Wed, 2015-05-27 at 21:15 +0900, Chanwoo Choi wrote: >> Previously, I discussed how to inform the changed state of both ID >> and VBUS pin for USB connector on patch-set[1]. >> [1] https://lkml.org/lkml/2015/4/2/310 >> >> So, this patch adds the extcon_set_cable_line_state() function to inform >> the additional state of external connectors without additional register/ >> unregister functions. This function uses the existing notifier chain >> which is registered by extcon_register_notifier() / extcon_register_interest(). >> >> The extcon_set_cable_line_state() can inform the new state of both >> ID and VBUS pin state through extcon_set_cable_line_state(). >> >> For exmaple: >> - On extcon-usb-gpio.c as extcon provider driver as following: >> static void usb_extcon_detect_cable(struct work_struct *work) >> { >> ... >> /* check ID and update cable state */ >> id = gpiod_get_value_cansleep(info->id_gpiod); >> if (id) { >> extcon_set_cable_state_(info->edev, EXTCON_USB_HOST, false); >> extcon_set_cable_state_(info->edev, EXTCON_USB, true); >> >> extcon_set_cable_line_state(info->edev, EXTCON_USB, >> EXTCON_USB_ID_HIGH); > > I am getting more and more confused :-). Why EXTCON_USB is now used for ID notifications? > It should be EXTCON_USB_HOST, no? Why we need another function, framework already have > required information from the function one line above, do I miss something? The EXTCON fwk has the follwoing different functions: - extcon_set_cable_state() : Send whether external connectors is attached or detached to the extcon consumer driver in kernel space and to the user-space by using the uevent. - extcon_set_cable_line_state() : Send the specific line state of both ID and VBUS pin state of USB connector to only the extcon consumer driver in kernel space. This function don't send the uevent to the user-space because user-space process don't consider the h/w pin state. > >> } else { >> extcon_set_cable_state_(info->edev, EXTCON_USB, false); >> extcon_set_cable_state_(info->edev, EXTCON_USB_HOST, true); >> >> extcon_set_cable_line_state(info->edev, EXTCON_USB, >> EXTCON_USB_ID_LOW); >> } >> } >> >> - On specific extcon consumder driver as following: >> static int xxx_probe(struct platform_device *pdev) >> { >> struct notifier_chain nh; >> >> nb.notifier_call = extcon_usb_notifier; >> ret = extcon_register_notifier(edev, EXTCON_USB, &nb); > > This is bit misleading. 'nb' could not be in stack. Right. It is my mistake. I'll fix it for example. Thanks, Chanwoo Choi