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=-7.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED autolearn=unavailable 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 B1FCDC43381 for ; Tue, 19 Mar 2019 07:54:40 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7D2ED20989 for ; Tue, 19 Mar 2019 07:54:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="pqb0aIiV" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7D2ED20989 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=sZPHJhPZ6BPxxT94TY90Zm0Oyc/AgPjbztdLlLEnUiY=; b=pqb0aIiVAWE/Te f0G0p3hieVndEtdOAgypqe1l/yndCmpjBkj9CaUaziQs0HX92p1koc86BEzg1503+tMCsm+GCtm2x wl4uVbbxCxEe/Chhswd9EjYWf2X5nK/AeyKsUCHA8yhnkMxdikmC402ASYrwEiby4gLzR3qdOu9YP SimBfebTvRIkCWCnKBRu+ezADOTuTcnSW1tBoHaTTgiCTe+Xs8DNKQzAYMLnbUa7wpeVvKjjCmIMp KCFe+AzmGYqP8bf+s+ynsUqKZbq6RRIniTfSWYVMJrBgMXT+LFoXCngXUJU2mBpQBSYXCpUCF8Gi5 zaj+fx0soV+O9nT3kKpQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1h69a0-0003zT-0a; Tue, 19 Mar 2019 07:54:36 +0000 Received: from mailgw02.mediatek.com ([216.200.240.185]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1h69Zw-0003z2-0e; Tue, 19 Mar 2019 07:54:33 +0000 X-UUID: 38dd0551617c46048f387e15d4c4cf78-20190318 X-UUID: 38dd0551617c46048f387e15d4c4cf78-20190318 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 284347226; Mon, 18 Mar 2019 23:54:24 -0800 Received: from MTKMBS33DR.mediatek.inc (172.27.6.106) by MTKMBS62DR.mediatek.inc (172.29.94.18) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Tue, 19 Mar 2019 00:54:23 -0700 Received: from MTKCAS32.mediatek.inc (172.27.4.184) by MTKMBS33DR.mediatek.inc (172.27.6.106) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Tue, 19 Mar 2019 15:54:20 +0800 Received: from [10.17.3.153] (172.27.4.253) by MTKCAS32.mediatek.inc (172.27.4.170) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Tue, 19 Mar 2019 15:54:19 +0800 Message-ID: <1552982059.10179.143.camel@mhfsdcap03> Subject: Re: [PATCH v2] usb: introduce usb_ep_type_string() function From: Chunfeng Yun To: Greg Kroah-Hartman Date: Tue, 19 Mar 2019 15:54:19 +0800 In-Reply-To: <28a8e9f1518e47c35e4563706cbe592b972a7f9d.1552977710.git.chunfeng.yun@mediatek.com> References: <28a8e9f1518e47c35e4563706cbe592b972a7f9d.1552977710.git.chunfeng.yun@mediatek.com> X-Mailer: Evolution 3.2.3-0ubuntu6 MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190319_005432_064100_F5AF6D09 X-CRM114-Status: GOOD ( 21.71 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-aspeed@lists.ozlabs.org, "Gustavo A. R. Silva" , Benjamin Herrenschmidt , Sebastian Andrzej Siewior , Miquel Raynal , Matteo Croce , Dmitry Torokhov , Mathias Nyman , Alan Stern , Joel Stanley , Arnd Bergmann , Martin Blumenstingl , Johan Hovold , linux-mediatek@lists.infradead.org, Matthias Brugger , linux-arm-kernel@lists.infradead.org, Roger Quadros , Felipe Balbi , Andrew Jeffery , Yoshihiro Shimoda , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Colin Ian King Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi Felipe & Mathias, Could you please comment this patch, if there is some-effect on dwc3 and xhci, I'll remove its change. Sorry for bothering you On Tue, 2019-03-19 at 15:44 +0800, Chunfeng Yun wrote: > In some places, the code prints a human-readable USB endpoint > transfer type (e.g. "Bulk"). This involves a switch statement > sometimes wrapped around in ({ ... }) block leading to code > repetition. > To make this scenario easier, here introduces usb_ep_type_string() > function, which returns a human-readable name of provided > endpoint type. > It also changes a few places switch was used to use this > new function. > > Signed-off-by: Chunfeng Yun > --- > v2 changes: > 1. keep type string consistent with type_show() used in endpoint.c > --- > drivers/usb/common/common.c | 16 ++++++++++++++++ > drivers/usb/core/endpoint.c | 18 ++---------------- > drivers/usb/core/hcd.c | 17 ++--------------- > drivers/usb/dwc3/debugfs.c | 23 ++++------------------- > drivers/usb/gadget/udc/aspeed-vhub/epn.c | 6 +----- > drivers/usb/gadget/udc/dummy_hcd.c | 16 +--------------- > drivers/usb/host/xhci-trace.h | 19 ++----------------- > include/linux/usb/ch9.h | 8 ++++++++ > 8 files changed, 36 insertions(+), 87 deletions(-) > > diff --git a/drivers/usb/common/common.c b/drivers/usb/common/common.c > index 48277bbc15e4..529b01e786fd 100644 > --- a/drivers/usb/common/common.c > +++ b/drivers/usb/common/common.c > @@ -16,6 +16,22 @@ > #include > #include > > +static const char *const ep_type_names[] = { > + [USB_ENDPOINT_XFER_CONTROL] = "Control", > + [USB_ENDPOINT_XFER_ISOC] = "Isoc", > + [USB_ENDPOINT_XFER_BULK] = "Bulk", > + [USB_ENDPOINT_XFER_INT] = "Interrupt", > +}; > + > +const char *usb_ep_type_string(int ep_type) > +{ > + if (ep_type < 0 || ep_type >= ARRAY_SIZE(ep_type_names)) > + return "unknown"; > + > + return ep_type_names[ep_type]; > +} > +EXPORT_SYMBOL_GPL(usb_ep_type_string); > + > const char *usb_otg_state_string(enum usb_otg_state state) > { > static const char *const names[] = { > diff --git a/drivers/usb/core/endpoint.c b/drivers/usb/core/endpoint.c > index 1c2c04079676..afa43f9a47b2 100644 > --- a/drivers/usb/core/endpoint.c > +++ b/drivers/usb/core/endpoint.c > @@ -60,23 +60,9 @@ static ssize_t type_show(struct device *dev, struct device_attribute *attr, > char *buf) > { > struct ep_device *ep = to_ep_device(dev); > - char *type = "unknown"; > + int ep_type = usb_endpoint_type(ep->desc); > > - switch (usb_endpoint_type(ep->desc)) { > - case USB_ENDPOINT_XFER_CONTROL: > - type = "Control"; > - break; > - case USB_ENDPOINT_XFER_ISOC: > - type = "Isoc"; > - break; > - case USB_ENDPOINT_XFER_BULK: > - type = "Bulk"; > - break; > - case USB_ENDPOINT_XFER_INT: > - type = "Interrupt"; > - break; > - } > - return sprintf(buf, "%s\n", type); > + return sprintf(buf, "%s\n", usb_ep_type_string(ep_type)); > } > static DEVICE_ATTR_RO(type); > > diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c > index 3189181bb628..0ccf2efeb40b 100644 > --- a/drivers/usb/core/hcd.c > +++ b/drivers/usb/core/hcd.c > @@ -1878,23 +1878,10 @@ void usb_hcd_flush_endpoint(struct usb_device *udev, > /* kick hcd */ > unlink1(hcd, urb, -ESHUTDOWN); > dev_dbg (hcd->self.controller, > - "shutdown urb %pK ep%d%s%s\n", > + "shutdown urb %pK ep%d%s-%s\n", > urb, usb_endpoint_num(&ep->desc), > is_in ? "in" : "out", > - ({ char *s; > - > - switch (usb_endpoint_type(&ep->desc)) { > - case USB_ENDPOINT_XFER_CONTROL: > - s = ""; break; > - case USB_ENDPOINT_XFER_BULK: > - s = "-bulk"; break; > - case USB_ENDPOINT_XFER_INT: > - s = "-intr"; break; > - default: > - s = "-iso"; break; > - }; > - s; > - })); > + usb_ep_type_string(usb_endpoint_type(&ep->desc))); > usb_put_urb (urb); > > /* list contents may have changed */ > diff --git a/drivers/usb/dwc3/debugfs.c b/drivers/usb/dwc3/debugfs.c > index 1c792710348f..d9e2a63835fe 100644 > --- a/drivers/usb/dwc3/debugfs.c > +++ b/drivers/usb/dwc3/debugfs.c > @@ -750,28 +750,13 @@ static int dwc3_transfer_type_show(struct seq_file *s, void *unused) > unsigned long flags; > > spin_lock_irqsave(&dwc->lock, flags); > - if (!(dep->flags & DWC3_EP_ENABLED) || > - !dep->endpoint.desc) { > - seq_printf(s, "--\n"); > + if (!(dep->flags & DWC3_EP_ENABLED) || !dep->endpoint.desc) { > + seq_puts(s, "unknown\n"); > goto out; > } > > - switch (usb_endpoint_type(dep->endpoint.desc)) { > - case USB_ENDPOINT_XFER_CONTROL: > - seq_printf(s, "control\n"); > - break; > - case USB_ENDPOINT_XFER_ISOC: > - seq_printf(s, "isochronous\n"); > - break; > - case USB_ENDPOINT_XFER_BULK: > - seq_printf(s, "bulk\n"); > - break; > - case USB_ENDPOINT_XFER_INT: > - seq_printf(s, "interrupt\n"); > - break; > - default: > - seq_printf(s, "--\n"); > - } > + seq_printf(s, "%s\n", > + usb_ep_type_string(usb_endpoint_type(dep->endpoint.desc))); > > out: > spin_unlock_irqrestore(&dwc->lock, flags); > diff --git a/drivers/usb/gadget/udc/aspeed-vhub/epn.c b/drivers/usb/gadget/udc/aspeed-vhub/epn.c > index 83340f4fdc6e..35941dc125f9 100644 > --- a/drivers/usb/gadget/udc/aspeed-vhub/epn.c > +++ b/drivers/usb/gadget/udc/aspeed-vhub/epn.c > @@ -593,10 +593,6 @@ static int ast_vhub_epn_disable(struct usb_ep* u_ep) > static int ast_vhub_epn_enable(struct usb_ep* u_ep, > const struct usb_endpoint_descriptor *desc) > { > - static const char *ep_type_string[] __maybe_unused = { "ctrl", > - "isoc", > - "bulk", > - "intr" }; > struct ast_vhub_ep *ep = to_ast_ep(u_ep); > struct ast_vhub_dev *dev; > struct ast_vhub *vhub; > @@ -646,7 +642,7 @@ static int ast_vhub_epn_enable(struct usb_ep* u_ep, > ep->epn.wedged = false; > > EPDBG(ep, "Enabling [%s] %s num %d maxpacket=%d\n", > - ep->epn.is_in ? "in" : "out", ep_type_string[type], > + ep->epn.is_in ? "in" : "out", usb_ep_type_string(type), > usb_endpoint_num(desc), maxpacket); > > /* Can we use DMA descriptor mode ? */ > diff --git a/drivers/usb/gadget/udc/dummy_hcd.c b/drivers/usb/gadget/udc/dummy_hcd.c > index baf72f95f0f1..40c6a484e232 100644 > --- a/drivers/usb/gadget/udc/dummy_hcd.c > +++ b/drivers/usb/gadget/udc/dummy_hcd.c > @@ -617,21 +617,7 @@ static int dummy_enable(struct usb_ep *_ep, > _ep->name, > desc->bEndpointAddress & 0x0f, > (desc->bEndpointAddress & USB_DIR_IN) ? "in" : "out", > - ({ char *val; > - switch (usb_endpoint_type(desc)) { > - case USB_ENDPOINT_XFER_BULK: > - val = "bulk"; > - break; > - case USB_ENDPOINT_XFER_ISOC: > - val = "iso"; > - break; > - case USB_ENDPOINT_XFER_INT: > - val = "intr"; > - break; > - default: > - val = "ctrl"; > - break; > - } val; }), > + usb_ep_type_string(usb_endpoint_type(desc)), > max, ep->stream_en ? "enabled" : "disabled"); > > /* at this point real hardware should be NAKing transfers > diff --git a/drivers/usb/host/xhci-trace.h b/drivers/usb/host/xhci-trace.h > index 88b427434bd8..bac73d688f11 100644 > --- a/drivers/usb/host/xhci-trace.h > +++ b/drivers/usb/host/xhci-trace.h > @@ -289,23 +289,8 @@ DECLARE_EVENT_CLASS(xhci_log_urb, > ), > TP_printk("ep%d%s-%s: urb %p pipe %u slot %d length %d/%d sgs %d/%d stream %d flags %08x", > __entry->epnum, __entry->dir_in ? "in" : "out", > - ({ char *s; > - switch (__entry->type) { > - case USB_ENDPOINT_XFER_INT: > - s = "intr"; > - break; > - case USB_ENDPOINT_XFER_CONTROL: > - s = "control"; > - break; > - case USB_ENDPOINT_XFER_BULK: > - s = "bulk"; > - break; > - case USB_ENDPOINT_XFER_ISOC: > - s = "isoc"; > - break; > - default: > - s = "UNKNOWN"; > - } s; }), __entry->urb, __entry->pipe, __entry->slot_id, > + usb_ep_type_string(__entry->type), > + __entry->urb, __entry->pipe, __entry->slot_id, > __entry->actual, __entry->length, __entry->num_mapped_sgs, > __entry->num_sgs, __entry->stream, __entry->flags > ) > diff --git a/include/linux/usb/ch9.h b/include/linux/usb/ch9.h > index 523aa088f6ab..da82606be605 100644 > --- a/include/linux/usb/ch9.h > +++ b/include/linux/usb/ch9.h > @@ -36,6 +36,14 @@ > #include > #include > > +/** > + * usb_ep_type_string() - Returns human readable-name of the endpoint type. > + * @ep_type: The endpoint type to return human-readable name for. If it's not > + * any of the types: USB_ENDPOINT_XFER_{CONTROL, ISOC, BULK, INT}, > + * usually got by usb_endpoint_type(), the string 'unknown' will be returned. > + */ > +extern const char *usb_ep_type_string(int ep_type); > + > /** > * usb_speed_string() - Returns human readable-name of the speed. > * @speed: The speed to return human-readable name for. If it's not _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel