usb: ch9: Add USB 3.2 SSP attributes
authorThinh Nguyen <Thinh.Nguyen@synopsys.com>
Thu, 14 Jan 2021 02:52:46 +0000 (18:52 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 18 Jan 2021 17:38:47 +0000 (18:38 +0100)
In preparation for USB 3.2 dual-lane support, add sublink speed
attribute macros and enum usb_ssp_rate. A USB device that operates in
SuperSpeed Plus may operate at different speed and lane count. These
additional macros and enum values help specifying that.

Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Link: https://lore.kernel.org/r/ae9293ebd63a29f2a2035054753534d9eb123d74.1610592135.git.Thinh.Nguyen@synopsys.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
include/linux/usb/ch9.h
include/uapi/linux/usb/ch9.h

index 604c6c5..86c5090 100644 (file)
 #include <linux/device.h>
 #include <uapi/linux/usb/ch9.h>
 
+/* USB 3.2 SuperSpeed Plus phy signaling rate generation and lane count */
+
+enum usb_ssp_rate {
+       USB_SSP_GEN_UNKNOWN = 0,
+       USB_SSP_GEN_2x1,
+       USB_SSP_GEN_1x2,
+       USB_SSP_GEN_2x2,
+};
+
 /**
  * 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
index 0f865ae..17ce561 100644 (file)
@@ -968,9 +968,22 @@ struct usb_ssp_cap_descriptor {
        __le32 bmSublinkSpeedAttr[1]; /* list of sublink speed attrib entries */
 #define USB_SSP_SUBLINK_SPEED_SSID     (0xf)           /* sublink speed ID */
 #define USB_SSP_SUBLINK_SPEED_LSE      (0x3 << 4)      /* Lanespeed exponent */
+#define USB_SSP_SUBLINK_SPEED_LSE_BPS          0
+#define USB_SSP_SUBLINK_SPEED_LSE_KBPS         1
+#define USB_SSP_SUBLINK_SPEED_LSE_MBPS         2
+#define USB_SSP_SUBLINK_SPEED_LSE_GBPS         3
+
 #define USB_SSP_SUBLINK_SPEED_ST       (0x3 << 6)      /* Sublink type */
+#define USB_SSP_SUBLINK_SPEED_ST_SYM_RX                0
+#define USB_SSP_SUBLINK_SPEED_ST_ASYM_RX       1
+#define USB_SSP_SUBLINK_SPEED_ST_SYM_TX                2
+#define USB_SSP_SUBLINK_SPEED_ST_ASYM_TX       3
+
 #define USB_SSP_SUBLINK_SPEED_RSVD     (0x3f << 8)     /* Reserved */
 #define USB_SSP_SUBLINK_SPEED_LP       (0x3 << 14)     /* Link protocol */
+#define USB_SSP_SUBLINK_SPEED_LP_SS            0
+#define USB_SSP_SUBLINK_SPEED_LP_SSP           1
+
 #define USB_SSP_SUBLINK_SPEED_LSM      (0xff << 16)    /* Lanespeed mantissa */
 } __attribute__((packed));