Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752561AbcD1GsV (ORCPT ); Thu, 28 Apr 2016 02:48:21 -0400 Received: from mga04.intel.com ([192.55.52.120]:39206 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752188AbcD1GsU (ORCPT ); Thu, 28 Apr 2016 02:48:20 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.24,545,1455004800"; d="asc'?scan'208";a="968181375" From: Felipe Balbi To: "Du\, Changbin" Cc: "gregkh\@linuxfoundation.org" , "linux-usb\@vger.kernel.org" , "linux-kernel\@vger.kernel.org" Subject: RE: [PATCH] usb: dwc3: usb/dwc3: fake dissconnect event when turn off pullup In-Reply-To: <0C18FE92A7765D4EB9EE5D38D86A563A05D1E1A7@SHSMSX103.ccr.corp.intel.com> References: <1461745745-3954-1-git-send-email-changbin.du@intel.com> <87wpnjmm7u.fsf@intel.com> <0C18FE92A7765D4EB9EE5D38D86A563A05D1E1A7@SHSMSX103.ccr.corp.intel.com> User-Agent: Notmuch/0.21+96~g9bbc54b (http://notmuchmail.org) Emacs/25.0.90.3 (x86_64-pc-linux-gnu) Date: Thu, 28 Apr 2016 09:46:15 +0300 Message-ID: <87vb32kz7s.fsf@intel.com> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha1; protocol="application/pgp-signature" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2417 Lines: 65 --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, (we don't top-post on this forum ;-) "Du, Changbin" writes: > Hi, Balbi, > > The step to reproduce this issue is: > 1) connect device to a host and wait its enumeration. > 2) trigger software disconnect by calling function > usb_gadget_disconnect(), which finally call > dwc3_gadget_pullup(false). Do not reconnect device > (I mean no enumeration go on, keep bit Run/Stop 0.). > > At here, gadget driver's disconnect callback should be > Called, right? We has been disconnected. But no, as > You said " not generating disconnect IRQ after you > drop Run/Stop is expected". > > And I am testing on an Android device, Android only > use dwc3_gadget_pullup(false) to issue a soft disconnection. > This confused user that the UI still show usb as connected > State, caused by missing a disconnect event. okay, so I know what this is. This is caused by Android gadget itself not notifying the gadget that a disconnect has happened. Just look at udc-core's soft_connect implementation for the sysfs interface, and you'll see what I mean. This should be fixed at Android gadget itself. The only thing we could do is introduce a new usb_gadget_soft_connect()/disconnect() to wrap the logic so it's easier for Android gadget to use; but even that I'm a little bit reluctant to do because Android should be using our soft_connect interface instead of reimplementing it (wrongly) by its own. =2D-=20 balbi --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAEBAgAGBQJXIbG4AAoJEIaOsuA1yqRE/tgP/3tUc8W7OCx5rwfQ73g58Tv8 tokg67tZTr2U4g04wYzWS14CD8SygO/pdLtg05I16dXyTbpvf65oe7JDqrmi73mS tyyruHNhm2Ycvuzluu2UPiAcuSGzSPrzvupWC+1Ogvt4wW+Xs0GUYqwaG+nMsl3R hzXldsF8N58MSs5FiSEvEZVLnywNYrTs/kCU5ECGiZl+z3pV0lnpewybRa0RPg25 hnvWRrXGNXz+uqtZFZYhDBj+YpU9OUXmTWBUrpo2JshWrq+HYK+LkcFfcFczRkN3 lNvvPlPoIC2Fn5oef1GV68rLjk6QGuIkGawDDZelbHi83Z7AtK5kki29tl8/6nUS mz2muSNqgx582vQKKzb6AYL4weDRlb11otvseKmedCUmLlW0o71fn7xUd/BIcZqu f03DZNBHdUKoWeTu6vLN7fevgDmhOmGzMnefFiQKH+3m1ZwYbPtzlfHS8pJkTCwI 4eMKVecMrKyXXLi8bI/ZKrq3/s8vtQJpFHLBLpZsNriH+w3ZiTp1b2V4X7VVxPnQ sErnb9ERkOx+tIOncEYt6OsF1thu1m7K4RfpkyMnFt0WFzzgFjm0vfutmLhaMKhw iAgbiJ3WZehciW1VHkRrTSoWEU5U/GtFtoTCQfBOFglPVDC8eUqGkxkzWhfOfVjj z0FT+HSZ2aPS/2O3TktA =l1hV -----END PGP SIGNATURE----- --=-=-=--