Received: by 2002:ac0:946b:0:0:0:0:0 with SMTP id j40csp2293557imj; Mon, 18 Feb 2019 03:34:10 -0800 (PST) X-Google-Smtp-Source: AHgI3IbrrPzQVXtRtk2vMz/KIkrrQUkYAKp+N80m5D2/pTyZCqoe8Nqz5q3YqPetNuegigzZr5w4 X-Received: by 2002:a63:eb0f:: with SMTP id t15mr13315809pgh.252.1550489650388; Mon, 18 Feb 2019 03:34:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550489650; cv=none; d=google.com; s=arc-20160816; b=BNEb7VoPewYv/LiWyYcqINVCEwr0KtbRAUTZ+wkHSOc44UBVr3kIz24tmgTQ6/Divn STew878FkyU7Rcc4esYH9zqqon/9KV2dafA9iCxug0anROu9ITxCyRztYGdgc360/rn7 4drEx+Y3rmmnG5E4wPq+8nCELl2ZkC49R2mdxvA/P2wxGw0Dh80C64hSVmHrMtqKdBeI 7xGnD5BLWRT4+U2A+OyRbwYBHqnkJH0ddzHapTJemVh4c3Iaxmp2QOd3GFXmcJxr6lhX NdkfGGO8EFoe2PEECMSu3ffaJOWVx2+lfM7QaqwbS87doaihqNHNNUBkn1965d2lYNg4 7G1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=l/RhpRHrGaIR1VwPTOrmxxAZY1mtHNLNxZ0NEbIAcnM=; b=RXCW06fLPbk/UHS45Kp03u2bT7/QxQU1MZkye5cdxC8kykjfum3CqiflWwtYh8BQTA GTus06ZDvEcYHn1YtZCjTsXDAoja1T7Fr4go7F9enjFbXOLzOd52TFhwfDBSMg8Y3y9w MbdBdbsCkL/vi6CYcjJwuRkF9oL2B+EpU9I/93aSva3C/vWKyth3JM9hrPNhTeJABYAW cMfA9NR7eWcdqArL/qXpE0U1ofC0jkn+JXPmI07+BvIIf9KSrvBHNPhF2Mcn4E2Dq35+ BXWaP72bZi++mZleBOBa3mx2zL4V15ul6eheJQ5yTRhMuKFs//lHFdKLLpDRvtm/0x7p DIaw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d10si13606257pgf.136.2019.02.18.03.33.54; Mon, 18 Feb 2019 03:34:10 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730670AbfBRLXj (ORCPT + 99 others); Mon, 18 Feb 2019 06:23:39 -0500 Received: from szxga06-in.huawei.com ([45.249.212.32]:46886 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730639AbfBRLXg (ORCPT ); Mon, 18 Feb 2019 06:23:36 -0500 Received: from DGGEMS409-HUB.china.huawei.com (unknown [172.30.72.58]) by Forcepoint Email with ESMTP id 0AB6B435B2A7334A550D; Mon, 18 Feb 2019 19:23:32 +0800 (CST) Received: from vm100-107-113-134.huawei.com (100.107.113.134) by DGGEMS409-HUB.china.huawei.com (10.3.19.209) with Microsoft SMTP Server id 14.3.408.0; Mon, 18 Feb 2019 19:23:24 +0800 From: Yu Chen To: , , CC: , , , , , , , , , , , , , , Yu Chen , Andy Shevchenko , Felipe Balbi , "Greg Kroah-Hartman" , Binghui Wang Subject: [PATCH v2 09/10] usb: gadget: Add configfs attribuite for controling match_existing_only Date: Mon, 18 Feb 2019 19:23:09 +0800 Message-ID: <20190218112310.17860-10-chenyu56@huawei.com> X-Mailer: git-send-email 2.15.0-rc2 In-Reply-To: <20190218112310.17860-1-chenyu56@huawei.com> References: <20190218112310.17860-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