usb: gadget: composite: Use SSP sublink speed macros

Use SuperSpeed Plus sublink speed macros to fill the BOS descriptor
sublink speed attributes in the composite driver. They're
self-documented so we can remove some of the comments, and this helps
with readability by removing the magic numbers.

Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Link: https://lore.kernel.org/r/6f74d446aa164f66fbe4161e28547e28851f6a02.1610592135.git.Thinh.Nguyen@synopsys.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Thinh Nguyen 2021-01-13 18:52:54 -08:00 коммит произвёл Greg Kroah-Hartman
Родитель f2fc9ff28d
Коммит 121fc3ac2f
1 изменённых файлов: 24 добавлений и 21 удалений

Просмотреть файл

@ -13,6 +13,7 @@
#include <linux/module.h>
#include <linux/device.h>
#include <linux/utsname.h>
#include <linux/bitfield.h>
#include <linux/usb/composite.h>
#include <linux/usb/otg.h>
@ -749,32 +750,34 @@ static int bos_desc(struct usb_composite_dev *cdev)
ssp_cap->bReserved = 0;
ssp_cap->wReserved = 0;
/* SSAC = 1 (2 attributes) */
ssp_cap->bmAttributes = cpu_to_le32(1);
ssp_cap->bmAttributes =
cpu_to_le32(FIELD_PREP(USB_SSP_SUBLINK_SPEED_ATTRIBS, 1) |
FIELD_PREP(USB_SSP_SUBLINK_SPEED_IDS, 0));
/* Min RX/TX Lane Count = 1 */
ssp_cap->wFunctionalitySupport =
cpu_to_le16((1 << 8) | (1 << 12));
cpu_to_le16(FIELD_PREP(USB_SSP_MIN_SUBLINK_SPEED_ATTRIBUTE_ID, 0) |
FIELD_PREP(USB_SSP_MIN_RX_LANE_COUNT, 1) |
FIELD_PREP(USB_SSP_MIN_TX_LANE_COUNT, 1));
/*
* bmSublinkSpeedAttr[0]:
* ST = Symmetric, RX
* LSE = 3 (Gbps)
* LP = 1 (SuperSpeedPlus)
* LSM = 10 (10 Gbps)
*/
ssp_cap->bmSublinkSpeedAttr[0] =
cpu_to_le32((3 << 4) | (1 << 14) | (0xa << 16));
/*
* bmSublinkSpeedAttr[1] =
* ST = Symmetric, TX
* LSE = 3 (Gbps)
* LP = 1 (SuperSpeedPlus)
* LSM = 10 (10 Gbps)
*/
cpu_to_le32(FIELD_PREP(USB_SSP_SUBLINK_SPEED_SSID, 0) |
FIELD_PREP(USB_SSP_SUBLINK_SPEED_LSE,
USB_SSP_SUBLINK_SPEED_LSE_GBPS) |
FIELD_PREP(USB_SSP_SUBLINK_SPEED_ST,
USB_SSP_SUBLINK_SPEED_ST_SYM_RX) |
FIELD_PREP(USB_SSP_SUBLINK_SPEED_LP,
USB_SSP_SUBLINK_SPEED_LP_SSP) |
FIELD_PREP(USB_SSP_SUBLINK_SPEED_LSM, 10));
ssp_cap->bmSublinkSpeedAttr[1] =
cpu_to_le32((3 << 4) | (1 << 14) |
(0xa << 16) | (1 << 7));
cpu_to_le32(FIELD_PREP(USB_SSP_SUBLINK_SPEED_SSID, 0) |
FIELD_PREP(USB_SSP_SUBLINK_SPEED_LSE,
USB_SSP_SUBLINK_SPEED_LSE_GBPS) |
FIELD_PREP(USB_SSP_SUBLINK_SPEED_ST,
USB_SSP_SUBLINK_SPEED_ST_SYM_TX) |
FIELD_PREP(USB_SSP_SUBLINK_SPEED_LP,
USB_SSP_SUBLINK_SPEED_LP_SSP) |
FIELD_PREP(USB_SSP_SUBLINK_SPEED_LSM, 10));
}
return le16_to_cpu(bos->wTotalLength);