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=-9.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT 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 17ADAC65BB0 for ; Mon, 3 Dec 2018 03:46:07 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id DED0120848 for ; Mon, 3 Dec 2018 03:46:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DED0120848 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=huawei.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 S1726013AbeLCDps (ORCPT ); Sun, 2 Dec 2018 22:45:48 -0500 Received: from szxga05-in.huawei.com ([45.249.212.191]:15626 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725968AbeLCDps (ORCPT ); Sun, 2 Dec 2018 22:45:48 -0500 Received: from DGGEMS412-HUB.china.huawei.com (unknown [172.30.72.60]) by Forcepoint Email with ESMTP id 564264DF14715; Mon, 3 Dec 2018 11:45:42 +0800 (CST) Received: from vm100-107-113-134.huawei.com (100.107.113.134) by DGGEMS412-HUB.china.huawei.com (10.3.19.212) with Microsoft SMTP Server id 14.3.408.0; Mon, 3 Dec 2018 11:45:35 +0800 From: Yu Chen To: , , CC: , , Yu Chen , Felipe Balbi , Greg Kroah-Hartman , John Stultz , "Binghui Wang" Subject: [PATCH v1 11/12] usb: gadget: Add configfs attribuite for controling match_existing_only Date: Mon, 3 Dec 2018 11:45:14 +0800 Message-ID: <20181203034515.91412-12-chenyu56@huawei.com> X-Mailer: git-send-email 2.15.0-rc2 In-Reply-To: <20181203034515.91412-1-chenyu56@huawei.com> References: <20181203034515.91412-1-chenyu56@huawei.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [100.107.113.134] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently the "match_existing_only" of usb_gadget_driver in configfs is set to one which is not flexible. Dwc3 udc will be removed when usb core switch to host mode. This causes failure of writing name of dwc3 udc to configfs's UDC attribuite. To fix this we need to add a way to change the config of "match_existing_only". This patch adds a configfs attribuite for controling match_existing_only which allow user to config "match_existing_only". Cc: Felipe Balbi Cc: Greg Kroah-Hartman Cc: John Stultz Cc: Binghui Wang Signed-off-by: Yu Chen --- drivers/usb/gadget/configfs.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/drivers/usb/gadget/configfs.c b/drivers/usb/gadget/configfs.c index 025129942894..c82b7bc98dea 100644 --- a/drivers/usb/gadget/configfs.c +++ b/drivers/usb/gadget/configfs.c @@ -291,6 +291,36 @@ static ssize_t gadget_dev_desc_UDC_store(struct config_item *item, return ret; } +static ssize_t gadget_driver_match_existing_only_store(struct config_item *item, + const char *page, size_t len) +{ + struct usb_gadget_driver *gadget_driver = + &(to_gadget_info(item)->composite.gadget_driver); + bool match_existing_only; + int ret; + + ret = kstrtobool(page, &match_existing_only); + if (ret) + return ret; + + if (match_existing_only) + gadget_driver->match_existing_only = 1; + else + gadget_driver->match_existing_only = 0; + + return len; +} + +static ssize_t gadget_driver_match_existing_only_show(struct config_item *item, + char *page) +{ + struct usb_gadget_driver *gadget_driver = + &(to_gadget_info(item)->composite.gadget_driver); + bool match_existing_only = !!gadget_driver->match_existing_only; + + return sprintf(page, "%s\n", match_existing_only ? "true" : "false"); +} + CONFIGFS_ATTR(gadget_dev_desc_, bDeviceClass); CONFIGFS_ATTR(gadget_dev_desc_, bDeviceSubClass); CONFIGFS_ATTR(gadget_dev_desc_, bDeviceProtocol); @@ -300,6 +330,7 @@ CONFIGFS_ATTR(gadget_dev_desc_, idProduct); CONFIGFS_ATTR(gadget_dev_desc_, bcdDevice); CONFIGFS_ATTR(gadget_dev_desc_, bcdUSB); CONFIGFS_ATTR(gadget_dev_desc_, UDC); +CONFIGFS_ATTR(gadget_, driver_match_existing_only); static struct configfs_attribute *gadget_root_attrs[] = { &gadget_dev_desc_attr_bDeviceClass, @@ -311,6 +342,7 @@ static struct configfs_attribute *gadget_root_attrs[] = { &gadget_dev_desc_attr_bcdDevice, &gadget_dev_desc_attr_bcdUSB, &gadget_dev_desc_attr_UDC, + &gadget_attr_driver_match_existing_only, NULL, }; -- 2.15.0-rc2 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yu Chen Subject: [PATCH v1 11/12] usb: gadget: Add configfs attribuite for controling match_existing_only Date: Mon, 3 Dec 2018 11:45:14 +0800 Message-ID: <20181203034515.91412-12-chenyu56@huawei.com> References: <20181203034515.91412-1-chenyu56@huawei.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: In-Reply-To: <20181203034515.91412-1-chenyu56@huawei.com> Sender: linux-kernel-owner@vger.kernel.org To: linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: suzhuangluan@hisilicon.com, kongfei@hisilicon.com, Yu Chen , Felipe Balbi , Greg Kroah-Hartman , John Stultz , Binghui Wang List-Id: devicetree@vger.kernel.org Currently the "match_existing_only" of usb_gadget_driver in configfs is set to one which is not flexible. Dwc3 udc will be removed when usb core switch to host mode. This causes failure of writing name of dwc3 udc to configfs's UDC attribuite. To fix this we need to add a way to change the config of "match_existing_only". This patch adds a configfs attribuite for controling match_existing_only which allow user to config "match_existing_only". Cc: Felipe Balbi Cc: Greg Kroah-Hartman Cc: John Stultz Cc: Binghui Wang Signed-off-by: Yu Chen --- drivers/usb/gadget/configfs.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/drivers/usb/gadget/configfs.c b/drivers/usb/gadget/configfs.c index 025129942894..c82b7bc98dea 100644 --- a/drivers/usb/gadget/configfs.c +++ b/drivers/usb/gadget/configfs.c @@ -291,6 +291,36 @@ static ssize_t gadget_dev_desc_UDC_store(struct config_item *item, return ret; } +static ssize_t gadget_driver_match_existing_only_store(struct config_item *item, + const char *page, size_t len) +{ + struct usb_gadget_driver *gadget_driver = + &(to_gadget_info(item)->composite.gadget_driver); + bool match_existing_only; + int ret; + + ret = kstrtobool(page, &match_existing_only); + if (ret) + return ret; + + if (match_existing_only) + gadget_driver->match_existing_only = 1; + else + gadget_driver->match_existing_only = 0; + + return len; +} + +static ssize_t gadget_driver_match_existing_only_show(struct config_item *item, + char *page) +{ + struct usb_gadget_driver *gadget_driver = + &(to_gadget_info(item)->composite.gadget_driver); + bool match_existing_only = !!gadget_driver->match_existing_only; + + return sprintf(page, "%s\n", match_existing_only ? "true" : "false"); +} + CONFIGFS_ATTR(gadget_dev_desc_, bDeviceClass); CONFIGFS_ATTR(gadget_dev_desc_, bDeviceSubClass); CONFIGFS_ATTR(gadget_dev_desc_, bDeviceProtocol); @@ -300,6 +330,7 @@ CONFIGFS_ATTR(gadget_dev_desc_, idProduct); CONFIGFS_ATTR(gadget_dev_desc_, bcdDevice); CONFIGFS_ATTR(gadget_dev_desc_, bcdUSB); CONFIGFS_ATTR(gadget_dev_desc_, UDC); +CONFIGFS_ATTR(gadget_, driver_match_existing_only); static struct configfs_attribute *gadget_root_attrs[] = { &gadget_dev_desc_attr_bDeviceClass, @@ -311,6 +342,7 @@ static struct configfs_attribute *gadget_root_attrs[] = { &gadget_dev_desc_attr_bcdDevice, &gadget_dev_desc_attr_bcdUSB, &gadget_dev_desc_attr_UDC, + &gadget_attr_driver_match_existing_only, NULL, }; -- 2.15.0-rc2 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: [v1,11/12] usb: gadget: Add configfs attribuite for controling match_existing_only From: Yu Chen Message-Id: <20181203034515.91412-12-chenyu56@huawei.com> Date: Mon, 3 Dec 2018 11:45:14 +0800 To: linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: suzhuangluan@hisilicon.com, kongfei@hisilicon.com, Yu Chen , Felipe Balbi , Greg Kroah-Hartman , John Stultz , Binghui Wang List-ID: Q3VycmVudGx5IHRoZSAibWF0Y2hfZXhpc3Rpbmdfb25seSIgb2YgdXNiX2dhZGdldF9kcml2ZXIg aW4gY29uZmlnZnMgaXMKc2V0IHRvIG9uZSB3aGljaCBpcyBub3QgZmxleGlibGUuCkR3YzMgdWRj IHdpbGwgYmUgcmVtb3ZlZCB3aGVuIHVzYiBjb3JlIHN3aXRjaCB0byBob3N0IG1vZGUuIFRoaXMg Y2F1c2VzCmZhaWx1cmUgb2Ygd3JpdGluZyBuYW1lIG9mIGR3YzMgdWRjIHRvIGNvbmZpZ2ZzJ3Mg VURDIGF0dHJpYnVpdGUuClRvIGZpeCB0aGlzIHdlIG5lZWQgdG8gYWRkIGEgd2F5IHRvIGNoYW5n ZSB0aGUgY29uZmlnIG9mCiJtYXRjaF9leGlzdGluZ19vbmx5Ii4KVGhpcyBwYXRjaCBhZGRzIGEg Y29uZmlnZnMgYXR0cmlidWl0ZSBmb3IgY29udHJvbGluZyBtYXRjaF9leGlzdGluZ19vbmx5Cndo aWNoIGFsbG93IHVzZXIgdG8gY29uZmlnICJtYXRjaF9leGlzdGluZ19vbmx5Ii4KCkNjOiBGZWxp cGUgQmFsYmkgPGJhbGJpQGtlcm5lbC5vcmc+CkNjOiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdr aEBsaW51eGZvdW5kYXRpb24ub3JnPgpDYzogSm9obiBTdHVsdHogPGpvaG4uc3R1bHR6QGxpbmFy by5vcmc+CkNjOiBCaW5naHVpIFdhbmcgPHdhbmdiaW5naHVpQGhpc2lsaWNvbi5jb20+ClNpZ25l ZC1vZmYtYnk6IFl1IENoZW4gPGNoZW55dTU2QGh1YXdlaS5jb20+Ci0tLQogZHJpdmVycy91c2Iv Z2FkZ2V0L2NvbmZpZ2ZzLmMgfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog MSBmaWxlIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Vz Yi9nYWRnZXQvY29uZmlnZnMuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9jb25maWdmcy5jCmluZGV4 IDAyNTEyOTk0Mjg5NC4uYzgyYjdiYzk4ZGVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRn ZXQvY29uZmlnZnMuYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvY29uZmlnZnMuYwpAQCAtMjkx LDYgKzI5MSwzNiBAQCBzdGF0aWMgc3NpemVfdCBnYWRnZXRfZGV2X2Rlc2NfVURDX3N0b3JlKHN0 cnVjdCBjb25maWdfaXRlbSAqaXRlbSwKIAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMgc3NpemVf dCBnYWRnZXRfZHJpdmVyX21hdGNoX2V4aXN0aW5nX29ubHlfc3RvcmUoc3RydWN0IGNvbmZpZ19p dGVtICppdGVtLAorCQljb25zdCBjaGFyICpwYWdlLCBzaXplX3QgbGVuKQoreworCXN0cnVjdCB1 c2JfZ2FkZ2V0X2RyaXZlciAqZ2FkZ2V0X2RyaXZlciA9CisJCSYodG9fZ2FkZ2V0X2luZm8oaXRl bSktPmNvbXBvc2l0ZS5nYWRnZXRfZHJpdmVyKTsKKwlib29sIG1hdGNoX2V4aXN0aW5nX29ubHk7 CisJaW50IHJldDsKKworCXJldCA9IGtzdHJ0b2Jvb2wocGFnZSwgJm1hdGNoX2V4aXN0aW5nX29u bHkpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlpZiAobWF0Y2hfZXhpc3Rpbmdfb25s eSkKKwkJZ2FkZ2V0X2RyaXZlci0+bWF0Y2hfZXhpc3Rpbmdfb25seSA9IDE7CisJZWxzZQorCQln YWRnZXRfZHJpdmVyLT5tYXRjaF9leGlzdGluZ19vbmx5ID0gMDsKKworCXJldHVybiBsZW47Cit9 CisKK3N0YXRpYyBzc2l6ZV90IGdhZGdldF9kcml2ZXJfbWF0Y2hfZXhpc3Rpbmdfb25seV9zaG93 KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwKKwkJY2hhciAqcGFnZSkKK3sKKwlzdHJ1Y3QgdXNi X2dhZGdldF9kcml2ZXIgKmdhZGdldF9kcml2ZXIgPQorCQkmKHRvX2dhZGdldF9pbmZvKGl0ZW0p LT5jb21wb3NpdGUuZ2FkZ2V0X2RyaXZlcik7CisJYm9vbCBtYXRjaF9leGlzdGluZ19vbmx5ID0g ISFnYWRnZXRfZHJpdmVyLT5tYXRjaF9leGlzdGluZ19vbmx5OworCisJcmV0dXJuIHNwcmludGYo cGFnZSwgIiVzXG4iLCBtYXRjaF9leGlzdGluZ19vbmx5ID8gInRydWUiIDogImZhbHNlIik7Cit9 CisKIENPTkZJR0ZTX0FUVFIoZ2FkZ2V0X2Rldl9kZXNjXywgYkRldmljZUNsYXNzKTsKIENPTkZJ R0ZTX0FUVFIoZ2FkZ2V0X2Rldl9kZXNjXywgYkRldmljZVN1YkNsYXNzKTsKIENPTkZJR0ZTX0FU VFIoZ2FkZ2V0X2Rldl9kZXNjXywgYkRldmljZVByb3RvY29sKTsKQEAgLTMwMCw2ICszMzAsNyBA QCBDT05GSUdGU19BVFRSKGdhZGdldF9kZXZfZGVzY18sIGlkUHJvZHVjdCk7CiBDT05GSUdGU19B VFRSKGdhZGdldF9kZXZfZGVzY18sIGJjZERldmljZSk7CiBDT05GSUdGU19BVFRSKGdhZGdldF9k ZXZfZGVzY18sIGJjZFVTQik7CiBDT05GSUdGU19BVFRSKGdhZGdldF9kZXZfZGVzY18sIFVEQyk7 CitDT05GSUdGU19BVFRSKGdhZGdldF8sIGRyaXZlcl9tYXRjaF9leGlzdGluZ19vbmx5KTsKIAog c3RhdGljIHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGUgKmdhZGdldF9yb290X2F0dHJzW10gPSB7 CiAJJmdhZGdldF9kZXZfZGVzY19hdHRyX2JEZXZpY2VDbGFzcywKQEAgLTMxMSw2ICszNDIsNyBA QCBzdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2F0dHJpYnV0ZSAqZ2FkZ2V0X3Jvb3RfYXR0cnNbXSA9 IHsKIAkmZ2FkZ2V0X2Rldl9kZXNjX2F0dHJfYmNkRGV2aWNlLAogCSZnYWRnZXRfZGV2X2Rlc2Nf YXR0cl9iY2RVU0IsCiAJJmdhZGdldF9kZXZfZGVzY19hdHRyX1VEQywKKwkmZ2FkZ2V0X2F0dHJf ZHJpdmVyX21hdGNoX2V4aXN0aW5nX29ubHksCiAJTlVMTCwKIH07CiAK