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,v1,14/14] usb:cdns3: Feature for changing role From: Roger Quadros Message-Id: <5BE1AA81.3030107@ti.com> Date: Tue, 6 Nov 2018 16:51:45 +0200 To: Pawel Laszczak , gregkh@linuxfoundation.org Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, adouglas@cadence.com, jbergsagel@ti.com, peter.chen@nxp.com, pjez@cadence.com, kurahul@cadence.com List-ID: T24gMDMvMTEvMTggMTk6NTEsIFBhd2VsIExhc3pjemFrIHdyb3RlOgo+IFBhdGNoIGFkZHMgZmVh dHVyZSB0aGF0IGFsbG93IHRvIGNoYW5nZSByb2xlIGZyb20gdXNlciBzcGFjZS4KPiAKPiBTaWdu ZWQtb2ZmLWJ5OiBQYXdlbCBMYXN6Y3phayA8cGF3ZWxsQGNhZGVuY2UuY29tPgo+IC0tLQo+ICBk cml2ZXJzL3VzYi9jZG5zMy9NYWtlZmlsZSAgfCAgMiArLQo+ICBkcml2ZXJzL3VzYi9jZG5zMy9j b3JlLmMgICAgfCAgMiArCj4gIGRyaXZlcnMvdXNiL2NkbnMzL2RlYnVnZnMuYyB8IDk0ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgZHJpdmVycy91c2IvY2RuczMvZHJk LmggICAgIHwgIDMgKysKPiAgNCBmaWxlcyBjaGFuZ2VkLCAxMDAgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy91c2IvY2RuczMvZGVidWdm cy5jCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NkbnMzL01ha2VmaWxlIGIvZHJpdmVy cy91c2IvY2RuczMvTWFrZWZpbGUKPiBpbmRleCAzNGU2MGQwM2M0ZWMuLjA4ZTZjZGJlYmQ0NiAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL3VzYi9jZG5zMy9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMv dXNiL2NkbnMzL01ha2VmaWxlCj4gQEAgLTEsNyArMSw3IEBACj4gIG9iai0kKENPTkZJR19VU0Jf Q0ROUzMpCQkJKz0gY2RuczMubwo+ICBvYmotJChDT05GSUdfVVNCX0NETlMzX1BDSV9XUkFQKQkr PSBjZG5zMy1wY2kubwo+ICAKPiAtY2RuczMteQkJCQkJOj0gY29yZS5vIGRyZC5vCj4gK2NkbnMz LXkJCQkJCTo9IGNvcmUubyBkcmQubyBkZWJ1Z2ZzLm8KPiAgY2RuczMtJChDT05GSUdfVVNCX0NE TlMzX0dBREdFVCkJKz0gZ2FkZ2V0Lm8gZXAwLm8gZGVidWcubwo+ICBjZG5zMy0kKENPTkZJR19V U0JfQ0ROUzNfSE9TVCkJCSs9IGhvc3Qubwo+ICBjZG5zMy1wY2kteQkJIAkJOj0gY2RuczMtcGNp LXdyYXAubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jZG5zMy9jb3JlLmMgYi9kcml2ZXJz L3VzYi9jZG5zMy9jb3JlLmMKPiBpbmRleCAyMGFlOWU3Njk0MGUuLjQwMTJmMTAwN2RhOSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL3VzYi9jZG5zMy9jb3JlLmMKPiArKysgYi9kcml2ZXJzL3VzYi9j ZG5zMy9jb3JlLmMKPiBAQCAtMzA5LDYgKzMwOSw3IEBAIHN0YXRpYyBpbnQgY2RuczNfcHJvYmUo c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCWlmIChyZXQpCj4gIAkJZ290byBlcnI0 Owo+ICAKPiArCWNkbnMzX2RlYnVnZnNfaW5pdChjZG5zKTsKPiAgCWRldmljZV9zZXRfd2FrZXVw X2NhcGFibGUoZGV2LCB0cnVlKTsKPiAgCXBtX3J1bnRpbWVfc2V0X2FjdGl2ZShkZXYpOwo+ICAJ cG1fcnVudGltZV9lbmFibGUoZGV2KTsKPiBAQCAtMzQ2LDYgKzM0Nyw3IEBAIHN0YXRpYyBpbnQg Y2RuczNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAlwbV9ydW50aW1l X2dldF9zeW5jKCZwZGV2LT5kZXYpOwo+ICAJcG1fcnVudGltZV9kaXNhYmxlKCZwZGV2LT5kZXYp Owo+ICAJcG1fcnVudGltZV9wdXRfbm9pZGxlKCZwZGV2LT5kZXYpOwo+ICsJY2RuczNfZGVidWdm c19leGl0KGNkbnMpOwo+ICAJY2RuczNfcmVtb3ZlX3JvbGVzKGNkbnMpOwo+ICAJdXNiX3BoeV9z aHV0ZG93bihjZG5zLT51c2JwaHkpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2Ru czMvZGVidWdmcy5jIGIvZHJpdmVycy91c2IvY2RuczMvZGVidWdmcy5jCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmQ0ODcxYmMxYTY5ZAo+IC0tLSAvZGV2L251 bGwKPiArKysgYi9kcml2ZXJzL3VzYi9jZG5zMy9kZWJ1Z2ZzLmMKPiBAQCAtMCwwICsxLDk0IEBA Cj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gKy8qCj4gKyAqIENhZGVu Y2UgVVNCU1MgRFJEIENvbnRyb2xsZXIgRGVidWdGUyBmaWxlci4KPiArICoKPiArICogQ29weXJp Z2h0IChDKSAyMDE4IENhZGVuY2UuCj4gKyAqCj4gKyAqIEF1dGhvcjogUGF3ZWwgTGFzemN6YWsg PHBhd2VsbEBjYWRlbmNlLmNvbT4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvdHlwZXMu aD4KPiArI2luY2x1ZGUgPGxpbnV4L2RlYnVnZnMuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3NlcV9m aWxlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC91YWNjZXNzLmg+Cj4gKwo+ICsjaW5jbHVkZSAiY29y ZS5oIgo+ICsjaW5jbHVkZSAiZ2FkZ2V0LmgiCj4gKwo+ICtzdGF0aWMgaW50IGNkbnMzX21vZGVf c2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnVudXNlZCkKPiArewo+ICsJc3RydWN0IGNk bnMzCQkqY2RucyA9IHMtPnByaXZhdGU7Cj4gKwo+ICsJc3dpdGNoIChjZG5zLT5yb2xlKSB7Cj4g KwljYXNlIENETlMzX1JPTEVfSE9TVDoKPiArCQlzZXFfcHV0cyhzLCAiaG9zdFxuIik7Cj4gKwkJ YnJlYWs7Cj4gKwljYXNlIENETlMzX1JPTEVfR0FER0VUOgo+ICsJCXNlcV9wdXRzKHMsICJkZXZp Y2VcbiIpOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBDRE5TM19ST0xFX09URzoKPiArCWNhc2UgQ0RO UzNfUk9MRV9FTkQ6Cj4gKwkJc2VxX3B1dHMocywgIm90Z1xuIik7Cj4gKwkJYnJlYWs7Cj4gKwlk ZWZhdWx0Ogo+ICsJCXNlcV9wdXRzKHMsICJVTktOT1dOIG1vZGVcbiIpOwo+ICsJfQo+ICsKPiAr CXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGNkbnMzX21vZGVfb3BlbihzdHJ1Y3Qg aW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKPiArewo+ICsJcmV0dXJuIHNpbmdsZV9v cGVuKGZpbGUsIGNkbnMzX21vZGVfc2hvdywgaW5vZGUtPmlfcHJpdmF0ZSk7Cj4gK30KPiArCj4g K3N0YXRpYyBzc2l6ZV90IGNkbnMzX21vZGVfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsCj4gKwkJ CQljb25zdCBjaGFyIF9fdXNlciAqdWJ1ZiwKPiArCQkJCXNpemVfdCBjb3VudCwgbG9mZl90ICpw cG9zKQo+ICt7Cj4gKwlzdHJ1Y3Qgc2VxX2ZpbGUJCSpzID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwo+ ICsJc3RydWN0IGNkbnMzCQkqY2RucyA9IHMtPnByaXZhdGU7Cj4gKwl1MzIJCQltb2RlID0gMDsK PiArCWNoYXIJCQlidWZbMzJdOwo+ICsKPiArCWlmIChjb3B5X2Zyb21fdXNlcigmYnVmLCB1YnVm LCBtaW5fdChzaXplX3QsIHNpemVvZihidWYpIC0gMSwgY291bnQpKSkKPiArCQlyZXR1cm4gLUVG QVVMVDsKPiArCj4gKwlpZiAoIXN0cm5jbXAoYnVmLCAiaG9zdCIsIDQpKQo+ICsJCW1vZGUgPSBV U0JfRFJfTU9ERV9IT1NUOwo+ICsKPiArCWlmICghc3RybmNtcChidWYsICJkZXZpY2UiLCA2KSkK PiArCQltb2RlID0gVVNCX0RSX01PREVfUEVSSVBIRVJBTDsKPiArCj4gKwlpZiAoIXN0cm5jbXAo YnVmLCAib3RnIiwgMykpCj4gKwkJbW9kZSA9IFVTQl9EUl9NT0RFX09URzsKPiArCj4gKwljZG5z LT5kZXNpcmVkX3JvbGUgPSBtb2RlOwo+ICsJcXVldWVfd29yayhzeXN0ZW1fZnJlZXphYmxlX3dx LCAmY2Rucy0+cm9sZV9zd2l0Y2hfd3EpOwoKSWYgd2Ugc3RhcnQgd2l0aCBPVEcgbW9kZSBhbmQg dXNlciBzYXlzIGNoYW5nZSBtb2RlIHRvIGRldmljZSB3aWxsIHdlIHN0aWxsCnN3aXRjaCB0byBo b3N0IGJhc2VkIG9uIElEIHBpbiBjaGFuZ2U/CgpJZiBpdCBkb2VzIHRoZW4gdGhpcyBpc24ndCB3 b3JraW5nIGNvcnJlY3RseS4KV2UgbmVlZCB0byBzdG9wIHByb2Nlc3NpbmcgSUQgaW50ZXJydXB0 cyBhbmQga2VlcCB0aGUgcm9sZSBzdGF0aWMgdGlsbAp0aGUgdXNlciBzd2l0Y2hlcyBpdCBiYWNr IHRvIG90Zy4KCj4gKwlyZXR1cm4gY291bnQ7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZmlsZV9vcGVyYXRpb25zIGNkbnMzX21vZGVfZm9wcyA9IHsKPiArCS5vcGVuCQkJPSBjZG5z M19tb2RlX29wZW4sCj4gKwkud3JpdGUJCQk9IGNkbnMzX21vZGVfd3JpdGUsCj4gKwkucmVhZAkJ CT0gc2VxX3JlYWQsCj4gKwkubGxzZWVrCQkJPSBzZXFfbHNlZWssCj4gKwkucmVsZWFzZQkJPSBz aW5nbGVfcmVsZWFzZSwKPiArfTsKPiArCj4gK3ZvaWQgY2RuczNfZGVidWdmc19pbml0KHN0cnVj dCBjZG5zMyAqY2RucykKPiArewo+ICsJc3RydWN0IGRlbnRyeSAqcm9vdDsKPiArCj4gKwlyb290 ID0gZGVidWdmc19jcmVhdGVfZGlyKGRldl9uYW1lKGNkbnMtPmRldiksIE5VTEwpOwo+ICsJY2Ru cy0+cm9vdCA9IHJvb3Q7Cj4gKwlpZiAoSVNfRU5BQkxFRChDT05GSUdfVVNCX0NETlMzX0dBREdF VCkgJiYKPiArCSAgICBJU19FTkFCTEVEKENPTkZJR19VU0JfQ0ROUzNfSE9TVCkpCj4gKwkJZGVi dWdmc19jcmVhdGVfZmlsZSgibW9kZSIsIDA2NDQsIHJvb3QsIGNkbnMsCj4gKwkJCQkgICAgJmNk bnMzX21vZGVfZm9wcyk7Cj4gK30KPiArCj4gK3ZvaWQgY2RuczNfZGVidWdmc19leGl0KHN0cnVj dCBjZG5zMyAqY2RucykKPiArewo+ICsJZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGNkbnMtPnJv b3QpOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NkbnMzL2RyZC5oIGIvZHJpdmVy cy91c2IvY2RuczMvZHJkLmgKPiBpbmRleCA4NTczMWYzYjY5M2MuLjUzNDQyOTBjNzZmMiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL3VzYi9jZG5zMy9kcmQuaAo+ICsrKyBiL2RyaXZlcnMvdXNiL2Nk bnMzL2RyZC5oCj4gQEAgLTExOSw0ICsxMTksNyBAQCBpbnQgY2RuczNfZHJkX3Byb2JlKHN0cnVj dCBjZG5zMyAqY2Rucyk7Cj4gIHZvaWQgY2RuczNfc2V0X2h3X21vZGUoc3RydWN0IGNkbnMzICpj ZG5zLCB1MzIgbW9kZSk7Cj4gIGlycXJldHVybl90IGNkbnMzX2RyZF9pcnEoc3RydWN0IGNkbnMz ICpjZG5zKTsKPiAgCj4gK3ZvaWQgY2RuczNfZGVidWdmc19pbml0KHN0cnVjdCBjZG5zMyAqY2Ru cyk7Cj4gK3ZvaWQgY2RuczNfZGVidWdmc19leGl0KHN0cnVjdCBjZG5zMyAqY2Rucyk7Cj4gKwo+ ICAjZW5kaWYgLyogX19MSU5VWF9DRE5TM19EUkQgKi8KPiAKCmNoZWVycywKLXJvZ2VyCg== 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=-8.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,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 61956C32789 for ; Tue, 6 Nov 2018 14:51:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1D74F20869 for ; Tue, 6 Nov 2018 14:51:58 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b="YS3wKV4m" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1D74F20869 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=ti.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 S2388936AbeKGARa (ORCPT ); Tue, 6 Nov 2018 19:17:30 -0500 Received: from lelv0143.ext.ti.com ([198.47.23.248]:34664 "EHLO lelv0143.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388428AbeKGAR3 (ORCPT ); Tue, 6 Nov 2018 19:17:29 -0500 Received: from fllv0034.itg.ti.com ([10.64.40.246]) by lelv0143.ext.ti.com (8.15.2/8.15.2) with ESMTP id wA6EpnAq024842; Tue, 6 Nov 2018 08:51:49 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1541515909; bh=GYQ0MFXS1TtNLqvUbBGA4h/Z95rKTg82ie2Ax0W2iRc=; h=Subject:To:References:CC:From:Date:In-Reply-To; b=YS3wKV4mRSsuEfMEtS55nSvr0OBW33qKbmq/6Lsapw+JG2CXebguqz2L+zFcQwhRM MNGFR2Ud+VIsICIii21g7HmPqisruR3Lix7DB6toRxwE09bByQO/o9SS4kBefkakgE ewGMT5Sqq5wJrHCIQDdUoyJ1wdNNW3O1N0VlQIWw= Received: from DLEE104.ent.ti.com (dlee104.ent.ti.com [157.170.170.34]) by fllv0034.itg.ti.com (8.15.2/8.15.2) with ESMTPS id wA6EpnOZ126640 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Tue, 6 Nov 2018 08:51:49 -0600 Received: from DLEE103.ent.ti.com (157.170.170.33) by DLEE104.ent.ti.com (157.170.170.34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1466.3; Tue, 6 Nov 2018 08:51:49 -0600 Received: from dflp33.itg.ti.com (10.64.6.16) by DLEE103.ent.ti.com (157.170.170.33) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1466.3 via Frontend Transport; Tue, 6 Nov 2018 08:51:49 -0600 Received: from [192.168.2.6] (ileax41-snat.itg.ti.com [10.172.224.153]) by dflp33.itg.ti.com (8.14.3/8.13.8) with ESMTP id wA6EpkvO025162; Tue, 6 Nov 2018 08:51:47 -0600 Subject: Re: [RFC PATCH v1 14/14] usb:cdns3: Feature for changing role To: Pawel Laszczak , References: <1541267487-3664-1-git-send-email-pawell@cadence.com> <1541267487-3664-15-git-send-email-pawell@cadence.com> CC: , , , , , , From: Roger Quadros Message-ID: <5BE1AA81.3030107@ti.com> Date: Tue, 6 Nov 2018 16:51:45 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 MIME-Version: 1.0 In-Reply-To: <1541267487-3664-15-git-send-email-pawell@cadence.com> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 03/11/18 19:51, Pawel Laszczak wrote: > Patch adds feature that allow to change role from user space. > > Signed-off-by: Pawel Laszczak > --- > drivers/usb/cdns3/Makefile | 2 +- > drivers/usb/cdns3/core.c | 2 + > drivers/usb/cdns3/debugfs.c | 94 +++++++++++++++++++++++++++++++++++++ > drivers/usb/cdns3/drd.h | 3 ++ > 4 files changed, 100 insertions(+), 1 deletion(-) > create mode 100644 drivers/usb/cdns3/debugfs.c > > diff --git a/drivers/usb/cdns3/Makefile b/drivers/usb/cdns3/Makefile > index 34e60d03c4ec..08e6cdbebd46 100644 > --- a/drivers/usb/cdns3/Makefile > +++ b/drivers/usb/cdns3/Makefile > @@ -1,7 +1,7 @@ > obj-$(CONFIG_USB_CDNS3) += cdns3.o > obj-$(CONFIG_USB_CDNS3_PCI_WRAP) += cdns3-pci.o > > -cdns3-y := core.o drd.o > +cdns3-y := core.o drd.o debugfs.o > cdns3-$(CONFIG_USB_CDNS3_GADGET) += gadget.o ep0.o debug.o > cdns3-$(CONFIG_USB_CDNS3_HOST) += host.o > cdns3-pci-y := cdns3-pci-wrap.o > diff --git a/drivers/usb/cdns3/core.c b/drivers/usb/cdns3/core.c > index 20ae9e76940e..4012f1007da9 100644 > --- a/drivers/usb/cdns3/core.c > +++ b/drivers/usb/cdns3/core.c > @@ -309,6 +309,7 @@ static int cdns3_probe(struct platform_device *pdev) > if (ret) > goto err4; > > + cdns3_debugfs_init(cdns); > device_set_wakeup_capable(dev, true); > pm_runtime_set_active(dev); > pm_runtime_enable(dev); > @@ -346,6 +347,7 @@ static int cdns3_remove(struct platform_device *pdev) > pm_runtime_get_sync(&pdev->dev); > pm_runtime_disable(&pdev->dev); > pm_runtime_put_noidle(&pdev->dev); > + cdns3_debugfs_exit(cdns); > cdns3_remove_roles(cdns); > usb_phy_shutdown(cdns->usbphy); > > diff --git a/drivers/usb/cdns3/debugfs.c b/drivers/usb/cdns3/debugfs.c > new file mode 100644 > index 000000000000..d4871bc1a69d > --- /dev/null > +++ b/drivers/usb/cdns3/debugfs.c > @@ -0,0 +1,94 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Cadence USBSS DRD Controller DebugFS filer. > + * > + * Copyright (C) 2018 Cadence. > + * > + * Author: Pawel Laszczak > + */ > + > +#include > +#include > +#include > +#include > + > +#include "core.h" > +#include "gadget.h" > + > +static int cdns3_mode_show(struct seq_file *s, void *unused) > +{ > + struct cdns3 *cdns = s->private; > + > + switch (cdns->role) { > + case CDNS3_ROLE_HOST: > + seq_puts(s, "host\n"); > + break; > + case CDNS3_ROLE_GADGET: > + seq_puts(s, "device\n"); > + break; > + case CDNS3_ROLE_OTG: > + case CDNS3_ROLE_END: > + seq_puts(s, "otg\n"); > + break; > + default: > + seq_puts(s, "UNKNOWN mode\n"); > + } > + > + return 0; > +} > + > +static int cdns3_mode_open(struct inode *inode, struct file *file) > +{ > + return single_open(file, cdns3_mode_show, inode->i_private); > +} > + > +static ssize_t cdns3_mode_write(struct file *file, > + const char __user *ubuf, > + size_t count, loff_t *ppos) > +{ > + struct seq_file *s = file->private_data; > + struct cdns3 *cdns = s->private; > + u32 mode = 0; > + char buf[32]; > + > + if (copy_from_user(&buf, ubuf, min_t(size_t, sizeof(buf) - 1, count))) > + return -EFAULT; > + > + if (!strncmp(buf, "host", 4)) > + mode = USB_DR_MODE_HOST; > + > + if (!strncmp(buf, "device", 6)) > + mode = USB_DR_MODE_PERIPHERAL; > + > + if (!strncmp(buf, "otg", 3)) > + mode = USB_DR_MODE_OTG; > + > + cdns->desired_role = mode; > + queue_work(system_freezable_wq, &cdns->role_switch_wq); If we start with OTG mode and user says change mode to device will we still switch to host based on ID pin change? If it does then this isn't working correctly. We need to stop processing ID interrupts and keep the role static till the user switches it back to otg. > + return count; > +} > + > +static const struct file_operations cdns3_mode_fops = { > + .open = cdns3_mode_open, > + .write = cdns3_mode_write, > + .read = seq_read, > + .llseek = seq_lseek, > + .release = single_release, > +}; > + > +void cdns3_debugfs_init(struct cdns3 *cdns) > +{ > + struct dentry *root; > + > + root = debugfs_create_dir(dev_name(cdns->dev), NULL); > + cdns->root = root; > + if (IS_ENABLED(CONFIG_USB_CDNS3_GADGET) && > + IS_ENABLED(CONFIG_USB_CDNS3_HOST)) > + debugfs_create_file("mode", 0644, root, cdns, > + &cdns3_mode_fops); > +} > + > +void cdns3_debugfs_exit(struct cdns3 *cdns) > +{ > + debugfs_remove_recursive(cdns->root); > +} > diff --git a/drivers/usb/cdns3/drd.h b/drivers/usb/cdns3/drd.h > index 85731f3b693c..5344290c76f2 100644 > --- a/drivers/usb/cdns3/drd.h > +++ b/drivers/usb/cdns3/drd.h > @@ -119,4 +119,7 @@ int cdns3_drd_probe(struct cdns3 *cdns); > void cdns3_set_hw_mode(struct cdns3 *cdns, u32 mode); > irqreturn_t cdns3_drd_irq(struct cdns3 *cdns); > > +void cdns3_debugfs_init(struct cdns3 *cdns); > +void cdns3_debugfs_exit(struct cdns3 *cdns); > + > #endif /* __LINUX_CDNS3_DRD */ > cheers, -roger -- Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki