From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 809BCC65BAE for ; Fri, 14 Dec 2018 01:34:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3DC702075B for ; Fri, 14 Dec 2018 01:34:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="He88ijGh" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3DC702075B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729121AbeLNBef (ORCPT ); Thu, 13 Dec 2018 20:34:35 -0500 Received: from mail-it1-f193.google.com ([209.85.166.193]:36380 "EHLO mail-it1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727654AbeLNBee (ORCPT ); Thu, 13 Dec 2018 20:34:34 -0500 Received: by mail-it1-f193.google.com with SMTP id c9so7064275itj.1; Thu, 13 Dec 2018 17:34:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=S8rmiMd94574Ryr5fqpe0AjQ+3eIiRjc9sdUxU2AJ4M=; b=He88ijGhz+a8RgLEVPFs9hN1pRfvaPCcLTttnqZyG5bpko+FxEwXO2ktGvCuT6Mc+9 uihQ6kCkBqksPjAxVyxvtOAvjIhhXbQ/aGIED+ZzxoI9bHGbQisyOIahSx09RfOCURFS DX39odli1IzMkcQYIZC3tb693/RB0ltS1Lknt8b1ieWQDR0+93pe7sOYpU9uOlZSuRKW s41dUJBAYeUFKbF4iV8jJCUIU4qkmKqs647VFr/AnheK9aCLWWGFq/qfV721U7AFZb49 xgIsNCm/LWu1w46kPJ0AzlPhsotAf0eOw+MaDLZkM7ppq/8n29i8B8cGL/06Lin9IvUV MnxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=S8rmiMd94574Ryr5fqpe0AjQ+3eIiRjc9sdUxU2AJ4M=; b=eH0uAfC3jF3a58QVdduZqA8w5jtqYH8vW42//aqvWAOjmn9ZmuiERRt2Gi495Ax0iD QYkO1Vkma/BPcGNAg/RZmSbHYnwBd68AAkdbUKB2Tgs0lqtdE/MV9+vKQqpYFnkqpG1a VhBSFM0AQyPgA5g1GGPlq7Z+spmeiCdW/xm79Wi5KWazw5i3uWRK+yqa0TA5+lT64ZuW V5fiDuYtuw/toNicNj1qstOoCzZ5MrwT6WqaFkbolxse8Ig1dZFrCyYSgOx587YRIEn2 G48sEbx+StVmyOym+oOhrkv0W9fvaUv7FgyMxXN+n3bvIp8Z2nqK8KPAr9A7wzGDRvmY uxSw== X-Gm-Message-State: AA+aEWbn5b96eGgvW4RIz4zdLggn5BrV52pGAv9Hid3cJzFJgaiDN3Xx pX3u3PLDC91tNJvmhW4ZOeVICiic129YrYT534E= X-Google-Smtp-Source: AFSGD/WO+LIqIa5LzKNUv1a4tT8N2FPXrvvuH6gPeWbUFGKhZAANHB9Kt3ph93vdRxPz0Un1zhNb6D31mxWjJ8/z1bQ= X-Received: by 2002:a24:c601:: with SMTP id j1mr1711528itg.130.1544751273593; Thu, 13 Dec 2018 17:34:33 -0800 (PST) MIME-Version: 1.0 References: <1542535751-16079-1-git-send-email-pawell@cadence.com> <1542535751-16079-9-git-send-email-pawell@cadence.com> <5BFE8883.7090802@ti.com> <6b19b55c-66d7-439e-df8f-7b311b45af5e@ti.com> In-Reply-To: From: Peter Chen Date: Fri, 14 Dec 2018 09:34:21 +0800 Message-ID: Subject: Re: [RFC PATCH v2 08/15] usb:cdns3: Implements device operations part of the API To: pawell@cadence.com Cc: nsekhar@ti.com, rogerq@ti.com, devicetree@vger.kernel.org, Greg Kroah-Hartman , linux-usb@vger.kernel.org, lkml , adouglas@cadence.com, jbergsagel@ti.com, nm@ti.com, sureshp@cadence.com, peter.chen@nxp.com, pjez@cadence.com, kurahul@cadence.com, balbi@kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Dec 12, 2018 at 3:49 AM Pawel Laszczak wrote: > > Hi, > > >On 10/12/18 7:42 AM, Peter Chen wrote: > >>>> +static struct usb_ep *cdns3_gadget_match_ep(struct usb_gadget *gadg= et, > >>>> + struct usb_endpoint_descri= ptor *desc, > >>>> + struct usb_ss_ep_comp_desc= riptor *comp_desc) > >>>> +{ > >>>> + struct cdns3_device *priv_dev =3D gadget_to_cdns3_device(gadge= t); > >>>> + struct cdns3_endpoint *priv_ep; > >>>> + unsigned long flags; > >>>> + > >>>> + priv_ep =3D cdns3_find_available_ss_ep(priv_dev, desc); > >>>> + if (IS_ERR(priv_ep)) { > >>>> + dev_err(&priv_dev->dev, "no available ep\n"); > >>>> + return NULL; > >>>> + } > >>>> + > >>>> + dev_dbg(&priv_dev->dev, "match endpoint: %s\n", priv_ep->name)= ; > >>>> + > >>>> + spin_lock_irqsave(&priv_dev->lock, flags); > >>>> + priv_ep->endpoint.desc =3D desc; > >>>> + priv_ep->dir =3D usb_endpoint_dir_in(desc) ? USB_DIR_IN : USB= _DIR_OUT; > >>>> + priv_ep->type =3D usb_endpoint_type(desc); > >>>> + > >>>> + list_add_tail(&priv_ep->ep_match_pending_list, > >>>> + &priv_dev->ep_match_list); > >>>> + spin_unlock_irqrestore(&priv_dev->lock, flags); > >>>> + return &priv_ep->endpoint; > >>>> +} > >>> Why do you need a custom match_ep? > >>> doesn't usb_ep_autoconfig suffice? > >>> > >>> You can check if EP is claimed or not by checking the ep->claimed fla= g. > >>> > >> It is a special requirement for this IP, the EP type and MaxPacketSize > >> changing can't be done at runtime, eg, at ep->enable. See below commit > >> for detail. > >> > >> usb: cdns3: gadget: configure all endpoints before set configurati= on > >> > >> Cadence IP has one limitation that all endpoints must be configure= d > >> (Type & MaxPacketSize) before setting configuration through hardwa= re > >> register, it means we can't change endpoints configuration after > >> set_configuration. > >> > >> In this patch, we add non-control endpoint through usb_ss->ep_matc= h_list, > >> which is added when the gadget driver uses usb_ep_autoconfig to co= nfigure > >> specific endpoint; When the udc driver receives set_configurion re= quest, > >> it goes through usb_ss->ep_match_list, and configure all endpoints > >> accordingly. > >> > >> At usb_ep_ops.enable/disable, we only enable and disable endpoint = through > >> ep_cfg register which can be changed after set_configuration, and = do > >> some software operation accordingly. > > > >All this should be part of comments in code along with information about > >controller versions which suffer from the errata. > > > >Is there a version of controller available which does not have the > >defect? Is there a future plan to fix this? > > > >If any of that is yes, you probably want to handle this with runtime > >detection of version (like done with DWC3_REVISION_XXX macros). > >Sometimes the hardware-read versions themselves are incorrect, so its > >better to introduce a version specific compatible too like > >"cdns,usb-1.0.0" (as hinted to by Rob Herring as well). > > > > custom match_ep is used and works with all versions of the gen1 > controller. Future (gen2) releases of the controller won=E2=80=99t have s= uch > limitation but there is no plan to change current (gen1) functionality > of the controller. > > I will add comment before cdns3_gadget_match_ep function. > Also I will change cdns,usb3 to cdns,usb3-1.0.0 and add additional > cdns,usb3-1.0.1 compatible. > > cdns,usb3-1.0.1 will be for current version of controller which I use. > cdns,usb3-1.0.0 will be for older version - Peter Chan platform. > I now that I have some changes in controller, and one of them require > some changes in DRD driver. It will be safer to add two separate > version in compatibles. > Pawel, could we have correct register to show controller version? It is better we could version judgement at runtime instead of static compatible. Peter From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [RFC,v2,08/15] usb:cdns3: Implements device operations part of the API From: Peter Chen Message-Id: Date: Fri, 14 Dec 2018 09:34:21 +0800 To: pawell@cadence.com Cc: nsekhar@ti.com, rogerq@ti.com, devicetree@vger.kernel.org, Greg Kroah-Hartman , linux-usb@vger.kernel.org, lkml , adouglas@cadence.com, jbergsagel@ti.com, nm@ti.com, sureshp@cadence.com, peter.chen@nxp.com, pjez@cadence.com, kurahul@cadence.com, balbi@kernel.org List-ID: T24gV2VkLCBEZWMgMTIsIDIwMTggYXQgMzo0OSBBTSBQYXdlbCBMYXN6Y3phayA8cGF3ZWxsQGNh ZGVuY2UuY29tPiB3cm90ZToKPgo+IEhpLAo+Cj4gPk9uIDEwLzEyLzE4IDc6NDIgQU0sIFBldGVy IENoZW4gd3JvdGU6Cj4gPj4+PiArc3RhdGljIHN0cnVjdCB1c2JfZXAgKmNkbnMzX2dhZGdldF9t YXRjaF9lcChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LAo+ID4+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9y ICpkZXNjLAo+ID4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHVzYl9zc19lcF9jb21wX2Rlc2NyaXB0b3IgKmNvbXBfZGVzYykKPiA+Pj4+ICt7Cj4g Pj4+PiArICAgICBzdHJ1Y3QgY2RuczNfZGV2aWNlICpwcml2X2RldiA9IGdhZGdldF90b19jZG5z M19kZXZpY2UoZ2FkZ2V0KTsKPiA+Pj4+ICsgICAgIHN0cnVjdCBjZG5zM19lbmRwb2ludCAqcHJp dl9lcDsKPiA+Pj4+ICsgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gPj4+PiArCj4gPj4+PiAr ICAgICBwcml2X2VwID0gY2RuczNfZmluZF9hdmFpbGFibGVfc3NfZXAocHJpdl9kZXYsIGRlc2Mp Owo+ID4+Pj4gKyAgICAgaWYgKElTX0VSUihwcml2X2VwKSkgewo+ID4+Pj4gKyAgICAgICAgICAg ICBkZXZfZXJyKCZwcml2X2Rldi0+ZGV2LCAibm8gYXZhaWxhYmxlIGVwXG4iKTsKPiA+Pj4+ICsg ICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cj4gPj4+PiArICAgICB9Cj4gPj4+PiArCj4gPj4+PiAr ICAgICBkZXZfZGJnKCZwcml2X2Rldi0+ZGV2LCAibWF0Y2ggZW5kcG9pbnQ6ICVzXG4iLCBwcml2 X2VwLT5uYW1lKTsKPiA+Pj4+ICsKPiA+Pj4+ICsgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZwcml2 X2Rldi0+bG9jaywgZmxhZ3MpOwo+ID4+Pj4gKyAgICAgcHJpdl9lcC0+ZW5kcG9pbnQuZGVzYyA9 IGRlc2M7Cj4gPj4+PiArICAgICBwcml2X2VwLT5kaXIgID0gdXNiX2VuZHBvaW50X2Rpcl9pbihk ZXNjKSA/IFVTQl9ESVJfSU4gOiBVU0JfRElSX09VVDsKPiA+Pj4+ICsgICAgIHByaXZfZXAtPnR5 cGUgPSB1c2JfZW5kcG9pbnRfdHlwZShkZXNjKTsKPiA+Pj4+ICsKPiA+Pj4+ICsgICAgIGxpc3Rf YWRkX3RhaWwoJnByaXZfZXAtPmVwX21hdGNoX3BlbmRpbmdfbGlzdCwKPiA+Pj4+ICsgICAgICAg ICAgICAgICAgICAgJnByaXZfZGV2LT5lcF9tYXRjaF9saXN0KTsKPiA+Pj4+ICsgICAgIHNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJnByaXZfZGV2LT5sb2NrLCBmbGFncyk7Cj4gPj4+PiArICAgICBy ZXR1cm4gJnByaXZfZXAtPmVuZHBvaW50Owo+ID4+Pj4gK30KPiA+Pj4gV2h5IGRvIHlvdSBuZWVk IGEgY3VzdG9tIG1hdGNoX2VwPwo+ID4+PiBkb2Vzbid0IHVzYl9lcF9hdXRvY29uZmlnIHN1ZmZp Y2U/Cj4gPj4+Cj4gPj4+IFlvdSBjYW4gY2hlY2sgaWYgRVAgaXMgY2xhaW1lZCBvciBub3QgYnkg Y2hlY2tpbmcgdGhlIGVwLT5jbGFpbWVkIGZsYWcuCj4gPj4+Cj4gPj4gSXQgaXMgYSBzcGVjaWFs IHJlcXVpcmVtZW50IGZvciB0aGlzIElQLCB0aGUgRVAgdHlwZSBhbmQgTWF4UGFja2V0U2l6ZQo+ ID4+IGNoYW5naW5nIGNhbid0IGJlIGRvbmUgYXQgcnVudGltZSwgZWcsIGF0IGVwLT5lbmFibGUu IFNlZSBiZWxvdyBjb21taXQKPiA+PiBmb3IgZGV0YWlsLgo+ID4+Cj4gPj4gICAgIHVzYjogY2Ru czM6IGdhZGdldDogY29uZmlndXJlIGFsbCBlbmRwb2ludHMgYmVmb3JlIHNldCBjb25maWd1cmF0 aW9uCj4gPj4KPiA+PiAgICAgQ2FkZW5jZSBJUCBoYXMgb25lIGxpbWl0YXRpb24gdGhhdCBhbGwg ZW5kcG9pbnRzIG11c3QgYmUgY29uZmlndXJlZAo+ID4+ICAgICAoVHlwZSAmIE1heFBhY2tldFNp emUpIGJlZm9yZSBzZXR0aW5nIGNvbmZpZ3VyYXRpb24gdGhyb3VnaCBoYXJkd2FyZQo+ID4+ICAg ICByZWdpc3RlciwgaXQgbWVhbnMgd2UgY2FuJ3QgY2hhbmdlIGVuZHBvaW50cyBjb25maWd1cmF0 aW9uIGFmdGVyCj4gPj4gICAgIHNldF9jb25maWd1cmF0aW9uLgo+ID4+Cj4gPj4gICAgIEluIHRo aXMgcGF0Y2gsIHdlIGFkZCBub24tY29udHJvbCBlbmRwb2ludCB0aHJvdWdoIHVzYl9zcy0+ZXBf bWF0Y2hfbGlzdCwKPiA+PiAgICAgd2hpY2ggaXMgYWRkZWQgd2hlbiB0aGUgZ2FkZ2V0IGRyaXZl ciB1c2VzIHVzYl9lcF9hdXRvY29uZmlnIHRvIGNvbmZpZ3VyZQo+ID4+ICAgICBzcGVjaWZpYyBl bmRwb2ludDsgV2hlbiB0aGUgdWRjIGRyaXZlciByZWNlaXZlcyBzZXRfY29uZmlndXJpb24gcmVx dWVzdCwKPiA+PiAgICAgaXQgZ29lcyB0aHJvdWdoIHVzYl9zcy0+ZXBfbWF0Y2hfbGlzdCwgYW5k IGNvbmZpZ3VyZSBhbGwgZW5kcG9pbnRzCj4gPj4gICAgIGFjY29yZGluZ2x5Lgo+ID4+Cj4gPj4g ICAgIEF0IHVzYl9lcF9vcHMuZW5hYmxlL2Rpc2FibGUsIHdlIG9ubHkgZW5hYmxlIGFuZCBkaXNh YmxlIGVuZHBvaW50IHRocm91Z2gKPiA+PiAgICAgZXBfY2ZnIHJlZ2lzdGVyIHdoaWNoIGNhbiBi ZSBjaGFuZ2VkIGFmdGVyIHNldF9jb25maWd1cmF0aW9uLCBhbmQgZG8KPiA+PiAgICAgc29tZSBz b2Z0d2FyZSBvcGVyYXRpb24gYWNjb3JkaW5nbHkuCj4gPgo+ID5BbGwgdGhpcyBzaG91bGQgYmUg cGFydCBvZiBjb21tZW50cyBpbiBjb2RlIGFsb25nIHdpdGggaW5mb3JtYXRpb24gYWJvdXQKPiA+ Y29udHJvbGxlciB2ZXJzaW9ucyB3aGljaCBzdWZmZXIgZnJvbSB0aGUgZXJyYXRhLgo+ID4KPiA+ SXMgdGhlcmUgYSB2ZXJzaW9uIG9mIGNvbnRyb2xsZXIgYXZhaWxhYmxlIHdoaWNoIGRvZXMgbm90 IGhhdmUgdGhlCj4gPmRlZmVjdD8gSXMgdGhlcmUgYSBmdXR1cmUgcGxhbiB0byBmaXggdGhpcz8K PiA+Cj4gPklmIGFueSBvZiB0aGF0IGlzIHllcywgeW91IHByb2JhYmx5IHdhbnQgdG8gaGFuZGxl IHRoaXMgd2l0aCBydW50aW1lCj4gPmRldGVjdGlvbiBvZiB2ZXJzaW9uIChsaWtlIGRvbmUgd2l0 aCBEV0MzX1JFVklTSU9OX1hYWCBtYWNyb3MpLgo+ID5Tb21ldGltZXMgdGhlIGhhcmR3YXJlLXJl YWQgdmVyc2lvbnMgdGhlbXNlbHZlcyBhcmUgaW5jb3JyZWN0LCBzbyBpdHMKPiA+YmV0dGVyIHRv IGludHJvZHVjZSBhIHZlcnNpb24gc3BlY2lmaWMgY29tcGF0aWJsZSB0b28gbGlrZQo+ID4iY2Ru cyx1c2ItMS4wLjAiIChhcyBoaW50ZWQgdG8gYnkgUm9iIEhlcnJpbmcgYXMgd2VsbCkuCj4gPgo+ Cj4gY3VzdG9tIG1hdGNoX2VwIGlzIHVzZWQgYW5kIHdvcmtzIHdpdGggYWxsIHZlcnNpb25zIG9m IHRoZSBnZW4xCj4gY29udHJvbGxlci4gRnV0dXJlIChnZW4yKSByZWxlYXNlcyBvZiB0aGUgY29u dHJvbGxlciB3b27igJl0IGhhdmUgc3VjaAo+IGxpbWl0YXRpb24gYnV0IHRoZXJlIGlzIG5vIHBs YW4gdG8gY2hhbmdlIGN1cnJlbnQgKGdlbjEpIGZ1bmN0aW9uYWxpdHkKPiBvZiB0aGUgY29udHJv bGxlci4KPgo+IEkgd2lsbCBhZGQgY29tbWVudCBiZWZvcmUgY2RuczNfZ2FkZ2V0X21hdGNoX2Vw IGZ1bmN0aW9uLgo+IEFsc28gSSB3aWxsIGNoYW5nZSBjZG5zLHVzYjMgdG8gY2Rucyx1c2IzLTEu MC4wIGFuZCBhZGQgYWRkaXRpb25hbAo+IGNkbnMsdXNiMy0xLjAuMSBjb21wYXRpYmxlLgo+Cj4g Y2Rucyx1c2IzLTEuMC4xIHdpbGwgYmUgZm9yIGN1cnJlbnQgdmVyc2lvbiBvZiBjb250cm9sbGVy IHdoaWNoIEkgdXNlLgo+IGNkbnMsdXNiMy0xLjAuMCB3aWxsIGJlIGZvciBvbGRlciB2ZXJzaW9u IC0gUGV0ZXIgQ2hhbiBwbGF0Zm9ybS4KPiBJIG5vdyB0aGF0IEkgaGF2ZSBzb21lIGNoYW5nZXMg aW4gY29udHJvbGxlciwgYW5kIG9uZSBvZiB0aGVtIHJlcXVpcmUKPiBzb21lIGNoYW5nZXMgaW4g RFJEIGRyaXZlci4gSXQgd2lsbCBiZSBzYWZlciB0byBhZGQgdHdvIHNlcGFyYXRlCj4gdmVyc2lv biBpbiBjb21wYXRpYmxlcy4KPgoKUGF3ZWwsIGNvdWxkIHdlIGhhdmUgY29ycmVjdCByZWdpc3Rl ciB0byBzaG93IGNvbnRyb2xsZXIgdmVyc2lvbj8gSXQgaXMKYmV0dGVyIHdlIGNvdWxkIHZlcnNp b24ganVkZ2VtZW50IGF0IHJ1bnRpbWUgaW5zdGVhZCBvZiBzdGF0aWMgY29tcGF0aWJsZS4KClBl dGVyCg==