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 6A4ECC43381 for ; Fri, 29 Mar 2019 04:15:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 428872173C for ; Fri, 29 Mar 2019 04:15:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728792AbfC2EPE (ORCPT ); Fri, 29 Mar 2019 00:15:04 -0400 Received: from szxga07-in.huawei.com ([45.249.212.35]:48900 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725850AbfC2EOh (ORCPT ); Fri, 29 Mar 2019 00:14:37 -0400 Received: from DGGEMS411-HUB.china.huawei.com (unknown [172.30.72.59]) by Forcepoint Email with ESMTP id 32EC5F7D24E89D5D1D18; Fri, 29 Mar 2019 12:14:35 +0800 (CST) Received: from vm100-107-113-134.huawei.com (100.107.113.134) by DGGEMS411-HUB.china.huawei.com (10.3.19.211) with Microsoft SMTP Server id 14.3.408.0; Fri, 29 Mar 2019 12:14:27 +0800 From: Yu Chen To: , , CC: , , , , , , , , , , , , , , Yu Chen , Andy Shevchenko , Felipe Balbi , "Greg Kroah-Hartman" , Binghui Wang Subject: [PATCH v5 12/13] usb: gadget: Add configfs attribuite for controling match_existing_only Date: Fri, 29 Mar 2019 12:14:08 +0800 Message-ID: <20190329041409.70138-13-chenyu56@huawei.com> X-Mailer: git-send-email 2.15.0-rc2 In-Reply-To: <20190329041409.70138-1-chenyu56@huawei.com> References: <20190329041409.70138-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". There are systems like Android do not support udev, so adding "match_existing_only" attribute to allow configuration by user is cost little. This patch adds a configfs attribuite for controling match_existing_only which allow user to config "match_existing_only". Cc: Andy Shevchenko 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..be85104bfab9 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 gadget_info *gi = to_gadget_info(item); + struct usb_gadget_driver *gadget_driver = &(gi->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 gadget_info *gi = to_gadget_info(item); + struct usb_gadget_driver *gadget_driver = &(gi->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 v5 12/13] usb: gadget: Add configfs attribuite for controling match_existing_only Date: Fri, 29 Mar 2019 12:14:08 +0800 Message-ID: <20190329041409.70138-13-chenyu56@huawei.com> References: <20190329041409.70138-1-chenyu56@huawei.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: In-Reply-To: <20190329041409.70138-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: john.stultz@linaro.org, suzhuangluan@hisilicon.com, kongfei@hisilicon.com, liuyu712@hisilicon.com, wanghu17@hisilicon.com, butao@hisilicon.com, chenyao11@huawei.com, fangshengzhou@hisilicon.com, lipengcheng8@huawei.com, songxiaowei@hisilicon.com, xuyiping@hisilicon.com, xuyoujun4@huawei.com, yudongbin@hisilicon.com, zangleigang@hisilicon.com, Yu Chen , Andy Shevchenko , Felipe Balbi , Greg Kroah-Hartman , 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". There are systems like Android do not support udev, so adding "match_existing_only" attribute to allow configuration by user is cost little. This patch adds a configfs attribuite for controling match_existing_only which allow user to config "match_existing_only". Cc: Andy Shevchenko 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..be85104bfab9 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 gadget_info *gi = to_gadget_info(item); + struct usb_gadget_driver *gadget_driver = &(gi->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 gadget_info *gi = to_gadget_info(item); + struct usb_gadget_driver *gadget_driver = &(gi->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: [v5,12/13] usb: gadget: Add configfs attribuite for controling match_existing_only From: Yu Chen Message-Id: <20190329041409.70138-13-chenyu56@huawei.com> Date: Fri, 29 Mar 2019 12:14:08 +0800 To: linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: john.stultz@linaro.org, suzhuangluan@hisilicon.com, kongfei@hisilicon.com, liuyu712@hisilicon.com, wanghu17@hisilicon.com, butao@hisilicon.com, chenyao11@huawei.com, fangshengzhou@hisilicon.com, lipengcheng8@huawei.com, songxiaowei@hisilicon.com, xuyiping@hisilicon.com, xuyoujun4@huawei.com, yudongbin@hisilicon.com, zangleigang@hisilicon.com, Yu Chen , Andy Shevchenko , Felipe Balbi , Greg Kroah-Hartman , Binghui Wang List-ID: Q3VycmVudGx5IHRoZSAibWF0Y2hfZXhpc3Rpbmdfb25seSIgb2YgdXNiX2dhZGdldF9kcml2ZXIg aW4gY29uZmlnZnMgaXMKc2V0IHRvIG9uZSB3aGljaCBpcyBub3QgZmxleGlibGUuCkR3YzMgdWRj IHdpbGwgYmUgcmVtb3ZlZCB3aGVuIHVzYiBjb3JlIHN3aXRjaCB0byBob3N0IG1vZGUuIFRoaXMg Y2F1c2VzCmZhaWx1cmUgb2Ygd3JpdGluZyBuYW1lIG9mIGR3YzMgdWRjIHRvIGNvbmZpZ2ZzJ3Mg VURDIGF0dHJpYnVpdGUuClRvIGZpeCB0aGlzIHdlIG5lZWQgdG8gYWRkIGEgd2F5IHRvIGNoYW5n ZSB0aGUgY29uZmlnIG9mCiJtYXRjaF9leGlzdGluZ19vbmx5Ii4KVGhlcmUgYXJlIHN5c3RlbXMg bGlrZSBBbmRyb2lkIGRvIG5vdCBzdXBwb3J0IHVkZXYsIHNvIGFkZGluZwoibWF0Y2hfZXhpc3Rp bmdfb25seSIgYXR0cmlidXRlIHRvIGFsbG93IGNvbmZpZ3VyYXRpb24gYnkgdXNlciBpcyBjb3N0 IGxpdHRsZS4KVGhpcyBwYXRjaCBhZGRzIGEgY29uZmlnZnMgYXR0cmlidWl0ZSBmb3IgY29udHJv bGluZyBtYXRjaF9leGlzdGluZ19vbmx5CndoaWNoIGFsbG93IHVzZXIgdG8gY29uZmlnICJtYXRj aF9leGlzdGluZ19vbmx5Ii4KCkNjOiBBbmR5IFNoZXZjaGVua28gPGFuZHkuc2hldmNoZW5rb0Bn bWFpbC5jb20+CkNjOiBGZWxpcGUgQmFsYmkgPGJhbGJpQGtlcm5lbC5vcmc+CkNjOiBHcmVnIEty b2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgpDYzogSm9obiBTdHVsdHog PGpvaG4uc3R1bHR6QGxpbmFyby5vcmc+CkNjOiBCaW5naHVpIFdhbmcgPHdhbmdiaW5naHVpQGhp c2lsaWNvbi5jb20+ClNpZ25lZC1vZmYtYnk6IFl1IENoZW4gPGNoZW55dTU2QGh1YXdlaS5jb20+ Ci0tLQogZHJpdmVycy91c2IvZ2FkZ2V0L2NvbmZpZ2ZzLmMgfCAzMiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKykKCmRpZmYg LS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvY29uZmlnZnMuYyBiL2RyaXZlcnMvdXNiL2dhZGdl dC9jb25maWdmcy5jCmluZGV4IDAyNTEyOTk0Mjg5NC4uYmU4NTEwNGJmYWI5IDEwMDY0NAotLS0g YS9kcml2ZXJzL3VzYi9nYWRnZXQvY29uZmlnZnMuYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQv Y29uZmlnZnMuYwpAQCAtMjkxLDYgKzI5MSwzNiBAQCBzdGF0aWMgc3NpemVfdCBnYWRnZXRfZGV2 X2Rlc2NfVURDX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwKIAlyZXR1cm4gcmV0Owog fQogCitzdGF0aWMgc3NpemVfdCBnYWRnZXRfZHJpdmVyX21hdGNoX2V4aXN0aW5nX29ubHlfc3Rv cmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLAorCQljb25zdCBjaGFyICpwYWdlLCBzaXplX3Qg bGVuKQoreworCXN0cnVjdCBnYWRnZXRfaW5mbyAqZ2kgPSB0b19nYWRnZXRfaW5mbyhpdGVtKTsK KwlzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXIgKmdhZGdldF9kcml2ZXIgPSAmKGdpLT5jb21wb3Np dGUuZ2FkZ2V0X2RyaXZlcik7CisJYm9vbCBtYXRjaF9leGlzdGluZ19vbmx5OworCWludCByZXQ7 CisKKwlyZXQgPSBrc3RydG9ib29sKHBhZ2UsICZtYXRjaF9leGlzdGluZ19vbmx5KTsKKwlpZiAo cmV0KQorCQlyZXR1cm4gcmV0OworCisJaWYgKG1hdGNoX2V4aXN0aW5nX29ubHkpCisJCWdhZGdl dF9kcml2ZXItPm1hdGNoX2V4aXN0aW5nX29ubHkgPSAxOworCWVsc2UKKwkJZ2FkZ2V0X2RyaXZl ci0+bWF0Y2hfZXhpc3Rpbmdfb25seSA9IDA7CisKKwlyZXR1cm4gbGVuOworfQorCitzdGF0aWMg c3NpemVfdCBnYWRnZXRfZHJpdmVyX21hdGNoX2V4aXN0aW5nX29ubHlfc2hvdyhzdHJ1Y3QgY29u ZmlnX2l0ZW0gKml0ZW0sCisJCWNoYXIgKnBhZ2UpCit7CisJc3RydWN0IGdhZGdldF9pbmZvICpn aSA9IHRvX2dhZGdldF9pbmZvKGl0ZW0pOworCXN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciAqZ2Fk Z2V0X2RyaXZlciA9ICYoZ2ktPmNvbXBvc2l0ZS5nYWRnZXRfZHJpdmVyKTsKKwlib29sIG1hdGNo X2V4aXN0aW5nX29ubHkgPSAhIWdhZGdldF9kcml2ZXItPm1hdGNoX2V4aXN0aW5nX29ubHk7CisK KwlyZXR1cm4gc3ByaW50ZihwYWdlLCAiJXNcbiIsIG1hdGNoX2V4aXN0aW5nX29ubHkgPyAidHJ1 ZSIgOiAiZmFsc2UiKTsKK30KKwogQ09ORklHRlNfQVRUUihnYWRnZXRfZGV2X2Rlc2NfLCBiRGV2 aWNlQ2xhc3MpOwogQ09ORklHRlNfQVRUUihnYWRnZXRfZGV2X2Rlc2NfLCBiRGV2aWNlU3ViQ2xh c3MpOwogQ09ORklHRlNfQVRUUihnYWRnZXRfZGV2X2Rlc2NfLCBiRGV2aWNlUHJvdG9jb2wpOwpA QCAtMzAwLDYgKzMzMCw3IEBAIENPTkZJR0ZTX0FUVFIoZ2FkZ2V0X2Rldl9kZXNjXywgaWRQcm9k dWN0KTsKIENPTkZJR0ZTX0FUVFIoZ2FkZ2V0X2Rldl9kZXNjXywgYmNkRGV2aWNlKTsKIENPTkZJ R0ZTX0FUVFIoZ2FkZ2V0X2Rldl9kZXNjXywgYmNkVVNCKTsKIENPTkZJR0ZTX0FUVFIoZ2FkZ2V0 X2Rldl9kZXNjXywgVURDKTsKK0NPTkZJR0ZTX0FUVFIoZ2FkZ2V0XywgZHJpdmVyX21hdGNoX2V4 aXN0aW5nX29ubHkpOwogCiBzdGF0aWMgc3RydWN0IGNvbmZpZ2ZzX2F0dHJpYnV0ZSAqZ2FkZ2V0 X3Jvb3RfYXR0cnNbXSA9IHsKIAkmZ2FkZ2V0X2Rldl9kZXNjX2F0dHJfYkRldmljZUNsYXNzLApA QCAtMzExLDYgKzM0Miw3IEBAIHN0YXRpYyBzdHJ1Y3QgY29uZmlnZnNfYXR0cmlidXRlICpnYWRn ZXRfcm9vdF9hdHRyc1tdID0gewogCSZnYWRnZXRfZGV2X2Rlc2NfYXR0cl9iY2REZXZpY2UsCiAJ JmdhZGdldF9kZXZfZGVzY19hdHRyX2JjZFVTQiwKIAkmZ2FkZ2V0X2Rldl9kZXNjX2F0dHJfVURD LAorCSZnYWRnZXRfYXR0cl9kcml2ZXJfbWF0Y2hfZXhpc3Rpbmdfb25seSwKIAlOVUxMLAogfTsK IAo=