Received: by 2002:ac0:aed5:0:0:0:0:0 with SMTP id t21csp1048406imb; Sat, 2 Mar 2019 01:06:59 -0800 (PST) X-Google-Smtp-Source: APXvYqw8nxuoPFdKlcvEaTjR8vbQML/pmbeKf7dUG5YVeRVoiDojAYi1fz1uiACQgFv+8KM2qOdl X-Received: by 2002:a17:902:298a:: with SMTP id h10mr9942202plb.312.1551517619688; Sat, 02 Mar 2019 01:06:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551517619; cv=none; d=google.com; s=arc-20160816; b=ZpQRTqkAGnDdjVpuh8SpKEyIxst6UirbaRtKGplNNupL3Tftf4dsH2diNzm9OXVngR bJCh6CKkK9RSlDzcJXX3qfQSV8Apo89CSXWdTxpxP47Ic7QddrUvVD1kW97mPd17jqTm yQiSErXevDwVc82lYGLSYsplizryj4xafMRptf/kj3FF+9DW+m0+lXp0g4lJiit/FWnh 9HX+1VaInojz/9f/N7scAN6o2vIlagiXbjHEhxvBCffJSMij8CVoEJBYsyem/Hm+vPWv AnPDLR4mhCLzcufyxyxVGHVuVqFiBjLUG7CwnddTZ6u671usE+von5mAKjdyOs/J3v8l LZcQ== 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=I35uuANXkkVyTYiriuUJvnAhrE4dF4pv19LjzC8vaTIYtiW9RNpJTotWiqk7tUPVeu 5983o4YhuhGUC0qmf4mUVLV6FEhwtxUsazy19XjaDRhiiSfx5i3KTF068fV25Tj3OS5g LCJ6bOAz8CwrPFKcAzC5tn3g++4AH0BaAX8oTQYf4HX7d98x55Al4ha6WJzNjbf5krgO rWe2icEtv3F08eQ6oSdJGHs8mGxxH2cFEvdhgkma4f9WAV+/2V07PMfBdHJv4eLxi0eT 1e/HJUov4mzXfgfVU1DsJuAqyPOhQv1pxFPDlanN7Ojsgzhlc0o8t+KiQkZK3lMS3yyN amhw== 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 l7si267399pgp.513.2019.03.02.01.06.44; Sat, 02 Mar 2019 01:06:59 -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 S1728061AbfCBJFs (ORCPT + 99 others); Sat, 2 Mar 2019 04:05:48 -0500 Received: from szxga05-in.huawei.com ([45.249.212.191]:4759 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727916AbfCBJFo (ORCPT ); Sat, 2 Mar 2019 04:05:44 -0500 Received: from DGGEMS406-HUB.china.huawei.com (unknown [172.30.72.60]) by Forcepoint Email with ESMTP id D641E86C5E641E719DFC; Sat, 2 Mar 2019 17:05:40 +0800 (CST) Received: from vm100-107-113-134.huawei.com (100.107.113.134) by DGGEMS406-HUB.china.huawei.com (10.3.19.206) with Microsoft SMTP Server id 14.3.408.0; Sat, 2 Mar 2019 17:05:32 +0800 From: Yu Chen To: , , CC: , , , , , , , , , , , , , , Yu Chen , Andy Shevchenko , Felipe Balbi , "Greg Kroah-Hartman" , Binghui Wang Subject: [PATCH v3 11/12] usb: gadget: Add configfs attribuite for controling match_existing_only Date: Sat, 2 Mar 2019 17:05:04 +0800 Message-ID: <20190302090505.65542-12-chenyu56@huawei.com> X-Mailer: git-send-email 2.15.0-rc2 In-Reply-To: <20190302090505.65542-1-chenyu56@huawei.com> References: <20190302090505.65542-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