From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755122AbbE2BXr (ORCPT ); Thu, 28 May 2015 21:23:47 -0400 Received: from mail-bn1bon0130.outbound.protection.outlook.com ([157.56.111.130]:10632 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754068AbbE2BXi (ORCPT ); Thu, 28 May 2015 21:23:38 -0400 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=freescale.com; samsung.com; dkim=none (message not signed) header.d=none; Date: Fri, 29 May 2015 09:22:27 +0800 From: Peter Chen To: Roger Quadros CC: "Ivan T. Ivanov" , Chanwoo Choi , , , , , , , Subject: Re: [PATCH v2 0/2] extcon: Inform the state of both ID and VBUS pin for USB Message-ID: <20150529012226.GB14122@shlinux2> References: <1432728910-10761-1-git-send-email-cw00.choi@samsung.com> <1432802731.2348.25.camel@mm-sol.com> <556724FD.2010606@ti.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <556724FD.2010606@ti.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BN1BFFO11FD017;1:z07tlpph4okY2tuFM3av1VKGM7krhfMTZ0/N5cOgVqeBV+L3xjpVggR0ZJiS52Pq9pCoRX7OXNuIqC4VPQSgEKp3E5+JzbjwmZxi7cS+vsuxkA0i5UkTLyw4ebRaV0Z07bMAd683+E+Ju4f7vgN+43zKLAEkUsBz34jE5Umhsel6X7Hn2LU1/Gxlk7D7cOXmFLT/jqBK8SARMHfbSalhN3PUP5mLlp563Vqrn6DTGc9nCi+U564CXMu2nl8nlUQMAlqN5FIX10/3bAAxF6315tRKBJmf/qUeObxH0qeoNkmXSaabLglbGRMEjussusI5HkI82W+rE9luQoh7JCDv7g== X-Forefront-Antispam-Report: CIP:192.88.158.2;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(339900001)(24454002)(189002)(479174004)(199003)(377424004)(51704005)(104016003)(105606002)(33656002)(54356999)(76176999)(50986999)(106466001)(46102003)(97736004)(86362001)(23726002)(77156002)(62966003)(33716001)(4001350100001)(81156007)(5001830100001)(4001540100001)(50466002)(189998001)(110136002)(5001960100002)(2950100001)(47776003)(64706001)(69596002)(5001920100001)(19580395003)(15975445007)(77096005)(97756001)(92566002)(68736005)(6806004)(5001860100001)(46406003)(85426001)(87936001)(83506001)(21314002);DIR:OUT;SFP:1102;SCL:1;SRVR:DM2PR0301MB1229;H:az84smr01.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;DM2PR0301MB1229;2:5CSTA9pdeNpkIGc2eau7isEeW6MmluZzXdLloaj6Vd7fu0hKAFpaw9Y2g/8eLTia;2:JJbPLbopznAHCZNssF/Tna2SuMDA3DM9RIw4v5q/Vv98z27E8UGw/EMVR77DPTcrr5cnt8RD4wz/VoNOcfXS4/jHoSsD2LqOtPihFni/rxf7AFkwPb4UR+Px2FkHx5SKf8qXKQfxXIogc/vlbnMHGLLwDAWBG72hX6Uni7wIKJleNDbh811XQ1tW3hZq4aHAZjZZiFfwe7/VRLS/xREBG4eAV9sOxRVeJ0A+IybtmHc=;6:Z4WojeKcQKcuj25xSjIFS3m7Gql6D23ZxaBq9ADfva2JHjJbJiwgCNfKLTomTFKzeqogx5sQSMBpjk/QUDSM21tI5+cVcTj6J45rvbkD51STZVHKznlE3Nn2UJRHEpGQq4UrY2xYRQ3/6v7LiuieaqfnAsBSoXD07e6XrUtK4ISJNBsvDeUVoSKBzlXPeuqJCqIgHJMOTTvUMFqTtjGC0d1fKycjKvFD/4vJePIvQFELTPaYOo8/RAITO8L0YWnquqHyw2JIaPPGyJGZW2azOKwH16TuWa/758d20smbHtXAoUjkkRiKDSJ4PFbdwAIsvGiJOxojztHYCyfCPHE+Bw== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM2PR0301MB1229;UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM2PR0301MB0653; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(520003)(5005006)(3002001);SRVR:DM2PR0301MB1229;BCL:0;PCL:0;RULEID:;SRVR:DM2PR0301MB1229; X-Microsoft-Exchange-Diagnostics: 1;DM2PR0301MB1229;3:nUZnpqo6/7yBRwhTzXkQ1UC9dgLrn39THuxBafHxr6O/EoDsYTKEnRsMfoEQQAv5R67slonKHkAH6UFxg9WJV99ckyQteNjP67Q6vGslZgA0HKAb+ldRhaZr5tl/qRwSXnJFL+7uV+nU1u/lbBjkGsbLH13QzTPOE+VS8iaknyCWr/yCjy/erTvD2WI0objL58C8j4F9sueQPM3BjMr1yLIiWXXST25PcW9u1PqoO8bwMdABqeA+R853VyadPC/OPiffGZDS0SCgPMLiO+NAMB6/Axpp2sMDD66YiKe6KpzGSlQGGPRDi8jyqtcT8xoQ X-Forefront-PRVS: 059185FE08 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM2PR0301MB1229;9:NhnXxHqMFr1sSdEN9D//F3S2ku3n63RPR4+ykHTV?= =?us-ascii?Q?fs0Aj/IABywH/dI7zfVlunJYIMjWGUCQ8w7yajew1GNqL7p8pjrnvLvJ9gFc?= =?us-ascii?Q?43Oe67k41dmA43KlRpJCIuzJ4CnnQhNgyNcy5vlX7t2YPnlhGcKg6R3iLstb?= =?us-ascii?Q?JD9v4UfexY68FZ11eVAG/RDt0e9jPb8uvV9dRkhUB8eG5nugw3pOx9nc2i1u?= =?us-ascii?Q?Xz1koySM4ku7F5hFKgXKGgO6f12XnZqGx1mO3Z5uHk7RXIZExy3aEGbEAE6W?= =?us-ascii?Q?xPfhkWLDw6cgIM0WuRQNxa2s/QbDoBemr1nRmFwDTgBWurZHViy2Ur/9Djb6?= =?us-ascii?Q?uLC0TBRctccSjv4RFau3dGancz92sRK+JFp6GsV692quvg1PIiQIipMDEQHi?= =?us-ascii?Q?E6pWgfCoH0mrjnl2jwq72r6UjWgT67OUG5kb0ws5TDCRLu+8kBReGwoWlZ2z?= =?us-ascii?Q?v5a0SqC0bFMyIKGjBdFRO3xOkTFJp6W+HbJ7Ey6DCD8N4XMH5rhiV4+Jfo+D?= =?us-ascii?Q?EmF27x44964dhvkPpXjkWy1ewW9C42/6HKI5P9Ik8Z+wAFVvLWsV4/JhQ1a2?= =?us-ascii?Q?5h2SAFew41qQcjzre5Jcs1koC3pbZ2n+wE+w+P+Gudy72n34LCeEPXzAGrVk?= =?us-ascii?Q?cMAOggwVJIg9sHkdhtzksc5gBq9CCA5UhHMLCbG/yjSk0mokZOv9ysHqA5Sf?= =?us-ascii?Q?cAAcp+QuVRHgROe1f5thkulm2a3AJFWCs82hRwyFvdMu1WVZUYLyIk6WWXsN?= =?us-ascii?Q?+cbd0odUdQWO8+PAEWm7oFkY/Byfryu+3KRndjFHoVPHCMGhb9GvPE/HwVOU?= =?us-ascii?Q?BZ2v/1cvyS+fjV0YtNY+m5H/FT/PDl5FBrGchJxnmwGryGjsIScc/mnyYRF6?= =?us-ascii?Q?pz6gg6AmckgQemoHYXbyPDia9dhC42O5MDGJyJRD8TjM+7mZJtT6ZrUjozG7?= =?us-ascii?Q?jpzhPksU64RyYife2CH9rX5uTdUJdx9RiXLy64NqHQlGvIOeXUyflGQjsMRA?= =?us-ascii?Q?1XsD+8Gik9V0lavlQrcw4zrLJtQsGRgqD0OYEVwaTZYWmuWCnrrkksKoGC+Z?= =?us-ascii?Q?ajNuFWNTHo3VvF7f26Bqj9szDWvYH+nzhRDZUIWoAW/Ryic1agfxa/jLF0ZY?= =?us-ascii?Q?51hFutLKVGSxyFTAKW+qdqy/sKAro0vASSb0FxZvHkpIRsrihN1yR808eFNQ?= =?us-ascii?Q?UXXsIkFgl3pCzxthRLgKcBChI95g1mSk/1CcEVo9E9btr7iHbxn2VE/e3470?= =?us-ascii?Q?Cr4lLE08+TgIRSJvfgv9WT8CFX6RIAFEXlobCz4N?= X-Microsoft-Exchange-Diagnostics: 1;DM2PR0301MB1229;3:LVH8UCBgyh/cRgSdnTjqccTCv4mpWZmDlxk9ZdWKpuKGGUNTpeeBR+A1k29vwh8fFvx80c5NVt/6vWsvyqA/pD9zsIQXVElZ0ZPimv7dNMVSCaEf9QjDJgW2NSENj5NSnIKLzb8pQcqefPQJEPPkCw==;10:w5Qlh2PSDYNAvgUWQPWP1k0KFqPhIZYYDNmvSyXxxDBvs0wo6Tuwj8HvRKKUdX5+pHOdv1CCsx/DwbLdlSdyUMY6COpPqxG/E+ZznD4Qdtc=;6:tZ1R/vKO2wfTGVsjoWw5vY6SwPfUv/1DVoi3R1j0gxBZOI+2aqQe1hYZdfsLI4tF X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 May 2015 01:23:34.1233 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d;Ip=[192.88.158.2];Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR0301MB1229 X-Microsoft-Exchange-Diagnostics: 1;DM2PR0301MB0653;2:xNdZZ1fcQSmi5EzPKzmayXLWcG6sLtxQpiJTeIfNm+ZUooQE52dk4BJO3hLHapYx;2:rVYtHoRvAQXFXKcqAlAxzt/lgByHcFmAWgFfFo9U+7DHVucaUTD5I7f1lDEaIyElgC1oA7HafbiGKmMOY3aDU1zrJfo6+fzi/5N6aF1b/UPbtokZdZnS7vjxzyelmy04iYkJlCyQgBAcQurZdU1hxiQDrdPk3Sx84SO6bcJRX4g5jmDJ4brwB9y2fv0YDJZB9568fPyJ+K8LN6yaHXdLKVTiv6p/IH282USbFATj46w=;9:qd6PXPO37SiADd7djfwH96nFLY3tS+3HZBywa+266iuZFw+MGaOGvA4IMn+TOi0HKklb05yDWdoz0fHlqzMymxVqMO8kwLpm5Gk9tKiDdoMXWkMEYWfMvq8s4q31MA0rPhfCeqfPvlq1AfuIhGJEaA== X-OriginatorOrg: freescale.com Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, May 28, 2015 at 05:23:57PM +0300, Roger Quadros wrote: > +Peter & Li, > > Ivan, > > On 28/05/15 11:45, 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? > > This is because the existing EXTCON_USB_HOST and EXTCON_USB do not capture all > the 4 states of ID and VBUS pins that we need for a real USB driver to work. > > It looks like it was designed from user space users perspective where they are > only interested in USB role. i.e. host or peripheral. > > Right now we are mixing both ID/VBUS and HOST/Peripheral states. > This will break when we consider OTG role switching. > With role switching, the USB device might start as a peripheral but switch role to host > on the fly and the existing setup (including these patches) can't cater to that > if user space is relying on EXTCON_USB_HOST/EXTCON_USB events. > Because they are hard-wired to the ID pin state which doesn't change during > role switch without cable switch. > > The USB driver doesn't care about EXTCON_USB_HOST/peripheral states. > It just needs ID/VBUS states and should decide the Host/Peripheral state from > that and other inputs (like HNP/user request/etc). > > The flow could be like this > > (extcon-usb-driver) -> [ID/VBUS states] -> (USB driver) -> [HOST/Peripheral states] Agree. Chanwoo, USB driver knows better than extcon driver about USB role (host/peripheral), so the app should use USB interface to know it, in fact, I don't be aware any use case needs to know USB role? Are there any users for EXTCON_USB and EXTCON_USB_HOST currently? > > If that is not going to happen then we will have to switch to this > > (usb phy driver) -> [ID/VBUS states] -> (USB driver) -> (extcon f/w) -> [Host/Peripheral states] > > > Felipe, Peter, Li, > > what do you guys suggest? > > cheers, > -roger > > > > >> } 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. > > > >Regards, > >Ivan > > -- Best Regards, Peter Chen