You've already forked linux-rockchip
mirror of
https://github.com/armbian/linux-rockchip.git
synced 2026-01-06 11:08:10 -08:00
Revert "usb: core: Track SuperSpeed Plus GenXxY"
This reverts commit95b9f1e392which is commit0299809be4upstream. It breaks the Android ABI and isn't needed at all, upstream added it to reduce some fuzz on some later commits, so it can be safely dropped for now. Bug: 161946584 Change-Id: Ie87eebee9b355161465fbae86fc6c35825a46e44 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
@@ -2742,7 +2742,6 @@ int usb_add_hcd(struct usb_hcd *hcd,
|
||||
|
||||
rhdev->rx_lanes = 1;
|
||||
rhdev->tx_lanes = 1;
|
||||
rhdev->ssp_rate = USB_SSP_GEN_UNKNOWN;
|
||||
|
||||
switch (hcd->speed) {
|
||||
case HCD_USB11:
|
||||
@@ -2760,11 +2759,8 @@ int usb_add_hcd(struct usb_hcd *hcd,
|
||||
case HCD_USB32:
|
||||
rhdev->rx_lanes = 2;
|
||||
rhdev->tx_lanes = 2;
|
||||
rhdev->ssp_rate = USB_SSP_GEN_2x2;
|
||||
rhdev->speed = USB_SPEED_SUPER_PLUS;
|
||||
break;
|
||||
fallthrough;
|
||||
case HCD_USB31:
|
||||
rhdev->ssp_rate = USB_SSP_GEN_2x1;
|
||||
rhdev->speed = USB_SPEED_SUPER_PLUS;
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
#include <linux/pm_qos.h>
|
||||
#include <linux/kobject.h>
|
||||
|
||||
#include <linux/bitfield.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
@@ -2692,81 +2691,6 @@ out_authorized:
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* get_port_ssp_rate - Match the extended port status to SSP rate
|
||||
* @hdev: The hub device
|
||||
* @ext_portstatus: extended port status
|
||||
*
|
||||
* Match the extended port status speed id to the SuperSpeed Plus sublink speed
|
||||
* capability attributes. Base on the number of connected lanes and speed,
|
||||
* return the corresponding enum usb_ssp_rate.
|
||||
*/
|
||||
static enum usb_ssp_rate get_port_ssp_rate(struct usb_device *hdev,
|
||||
u32 ext_portstatus)
|
||||
{
|
||||
struct usb_ssp_cap_descriptor *ssp_cap = hdev->bos->ssp_cap;
|
||||
u32 attr;
|
||||
u8 speed_id;
|
||||
u8 ssac;
|
||||
u8 lanes;
|
||||
int i;
|
||||
|
||||
if (!ssp_cap)
|
||||
goto out;
|
||||
|
||||
speed_id = ext_portstatus & USB_EXT_PORT_STAT_RX_SPEED_ID;
|
||||
lanes = USB_EXT_PORT_RX_LANES(ext_portstatus) + 1;
|
||||
|
||||
ssac = le32_to_cpu(ssp_cap->bmAttributes) &
|
||||
USB_SSP_SUBLINK_SPEED_ATTRIBS;
|
||||
|
||||
for (i = 0; i <= ssac; i++) {
|
||||
u8 ssid;
|
||||
|
||||
attr = le32_to_cpu(ssp_cap->bmSublinkSpeedAttr[i]);
|
||||
ssid = FIELD_GET(USB_SSP_SUBLINK_SPEED_SSID, attr);
|
||||
if (speed_id == ssid) {
|
||||
u16 mantissa;
|
||||
u8 lse;
|
||||
u8 type;
|
||||
|
||||
/*
|
||||
* Note: currently asymmetric lane types are only
|
||||
* applicable for SSIC operate in SuperSpeed protocol
|
||||
*/
|
||||
type = FIELD_GET(USB_SSP_SUBLINK_SPEED_ST, attr);
|
||||
if (type == USB_SSP_SUBLINK_SPEED_ST_ASYM_RX ||
|
||||
type == USB_SSP_SUBLINK_SPEED_ST_ASYM_TX)
|
||||
goto out;
|
||||
|
||||
if (FIELD_GET(USB_SSP_SUBLINK_SPEED_LP, attr) !=
|
||||
USB_SSP_SUBLINK_SPEED_LP_SSP)
|
||||
goto out;
|
||||
|
||||
lse = FIELD_GET(USB_SSP_SUBLINK_SPEED_LSE, attr);
|
||||
mantissa = FIELD_GET(USB_SSP_SUBLINK_SPEED_LSM, attr);
|
||||
|
||||
/* Convert to Gbps */
|
||||
for (; lse < USB_SSP_SUBLINK_SPEED_LSE_GBPS; lse++)
|
||||
mantissa /= 1000;
|
||||
|
||||
if (mantissa >= 10 && lanes == 1)
|
||||
return USB_SSP_GEN_2x1;
|
||||
|
||||
if (mantissa >= 10 && lanes == 2)
|
||||
return USB_SSP_GEN_2x2;
|
||||
|
||||
if (mantissa >= 5 && lanes == 2)
|
||||
return USB_SSP_GEN_1x2;
|
||||
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
out:
|
||||
return USB_SSP_GEN_UNKNOWN;
|
||||
}
|
||||
|
||||
/*
|
||||
* Return 1 if port speed is SuperSpeedPlus, 0 otherwise or if the
|
||||
* capability couldn't be checked.
|
||||
@@ -2954,11 +2878,9 @@ static int hub_port_wait_reset(struct usb_hub *hub, int port1,
|
||||
/* extended portstatus Rx and Tx lane count are zero based */
|
||||
udev->rx_lanes = USB_EXT_PORT_RX_LANES(ext_portstatus) + 1;
|
||||
udev->tx_lanes = USB_EXT_PORT_TX_LANES(ext_portstatus) + 1;
|
||||
udev->ssp_rate = get_port_ssp_rate(hub->hdev, ext_portstatus);
|
||||
} else {
|
||||
udev->rx_lanes = 1;
|
||||
udev->tx_lanes = 1;
|
||||
udev->ssp_rate = USB_SSP_GEN_UNKNOWN;
|
||||
}
|
||||
if (hub_is_wusb(hub))
|
||||
udev->speed = USB_SPEED_WIRELESS;
|
||||
|
||||
@@ -581,7 +581,6 @@ struct usb3_lpm_parameters {
|
||||
* @speed: device speed: high/full/low (or error)
|
||||
* @rx_lanes: number of rx lanes in use, USB 3.2 adds dual-lane support
|
||||
* @tx_lanes: number of tx lanes in use, USB 3.2 adds dual-lane support
|
||||
* @ssp_rate: SuperSpeed Plus phy signaling rate and lane count
|
||||
* @tt: Transaction Translator info; used with low/full speed dev, highspeed hub
|
||||
* @ttport: device port on that tt hub
|
||||
* @toggle: one bit for each endpoint, with ([0] = IN, [1] = OUT) endpoints
|
||||
@@ -658,7 +657,6 @@ struct usb_device {
|
||||
enum usb_device_speed speed;
|
||||
unsigned int rx_lanes;
|
||||
unsigned int tx_lanes;
|
||||
enum usb_ssp_rate ssp_rate;
|
||||
|
||||
struct usb_tt *tt;
|
||||
int ttport;
|
||||
|
||||
Reference in New Issue
Block a user