From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751687AbbJTG3Y (ORCPT ); Tue, 20 Oct 2015 02:29:24 -0400 Received: from mail-bl2on0139.outbound.protection.outlook.com ([65.55.169.139]:11072 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750796AbbJTG3W (ORCPT ); Tue, 20 Oct 2015 02:29:22 -0400 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=freescale.com; vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=freescale.com; Date: Tue, 20 Oct 2015 14:28:12 +0800 From: Peter Chen To: Jiada Wang CC: , , Subject: Re: [PATCH] usb: chipidea: udc: clear vbus_active flag in udc_stop Message-ID: <20151020062811.GA7203@shlinux2> References: <1445308158-23100-1-git-send-email-jiada_wang@mentor.com> <20151020060107.GA27364@shlinux2> <5625DA7E.8000601@mentor.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <5625DA7E.8000601@mentor.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11FD003;1:ZtCvyDCo9ANt/ma/a4C0sy2fyRPo9o24Fd/d7fD66RCoG1OMSBTI2RpZnwbKcnAKjrsmfdUYxVgO9dojBGTI9Ay3YurfsPmKHBOQZL4fnxQ269CrpGiKve5gzVkUcsgc4WfVgXbEGE+GDWBnWeWgVMzTOM3ZSPSHZviwSl8x6+bP21KAYsDt284s7DefIjjcEisCxXScDVnD9KpmpZZti+oxhhvOT19TYCp3vS6EdvkY2h7L8oe1NlcBPPnBMsFAepE9w+fN0d8it3nvAWmgImmiBoryFM+UAvOF3u8wKzsNlTCg6NOiFjt3knuZLwiXwJ71Zgn8ziZ3UUeYQ/sAYbD4e1aih7zH2x8TYbTdHFUw08emJxhc3MV39zD9ksAt X-Forefront-Antispam-Report: CIP:192.88.168.50;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(1109001)(1110001)(339900001)(24454002)(189002)(479174004)(377454003)(199003)(83506001)(6806005)(47776003)(19580395003)(46406003)(23726002)(4001350100001)(81156007)(86362001)(50466002)(97756001)(54356999)(50986999)(33656002)(85426001)(64706001)(76176999)(46102003)(19580405001)(106466001)(5007970100001)(77096005)(5008740100001)(2950100001)(92566002)(104016004)(105606002)(33716001)(189998001)(97736004)(87936001)(110136002)(5001960100002);DIR:OUT;SFP:1102;SCL:1;SRVR:BLUPR03MB488;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB488;2:rTRxd4i2GfuddGdR5xHIu6W+lvhI3gvaq121LwnAnfiFixoSIsWFt8x5S8SDWhWQrQO9Gn888eVJpqVlBb8Ze7m7n//WuPDAO0T5u2Abu8/t/qqfvzRc4MHJ3QO0MctPpotqDBVJj3mdgqhnVXgWGnRPUaUvx9SGRSUNZSuiGR8=;3:M8J0Wxv8I8YaZLu9MihpQv1ARKltLgWsZwF64eIeIWa7MJ9UkRnhHZYKsK56KIEqOZQo7of0Na4wKO1U8ccqidx4n3DkcsuGrzPzdjt20g8pnC+SEXWa7ieifu5MkSXcCXJ2Gu+swE9LHnRdT+nm/EoRZYjfjPKVZojKCtbzA9uOHWhaQ8eZ5StKEijtpghMJA4Q681GM64B2z86tX1e0tuhTOGixJmUqVHs0XI/MV4=;25:B5Hww0HcTcIVW0ZcPcwSNLeqUiO4oCpWziH0z4kf7Dlh+k12489m//EmZcBKGImq6t3aGlUWXhwFS2HopNuvaSUQaPYqozXNn4zblveGwPqpJfAXQWrBQCdkKMRhaVdH3poTXz2YalmZsJqeZGchKLdNwnIgCwdIDxgQguYkUp+EL5lY6l4GzVivMYvp9YvVxJlFpnTzPorLAIwYQMu30vweYgFXD+dP7s55qfjfonV52+6ZJ4v4HPFAXwFrMm4T1NhmsxDqNGBxmHQj3XBQHw== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB488; X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB488;20:2e7LrDXtUpyp8BTgT7oPFwwj8gY/CRRNK4t3THKhtRNUcrDf+RwBPcDML0MsDYFE6hdZUf+IdtTMvkO6F8m8bFSUvdNIoFlJ0YGLR6nNON4Vd8W9Pa348FJq2Hu3A6AI1QpYTxSZR+DHs5mSSCEaXlyWNTlcr/Q+WNfaBvns0eC1+wAm8pl3dlCDKkXkrHAO6fNMqZUIpWo4hakE3OKoz5O71IcguPdbJT6DtDMwKm5AKnViQpnDVialFFxUI5093Vfp2V3QSnQP6DKbBJsI7lEQaej73uVmkqpu4guL1s5TJtcAA/Y590xP2zW7bDKtVWh/BgYk/iASKX6Rt/MQ4RlCz64jb+nJsfefRdvtQWk=;4:nr7VXgxUEmEx35vnyqEl1ZJNkYZNQGrRrg5kEV3HFn//iGJbSRpAzo2b3D/vovBdhjJRRrOjibFyoWYLx19sS9WXKiHMbeYI8YEMcXv6/6NjBu4XRxpGYJ7c2d7XhLja+nro3jmEKsf+kL8MA195k20AYTvQ7dsxUSMvfEiDzMBnoJsE1tE9p249Lnc255R1ySkrUQIxnN0ckTgkgg8mRFM6zQC/NLeeTjRPXggJBsxPSx/em6oTcZ/QbzijUW12LahgkRy4zXOXrHWArWb8humE96pwe6lYvCJRaYUAMSLw+K32n+KvRrKZ/WK9YVhQ6wQ/M3jfRqrQULbfM8dZu7znWxyinNF7zSSJFR6StmQ= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(101931422205132); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(520078)(5005006)(8121501046)(3002001);SRVR:BLUPR03MB488;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB488; X-Forefront-PRVS: 073515755F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BLUPR03MB488;23:KNzx+wC8Ubxz5M5oGNeEhQ4EJV32LbCuWP3TvHANPg?= =?us-ascii?Q?7bN+hWY5Bh6pYNhdo/FojsKTx96hw5PlO7YX6sObSieFYHT/PEEx8aKMOmP1?= =?us-ascii?Q?W8zFZ5aj6rvnoWRs4HqB7rLICikC5Y9EFY7l9YgCKwgCzgEIkHS7FkMjG788?= =?us-ascii?Q?/ypaIGI8mV26BKtS0lv0pYdrlCOQdQfvEQvZW/S3fg4qj/+k1tWSZp2wDrnJ?= =?us-ascii?Q?anTxCEDtWK28GuqQMNMFlDYdk1CSFQmNFusmtQQdxnW+le7Zv38ZSkH0JLEK?= =?us-ascii?Q?XphQHqnOd839io2SzuH1Ml311bIRQNqrWgf/fwovOKAHbGO2Gpm9/5btCLB9?= =?us-ascii?Q?z+wqNg2xgFy+GovIGX4KBe9YePrxBrvyoczVZcjzSkUybSkr8JV+ecKptErx?= =?us-ascii?Q?xzwclpCf0bqnlYlq1L1ZdKCAUTL9KX8LHiN9wOSJuUsUbIRjpGtCF0/4EosP?= =?us-ascii?Q?ZQohIW9jmyxD2lnL6/5YO4bmje32PeBSw1ekqnsphqqveJyK1X/13GbH+x16?= =?us-ascii?Q?0y9i6ZW7s7xmwfcmWbL8kZxYeQU1cnYwxUMztmttrO5OP8uIJzs96HUk3JpJ?= =?us-ascii?Q?4KflH+Rz0ms4ieHxXvM6VSfyl+NfRnYDwfacf868tQJT6dxAa6o2AcDxH713?= =?us-ascii?Q?e7f+ICyhlOh4chp+qVhgp2xQC4ZSthYAp42ZMlZfAj/YAHEjcnpOs/dYfOwh?= =?us-ascii?Q?MFHSen07umZzWQcNP9PUCgxDapW5dS+YBUWe8LfscPSDGS8vUpnqwGfhqkE2?= =?us-ascii?Q?6p1NXQFLgwM8c8XaSklHxTJSdq3TMr5M7lc9gNvgXsMHu9E1+sKbFIwRUaza?= =?us-ascii?Q?GU2jKA6bLz1ZHDIDCACcQ9UQFYqafI8zcX19j48CPPY5RcYXjqCX0N98rGcz?= =?us-ascii?Q?7VSaKLLXm34YdopevcV3OHITTxNfBDjyu4JOiPVgta/yjSffmJwYPmItZCKq?= =?us-ascii?Q?xnSyQQ3Xr7sO9raMG91mPBfY1Z65LZncnzQi2n+w53j/Sfgv5tpoxXqqRXqw?= =?us-ascii?Q?mGTiMQ/Kt7+TE4BgNPiYyv2wPTRbVuhzKDmiehRsysbhU2I3I8yqF4oeGtQL?= =?us-ascii?Q?RsW6qxnRhwkvuYrqZ00WHhBOO8Sgn/r+TK/Hie+atjiZ2MGCDaNo1a/V3i4s?= =?us-ascii?Q?OoLCrWrIsLfkLgEy+i/CGlHiCeURuy?= X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB488;5:p4bXk9U0OX8s+rvYl0SYL9dKDT/Ac917kWPCGAa6PaV8W0bjqqLNjiow1XcIazAKJ6K77kaS3hUc7YflvKgvJzMVpzwRYnXiwkew3zVuG27OZV4M/vwdm1iJawZVkgFxF/USmiFGkcBEEm+GBcAGrA==;24:S5TteTwkEC7jFxpywfv9pfBmAAVhSxoLu53W+wuWxjO/FFS4wqrESMnKHK9zEIWUOoJizgJvay+qf42T8RS6k+LKl5pqWpilU3fJjKloD/Y=;20:CBYMdYsD/p21AMNRGRnTC0yHkUN2/4KgwQXfBJrkZaASWCKaOBGkPtOAQk2BKkO8NBjNOI7MuET8kp0PuF99iQ== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2015 06:29:19.9505 (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.168.50];Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR03MB488 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Oct 20, 2015 at 03:09:02PM +0900, Jiada Wang wrote: > Hi > > On 10/20/2015 03:01 PM, Peter Chen wrote: > >On Tue, Oct 20, 2015 at 11:29:18AM +0900, Jiada Wang wrote: > >>Currently in udc_stop, if vbus_active flag is true, all USB activities > >>will be stopped, but vbus_active flag is still left to be true, > >>this causes issue, when afterwards driver tries to connect gadget > >>device to host, But due to the uncleared vbus_active, some necessary > >>setup steps are skipped. > >> > >>This patch clears vbus_active flag in udc_stop callback. > >> > >>Signed-off-by: Jiada Wang > >>--- > >> drivers/usb/chipidea/udc.c | 1 + > >> 1 file changed, 1 insertion(+) > >> > >>diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c > >>index 8223fe7..b9ac228 100644 > >>--- a/drivers/usb/chipidea/udc.c > >>+++ b/drivers/usb/chipidea/udc.c > >>@@ -1762,6 +1762,7 @@ static int ci_udc_stop(struct usb_gadget *gadget) > >> spin_lock_irqsave(&ci->lock, flags); > >> > >> if (ci->vbus_active) { > >>+ ci->vbus_active = 0; > >> hw_device_state(ci, 0); > >> if (ci->platdata->notify_event) > >> ci->platdata->notify_event(ci, > >>-- > >>2.4.5 > >> > > > >This flag will be handled by vbus interrupt, would you please explain > >more what problem you have met? > the actual issue I had is, > build kernel with USB_OTG_FSM enabled, > keep usb cable plugged, > load/unload USB gadget module (for example I tried g_zero or g_serial), > after unload gadget module once, then the status of vbus_active is not > correct, > this causes host machine failed to detect gadget device when later > gadget device module is loaded again. > > ci->vbus_active is only used at non-fsm mode, would you please try below fix? usb: chipidea: otg: gadget module load and unload support This patch is to support load and unload gadget driver in full OTG mode. Acked-by: Peter Chen Signed-off-by: Li Jun --- drivers/usb/chipidea/udc.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c index e19d8b8..67cfa04 100644 --- a/drivers/usb/chipidea/udc.c +++ b/drivers/usb/chipidea/udc.c @@ -1755,6 +1755,22 @@ static int ci_udc_start(struct usb_gadget *gadget, return retval; } +static void ci_udc_stop_for_otg_fsm(struct ci_hdrc *ci) +{ + if (!ci_otg_is_fsm_mode(ci)) + return; + + mutex_lock(&ci->fsm.lock); + if (ci->fsm.otg->state == OTG_STATE_A_PERIPHERAL) { + ci->fsm.a_bidl_adis_tmout = 1; + ci_hdrc_otg_fsm_start(ci); + } else if (ci->fsm.otg->state == OTG_STATE_B_PERIPHERAL) { + ci->fsm.protocol = PROTO_UNDEF; + ci->fsm.otg->state = OTG_STATE_UNDEFINED; + } + mutex_unlock(&ci->fsm.lock); +} + /** * ci_udc_stop: unregister a gadget driver */ @@ -1779,6 +1795,7 @@ static int ci_udc_stop(struct usb_gadget *gadget) ci->driver = NULL; spin_unlock_irqrestore(&ci->lock, flags); + ci_udc_stop_for_otg_fsm(ci); return 0; } -- 1.9.1 -- Best Regards, Peter Chen