From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S964873AbbBISRN (ORCPT ); Mon, 9 Feb 2015 13:17:13 -0500 Received: from mailout2.w1.samsung.com ([210.118.77.12]:9367 "EHLO mailout2.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933233AbbBISRL (ORCPT ); Mon, 9 Feb 2015 13:17:11 -0500 X-AuditID: cbfec7f5-b7fc86d0000066b7-98-54d8f911d3a2 From: Krzysztof Opasiak To: Krzysztof Opasiak , "'Alan Stern'" , "'Ruslan Bilovol'" , "'Peter Chen'" Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, "'Balbi, Felipe'" , gregkh@linuxfoundation.org, Andrzej Pietrasiewicz References: <100e01d04493$11a2fd40$34e8f7c0$%opasiak@samsung.com> In-reply-to: <100e01d04493$11a2fd40$34e8f7c0$%opasiak@samsung.com> Subject: RE: [PATCH 1/2] usb: gadget: udc-core: independent registration of gadgets and gadget drivers Date: Mon, 09 Feb 2015 19:17:07 +0100 Message-id: <100f01d04494$9dbcd070$d9367150$%opasiak@samsung.com> MIME-version: 1.0 Content-type: text/plain; charset=us-ascii Content-transfer-encoding: 7bit X-Mailer: Microsoft Office Outlook 12.0 Thread-index: AdBEhorgtXa59ivnTkmvPJf6JNMh7gABQxZwAAIEwGA= Content-language: pl X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrGLMWRmVeSWpSXmKPExsVy+t/xK7qCP2+EGDxZqWcx62U7i8XB+/UW zYvXs1ncnjiNzeLyrjlsFouWtTJbHJv9l8miZ+cJRosJvy+wOXB6/Dvcz+Sxc9Zddo/9c9ew e8y++4PRo2/LKkaP4ze2M3l83iQXwB7FZZOSmpNZllqkb5fAlTH57lyWgolSFbMOtTM1MM4Q 6WLk5JAQMJE4saOXHcIWk7hwbz1bFyMXh5DAUkaJHfsmMkM4DUwS05pOM3YxcnCwCehLzNsl ChIXEdjMKHF6wwVWEIdZYA2jxOs366A6zjFKfGvbxwgyl1PASeLVlGssILawQIZEd/8nJhCb RUBVYsG2dWBxXgFHiXe7X0LZghI/Jt8Ds5kFtCTW7zzOBGHLS2xe85YZ5AoJAXWJR391QcIi AlYSH/bfYYYoEZG42/CcdQKj0Cwkk2YhmTQLyaRZSFoWMLKsYhRNLU0uKE5KzzXSK07MLS7N S9dLzs/dxAiJq687GJceszrEKMDBqMTDe+HKjRAh1sSy4srcQ4wSHMxKIrw/zgCFeFMSK6tS i/Lji0pzUosPMTJxcEo1MJ4IPjxzQs025rxfV6qufTh59lbRl4v/+lQ+OE4Vs0lgzEizbT/9 q63KpOvSRLuDU2VquD6/lRcwOnrYXtHx7KV9C8MCG6ac2DzlQnPxdFGW7EvbjWfm6cyMzP16 d6nxo6MxP/x2++keW77jyI3SMz85t57+sOq5RIFjRqjtJOPqnxeiVknd3qOvxFKckWioxVxU nAgATD2N9IkCAAA= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > -----Original Message----- > From: linux-usb-owner@vger.kernel.org [mailto:linux-usb- > owner@vger.kernel.org] On Behalf Of Krzysztof Opasiak > Sent: Monday, February 09, 2015 7:06 PM > To: 'Alan Stern'; 'Ruslan Bilovol'; 'Peter Chen' > Cc: linux-usb@vger.kernel.org; linux-kernel@vger.kernel.org; > 'Balbi, Felipe'; gregkh@linuxfoundation.org; Andrzej Pietrasiewicz > Subject: RE: [PATCH 1/2] usb: gadget: udc-core: independent > registration of gadgets and gadget drivers > > Hi, > > (... snip ...) > > > > > > > You don't need all this stuff. What's the point of keeping > > track of > > > > names? If there are any unbound gadget drivers pending, a > > newly > > > > registered UDC should bind to the first one available. > > > > > > It's because gadget driver may be bound to usb_gadget in two > > ways: > > > - standard way - in this case any available udc will be picked > > up > > > - by name of udc, in this case only matching udc will be > picked > > up > > > > Where did this "by name" feature come from? You did not mention > it > > in > > the patch description. > > > > Why bother matching by name? Why not simply take the first > > available > > UDC? > > Because you may have more than one udc. This would allow to pick > one by > name just like using configfs interface. > > > > > > Main feature of my path is not only deferred binding of gadget > > driver, > > > but also possibility to register/unregister udc at any time. > > > This is useful for user who can load, for example, udc module > > > if needed and unload it safely, not touching gadget driver. > > > > We can already do that with the existing code. There's no need > for > > a > > patch. > > > > Also, it's not clear that the existing gadget drivers will work > > properly if they are unbound from one UDC and then bound again to > > another one. They were not written with that sort of thing in > > mind. > > > > What you have described is one of basics configfs features. > You should be able to bind and unbind your gadget whenever you want > and it should work properly after doing: > > ## create gadget > $ echo "udc.0" > UDC > $ echo "" > UDC > $ echo "udc.1" > UDC > > Function shouldn't care which udc it has been bound previously. > Only current one is important and on each unbind each function > should cleanup its state and prepare to be bound to another udc. > Configfs interface doesn't prohibit this and I haven't seen any > info about such restriction. If some function is not working in > such situation there is a bug in that function and it should be > fixed. > > I have tried to test this on my odroid with dwc2 and dummy_hcd. > Most of functions seems to be working but for example ecm isn't. ^ above is ok > After some digging with Robert we found that it's always reusing > endpoints received in first bind(). Fixup: That's bullshit ignore it please. ecm_opts->bound is not used to take endpoints but only to register net device. Went too far after short reading. All in all, ecm is not working when binding form one udc to another. Don't know exact reason, but in my opinion it's more a bug than common assumption. -- Krzysztof Opasiak Samsung R&D Institute Poland Samsung Electronics k.opasiak@samsung.com