From patchwork Fri Feb 16 03:58:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wesley Cheng X-Patchwork-Id: 201881 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:c619:b0:108:e6aa:91d0 with SMTP id hn25csp286142dyb; Thu, 15 Feb 2024 20:09:14 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCWYdsfsFC1yCXLCXMOca4TaHUFCJaSZI3LpWp05nTQb+lgqlgL7SVHqK1N0K5acxkVRId4IHPdOJugpbOWQH5qOxX9MMg== X-Google-Smtp-Source: AGHT+IHQnHJsKJqdUJdYySJmi35ER5s5L7TvwQJ/MfgeJAL5h+x7hRSc5IZ6AYbupbXSeu+wB/uq X-Received: by 2002:a05:622a:1049:b0:42d:d7b4:d2be with SMTP id f9-20020a05622a104900b0042dd7b4d2bemr3793499qte.14.1708056554172; Thu, 15 Feb 2024 20:09:14 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708056554; cv=pass; d=google.com; s=arc-20160816; b=oh9thdP6a21OBjPVodMhv1UFNA4wcVrrhNJMLZkuTloJckhhns2AQbjRTvIfDwk54Q 5KLqGRTODMc5GYQR1I98BcqfMhW5IE953+wS7jLrh4VYGFZG4RymjD1P+p5VfdXhnwF3 o808lrn5e9UgueD4PYgBPzTDbE7eYldwP/LRYRFRkih96WAiwYsNZY0uuf0UyCewkolS LFSxx6xJDcsILwmhg2Nn0zuXrngUfyhNGIpIzgHcur+wnfVrbLSTkUBE8c5cpTVXrs84 r4YjDsxTiqih3yu6TZdXYSN4etTo5zLVJgfqx6RaCsmA5WtOWFB5TsDGg31Pio/ZGTHK SHrw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:list-unsubscribe:list-subscribe:list-id:precedence :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=9VDljZQ3jUXeOFYmjf0HIXwYuk3nLz8VzI9yifxpLd0=; fh=VKrp0Y7I/+wT36BfKZ6oI/4N9BIwFCn9zerObkOrgGw=; b=0DDs6MwEWuiM8F/CSPfjTHJ5m73/6I4iuGrX+EIF+PB5SUPiLV5fsRBno2KvldVg/I EEvxgJvvic9WGMzBLUWlHRimGxwLpHXTJcfs0Yw42WsHmsbkFZYcoBohdWWQwfur9bao KmN66Nz0MPdxWn7EqMLnSs4kGnUyQUrDlE9v2oTlzSsi/8LZb/uwZkOcBMSP1DmMY1OO as/32l+gIGTsGoplw+ybrjzP9O6DF/rqlmM0kRC0HwHqei+iKbVd5AHtxYLEU+Ccnoiq MW/fvQblJ3b8DV1CgzROx6y5B7HF7WKu4AQyVz8OB5nGdGfCnvsQuUtiaWxisejaaoR/ tQeQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=dxFvtoEr; arc=pass (i=1 spf=pass spfdomain=quicinc.com dkim=pass dkdomain=quicinc.com dmarc=pass fromdomain=quicinc.com); spf=pass (google.com: domain of linux-kernel+bounces-68003-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-68003-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id df4-20020a05622a0ec400b0042bf171ffe8si2832416qtb.524.2024.02.15.20.09.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Feb 2024 20:09:14 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-68003-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=dxFvtoEr; arc=pass (i=1 spf=pass spfdomain=quicinc.com dkim=pass dkdomain=quicinc.com dmarc=pass fromdomain=quicinc.com); spf=pass (google.com: domain of linux-kernel+bounces-68003-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-68003-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id EEE621C202EB for ; Fri, 16 Feb 2024 04:09:13 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 790333FE48; Fri, 16 Feb 2024 04:00:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="dxFvtoEr" Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 11A03FC15; Fri, 16 Feb 2024 03:59:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708056000; cv=none; b=i0Jrx4UNu6qGMa91Z+E/mfhI4hQffJz5PAZd8hUdcL8LLIMldpqRAC1AjP93poIbc8MDaZcEuQVb9hLg7DemWlkeTkU6AD117MxA7CHvLVjNPg8e5Knk5F9uU7oy1pj3kVwH8V6OinzBUJk6DTl/Q4l/2y2gkgrNVcy5AgvTyfU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708056000; c=relaxed/simple; bh=QoIq1/Y3tqfnRT9ZSM0JEP5WzhlhxSfZGEHEmY/RnkA=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=bXnlGneWs3QJS7uMtatPULv0665q9jPjrkFtMEAN7M1TYxMRxmaN9N/os6U61XgEYQm930Ma86MWKVt3mBt2ijg8X3dxjOBbw7QNokbGxy7E4N8TaraAliB2TmUQcOAgFzfU8RTMTpU1SlzOjI3js1f28qYehrCJTQmuCC34Has= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com; spf=pass smtp.mailfrom=quicinc.com; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b=dxFvtoEr; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=quicinc.com Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 41G1ww1Z022230; Fri, 16 Feb 2024 03:59:41 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type; s=qcppdkim1; bh=9VDljZQ3jUXeOFYmjf0H IXwYuk3nLz8VzI9yifxpLd0=; b=dxFvtoErfE5U353kQlS8d46yO0koiAGZF0Of 4eLrW9E8k1O7oP5z5NK6D8RF/XEux33EGVNiD81rQCKDDHBsS2XJPcy2c1uk+6/K k5ocSSdQCSWT2/htNLIudmsmSEEPb7u5qePVRfoYOq1B3ArpYxu8QBYVVXqYpYuY w9CPOeYBkzGDs2+hFA5p0jQBawP83Edo5qRu0QpcBh42LkckpqYeAZIUYgo7U3gj 9uzOs0coVZ+Wfy3C9YI6/tHaI4lAU4N8hAvwgigaWXsUWT+r3iFgxZBt/CO6a1d6 x9yfag4Sv81SPPYS3ME0hx2RP6VowvOIW7K7TAD/6AKR0P4CSg== Received: from nalasppmta04.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3w9bfs34n7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 16 Feb 2024 03:59:41 +0000 (GMT) Received: from nalasex01b.na.qualcomm.com (nalasex01b.na.qualcomm.com [10.47.209.197]) by NALASPPMTA04.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 41G3xe88029654 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 16 Feb 2024 03:59:40 GMT Received: from hu-wcheng-lv.qualcomm.com (10.49.16.6) by nalasex01b.na.qualcomm.com (10.47.209.197) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Thu, 15 Feb 2024 19:59:39 -0800 From: Wesley Cheng To: , , , , , , , , , , , , , , CC: , , , , , , , Wesley Cheng Subject: [PATCH v16 26/50] usb: dwc3: Specify maximum number of XHCI interrupters Date: Thu, 15 Feb 2024 19:58:59 -0800 Message-ID: <20240216035923.23392-27-quic_wcheng@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240216035923.23392-1-quic_wcheng@quicinc.com> References: <20240216035923.23392-1-quic_wcheng@quicinc.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: nalasex01a.na.qualcomm.com (10.47.209.196) To nalasex01b.na.qualcomm.com (10.47.209.197) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: _w1o4MWRZCVNx51vCaIcsiIoK0lbXY6K X-Proofpoint-GUID: _w1o4MWRZCVNx51vCaIcsiIoK0lbXY6K X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-02-16_02,2024-02-14_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 bulkscore=0 phishscore=0 suspectscore=0 priorityscore=1501 spamscore=0 clxscore=1015 adultscore=0 mlxscore=0 impostorscore=0 mlxlogscore=900 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2401310000 definitions=main-2402160030 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1791027109178135509 X-GMAIL-MSGID: 1791027109178135509 Allow for the DWC3 host driver to pass along XHCI property that defines how many interrupters to allocate. This is in relation for the number of event rings that can be potentially used by other processors within the system. Change-Id: Iaea871b1fc55ee5fa4337458fb9d902653c70798 Acked-by: Thinh Nguyen Signed-off-by: Wesley Cheng --- drivers/usb/dwc3/core.c | 12 ++++++++++++ drivers/usb/dwc3/core.h | 2 ++ drivers/usb/dwc3/host.c | 3 +++ 3 files changed, 17 insertions(+) diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 3b68e8e45b8b..7ac02339458e 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c @@ -1485,6 +1485,7 @@ static void dwc3_get_properties(struct dwc3 *dwc) u8 tx_thr_num_pkt_prd = 0; u8 tx_max_burst_prd = 0; u8 tx_fifo_resize_max_num; + u16 num_hc_interrupters; const char *usb_psy_name; int ret; @@ -1507,6 +1508,9 @@ static void dwc3_get_properties(struct dwc3 *dwc) */ tx_fifo_resize_max_num = 6; + /* default to a single XHCI interrupter */ + num_hc_interrupters = 1; + dwc->maximum_speed = usb_get_maximum_speed(dev); dwc->max_ssp_rate = usb_get_maximum_ssp_rate(dev); dwc->dr_mode = usb_get_dr_mode(dev); @@ -1558,6 +1562,12 @@ static void dwc3_get_properties(struct dwc3 *dwc) &tx_thr_num_pkt_prd); device_property_read_u8(dev, "snps,tx-max-burst-prd", &tx_max_burst_prd); + device_property_read_u16(dev, "num-hc-interrupters", + &num_hc_interrupters); + /* DWC3 core allowed to have a max of 8 interrupters */ + if (num_hc_interrupters > 8) + num_hc_interrupters = 8; + dwc->do_fifo_resize = device_property_read_bool(dev, "tx-fifo-resize"); if (dwc->do_fifo_resize) @@ -1649,6 +1659,8 @@ static void dwc3_get_properties(struct dwc3 *dwc) dwc->imod_interval = 0; dwc->tx_fifo_resize_max_num = tx_fifo_resize_max_num; + + dwc->num_hc_interrupters = num_hc_interrupters; } /* check whether the core supports IMOD */ diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h index df544ec730d2..a851ea0ea2c6 100644 --- a/drivers/usb/dwc3/core.h +++ b/drivers/usb/dwc3/core.h @@ -1068,6 +1068,7 @@ struct dwc3_scratchpad_array { * @tx_max_burst_prd: max periodic ESS transmit burst size * @tx_fifo_resize_max_num: max number of fifos allocated during txfifo resize * @clear_stall_protocol: endpoint number that requires a delayed status phase + * @num_hc_interrupters: number of host controller interrupters * @hsphy_interface: "utmi" or "ulpi" * @connected: true when we're connected to a host, false otherwise * @softconnect: true when gadget connect is called, false when disconnect runs @@ -1305,6 +1306,7 @@ struct dwc3 { u8 tx_max_burst_prd; u8 tx_fifo_resize_max_num; u8 clear_stall_protocol; + u16 num_hc_interrupters; const char *hsphy_interface; diff --git a/drivers/usb/dwc3/host.c b/drivers/usb/dwc3/host.c index ae189b7a4f8b..940fdaf3bec9 100644 --- a/drivers/usb/dwc3/host.c +++ b/drivers/usb/dwc3/host.c @@ -160,6 +160,9 @@ int dwc3_host_init(struct dwc3 *dwc) if (DWC3_VER_IS_WITHIN(DWC3, ANY, 300A)) props[prop_idx++] = PROPERTY_ENTRY_BOOL("quirk-broken-port-ped"); + props[prop_idx++] = PROPERTY_ENTRY_U16("num-hc-interrupters", + dwc->num_hc_interrupters); + if (prop_idx) { ret = device_create_managed_software_node(&xhci->dev, props, NULL); if (ret) {