Received: by 2002:a25:f815:0:0:0:0:0 with SMTP id u21csp2247621ybd; Mon, 24 Jun 2019 03:15:33 -0700 (PDT) X-Google-Smtp-Source: APXvYqydgj5i5NuG7IwpzRuFtJetbOC65MOIU6PRCcA3/r01jeOdtFLfH5vf2rIXK8zvVzaUJosd X-Received: by 2002:a17:902:583:: with SMTP id f3mr83961770plf.137.1561371333419; Mon, 24 Jun 2019 03:15:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561371333; cv=none; d=google.com; s=arc-20160816; b=Xcs1sQNI/4svx+XJyuHWJMx9a+XGZEbTU8gVMWeDLLgVUTMDEy4XXqFR+UEIHdDHQt D6sehBH5XsENS1LDq2Cfbn0JvZreKe90R8QEw2tUsjf0d1dkb03zOp2HkThhCZFZBXDA KeevxI4KPOuL3kOV05YeRlL06YhnVt9bA7blp/bAOek+MELqTrbdKjabIQCxIIe/ZAht X9NWmHa3bpq/VkLkdj1VdbqZs6NvjGddDDrT0HoJYglmbYgI0KhLW8b9SaEtODULFzjS 32UN3oBy3K62bfWoheVwmnqCQ9yVBeFSlUce/65pmJzAT/uNet3/1ExheWlnWx7lRs6C epMQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=5LHjTQbk3T6eydf87EPgVWtwUQlMpi5EGot7Ije/264=; b=fsbyh8f8dHuJanSZWD34eOAsjulyGM3U4z/DG90lfiRjiwd21yKiz4db3KnOBJ0KO3 Xy+Fhx4OQeo1M9o8UK9lNc54G/sHkIBMHq+/5BbXPR3YOqEFDVFxs85/labK8XplDIqk hRGstF60POn4uwm4Ftb8hGibNiYruvHjsH/Xyoj+5dc9cnRMdGEfJ3N6NEVx5CE2774t AwnwktHnzm/ltMHVom8jGhptoZY83kvSLX0SblU/TyCKoWv2MN7Kj/4a2iDDyIprgJUf teVYu2dOkBYdKxKwKghpX40uocMJAq22WtOAOwC+eS6WFjr6Xiew56jKiltAA/ly28XZ 0bdA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ICRkzlBc; 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 e65si9344699pgc.454.2019.06.24.03.15.17; Mon, 24 Jun 2019 03:15:33 -0700 (PDT) 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; dkim=pass header.i=@kernel.org header.s=default header.b=ICRkzlBc; 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 S1729421AbfFXKCn (ORCPT + 99 others); Mon, 24 Jun 2019 06:02:43 -0400 Received: from mail.kernel.org ([198.145.29.99]:33846 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729407AbfFXKCg (ORCPT ); Mon, 24 Jun 2019 06:02:36 -0400 Received: from localhost (f4.8f.5177.ip4.static.sl-reverse.com [119.81.143.244]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 24416213F2; Mon, 24 Jun 2019 10:02:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1561370555; bh=thTpi9PNfAcGCFlW1lMEAJawxqzpp0uS7r3uAR2VxWg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ICRkzlBcmFm5LT9bXdzgZlDGcFRCwWBJrDoBgj+cSA48sUkvDoz8gDRVaZzZp8Bsm Q4ViBGjVrlA275C3wC34SZyN6ttEJ8qgptST2M/7iCWTh5acCjZXVCnaBT7vU/C6it ArXnMs2HQtGs3gOZU2k6TB3/VHcoRppHQcBJGNH4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Mathias Nyman Subject: [PATCH 4.19 18/90] xhci: detect USB 3.2 capable host controllers correctly Date: Mon, 24 Jun 2019 17:56:08 +0800 Message-Id: <20190624092315.210468511@linuxfoundation.org> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190624092313.788773607@linuxfoundation.org> References: <20190624092313.788773607@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Mathias Nyman commit ddd57980a0fde30f7b5d14b888a2cc84d01610e8 upstream. USB 3.2 capability in a host can be detected from the xHCI Supported Protocol Capability major and minor revision fields. If major is 0x3 and minor 0x20 then the host is USB 3.2 capable. For USB 3.2 capable hosts set the root hub lane count to 2. The Major Revision and Minor Revision fields contain a BCD version number. The value of the Major Revision field is JJh and the value of the Minor Revision field is MNh for version JJ.M.N, where JJ = major revision number, M - minor version number, N = sub-minor version number, e.g. version 3.1 is represented with a value of 0310h. Also fix the extra whitespace printed out when announcing regular SuperSpeed hosts. Cc: # v4.18+ Signed-off-by: Mathias Nyman Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/xhci.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -5030,16 +5030,26 @@ int xhci_gen_setup(struct usb_hcd *hcd, } else { /* * Some 3.1 hosts return sbrn 0x30, use xhci supported protocol - * minor revision instead of sbrn + * minor revision instead of sbrn. Minor revision is a two digit + * BCD containing minor and sub-minor numbers, only show minor. */ - minor_rev = xhci->usb3_rhub.min_rev; - if (minor_rev) { + minor_rev = xhci->usb3_rhub.min_rev / 0x10; + + switch (minor_rev) { + case 2: + hcd->speed = HCD_USB32; + hcd->self.root_hub->speed = USB_SPEED_SUPER_PLUS; + hcd->self.root_hub->rx_lanes = 2; + hcd->self.root_hub->tx_lanes = 2; + break; + case 1: hcd->speed = HCD_USB31; hcd->self.root_hub->speed = USB_SPEED_SUPER_PLUS; + break; } - xhci_info(xhci, "Host supports USB 3.%x %s SuperSpeed\n", + xhci_info(xhci, "Host supports USB 3.%x %sSuperSpeed\n", minor_rev, - minor_rev ? "Enhanced" : ""); + minor_rev ? "Enhanced " : ""); xhci->usb3_rhub.hcd = hcd; /* xHCI private pointer was set in xhci_pci_probe for the second