From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932096AbbJ0JTj (ORCPT ); Tue, 27 Oct 2015 05:19:39 -0400 Received: from mail-wi0-f170.google.com ([209.85.212.170]:35345 "EHLO mail-wi0-f170.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753763AbbJ0JTf (ORCPT ); Tue, 27 Oct 2015 05:19:35 -0400 Subject: Re: [PATCH v4 5/7] usb: gadget: f_midi: set altsettings only for MIDIStreaming interface To: Robert Baldyga , Robert Baldyga References: <1445878509-12084-1-git-send-email-eu@felipetonello.com> <1445878509-12084-6-git-send-email-eu@felipetonello.com> <562EA969.5000107@hackerion.com> <562F1E0A.30703@samsung.com> Cc: USB list , Kernel development list , Felipe Balbi , Greg Kroah-Hartman , Andrzej Pietrasiewicz , Clemens Ladisch From: Felipe Ferreri Tonello Message-ID: <562F41A3.3070504@felipetonello.com> Date: Tue, 27 Oct 2015 09:19:31 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: <562F1E0A.30703@samsung.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Robert, On 27/10/15 06:47, Robert Baldyga wrote: > On 10/26/2015 11:53 PM, Felipe Tonello wrote: >> Hi Robert, >> >> On Mon, Oct 26, 2015 at 10:30 PM, Robert Baldyga >> wrote: >>> On 10/26/2015 05:55 PM, Felipe F. Tonello wrote: >>>> This avoids duplication of USB requests for OUT endpoint and >>>> re-enabling endpoints. >>>> >>>> Signed-off-by: Felipe F. Tonello >>>> --- >>>> drivers/usb/gadget/function/f_midi.c | 4 ++++ >>>> 1 file changed, 4 insertions(+) >>>> >>>> diff --git a/drivers/usb/gadget/function/f_midi.c b/drivers/usb/gadget/function/f_midi.c >>>> index 0e9cdeb..a617df3 100644 >>>> --- a/drivers/usb/gadget/function/f_midi.c >>>> +++ b/drivers/usb/gadget/function/f_midi.c >>>> @@ -323,6 +323,10 @@ static int f_midi_set_alt(struct usb_function *f, unsigned intf, unsigned alt) >>>> unsigned i; >>>> int err; >>>> >>>> + /* We don't care if it is not MIDIStreaming interface */ >>>> + if (intf != ms_interface_desc.bInterfaceNumber) >>>> + return 0; >>>> + >>> >>> These global descriptors are overwritten in bind() of each instance of >>> f_midi, so you have no guarantee that your bInterfaceNumber is correct >>> for your current instance. Instead you should store value obtained from >>> usb_interface_id() during bind(). >> >> Ok. >> >> But then this interface descriptors shouldn't be global static, >> because they will always reflect the latest bind() only. Right? > > They are copied for each instance of USB function, so they are actually > template to fill and copy in bind(). I'm currently working on some > patches changing a bit behavior of set_alt() to make it clearer, but for > now the only way to distinguish between altsettings properly is to store > bInterfaceNumber value for each function instance in its bind(). Ok. Thanks. -- Felipe