Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1632704
| From | Sevak Arakelyan <SEVAK.ARAKELYAN@synopsys.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 7/9] [HSLPM] usb: gadget: composite: Exclude SS Dev Cap Desc |
| Date | 2017-04-28 11:00 +0200 |
| Message-ID | <tB9UT-53z-43@gated-at.bofh.it> (permalink) |
| References | <tB9Lb-4Zj-1@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
From: John Youn <johnyoun@synopsys.com>
Don't send the SuperSpeed USB Device Capability descriptor if
the gadget is not capable of SuperSpeed.
Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Sevak Arakelyan <sevaka@synopsys.com>
---
drivers/usb/gadget/composite.c | 51 +++++++++++++++++++++++-------------------
1 file changed, 28 insertions(+), 23 deletions(-)
diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c
index 49d685ad0da9..abec93ab81ee 100644
--- a/drivers/usb/gadget/composite.c
+++ b/drivers/usb/gadget/composite.c
@@ -607,7 +607,6 @@ static int count_configs(struct usb_composite_dev *cdev, unsigned type)
static int bos_desc(struct usb_composite_dev *cdev)
{
struct usb_ext_cap_descriptor *usb_ext;
- struct usb_ss_cap_descriptor *ss_cap;
struct usb_dcd_config_params dcd_config_params;
struct usb_bos_descriptor *bos = cdev->req->buf;
@@ -633,29 +632,35 @@ static int bos_desc(struct usb_composite_dev *cdev)
* The Superspeed USB Capability descriptor shall be implemented by all
* SuperSpeed devices.
*/
- ss_cap = cdev->req->buf + le16_to_cpu(bos->wTotalLength);
- bos->bNumDeviceCaps++;
- le16_add_cpu(&bos->wTotalLength, USB_DT_USB_SS_CAP_SIZE);
- ss_cap->bLength = USB_DT_USB_SS_CAP_SIZE;
- ss_cap->bDescriptorType = USB_DT_DEVICE_CAPABILITY;
- ss_cap->bDevCapabilityType = USB_SS_CAP_TYPE;
- ss_cap->bmAttributes = 0; /* LTM is not supported yet */
- ss_cap->wSpeedSupported = cpu_to_le16(USB_LOW_SPEED_OPERATION |
- USB_FULL_SPEED_OPERATION |
- USB_HIGH_SPEED_OPERATION |
- USB_5GBPS_OPERATION);
- ss_cap->bFunctionalitySupport = USB_LOW_SPEED_OPERATION;
-
- /* Get Controller configuration */
- if (cdev->gadget->ops->get_config_params)
- cdev->gadget->ops->get_config_params(&dcd_config_params);
- else {
- dcd_config_params.bU1devExitLat = USB_DEFAULT_U1_DEV_EXIT_LAT;
- dcd_config_params.bU2DevExitLat =
- cpu_to_le16(USB_DEFAULT_U2_DEV_EXIT_LAT);
+ if (gadget_is_superspeed(cdev->gadget)) {
+ struct usb_ss_cap_descriptor *ss_cap;
+
+ ss_cap = cdev->req->buf + le16_to_cpu(bos->wTotalLength);
+ bos->bNumDeviceCaps++;
+ le16_add_cpu(&bos->wTotalLength, USB_DT_USB_SS_CAP_SIZE);
+ ss_cap->bLength = USB_DT_USB_SS_CAP_SIZE;
+ ss_cap->bDescriptorType = USB_DT_DEVICE_CAPABILITY;
+ ss_cap->bDevCapabilityType = USB_SS_CAP_TYPE;
+ ss_cap->bmAttributes = 0; /* LTM is not supported yet */
+ ss_cap->wSpeedSupported = cpu_to_le16(USB_LOW_SPEED_OPERATION |
+ USB_FULL_SPEED_OPERATION |
+ USB_HIGH_SPEED_OPERATION |
+ USB_5GBPS_OPERATION);
+ ss_cap->bFunctionalitySupport = USB_LOW_SPEED_OPERATION;
+
+ /* Get Controller configuration */
+ if (cdev->gadget->ops->get_config_params) {
+ cdev->gadget->ops->get_config_params(
+ &dcd_config_params);
+ } else {
+ dcd_config_params.bU1devExitLat =
+ USB_DEFAULT_U1_DEV_EXIT_LAT;
+ dcd_config_params.bU2DevExitLat =
+ cpu_to_le16(USB_DEFAULT_U2_DEV_EXIT_LAT);
+ }
+ ss_cap->bU1devExitLat = dcd_config_params.bU1devExitLat;
+ ss_cap->bU2DevExitLat = dcd_config_params.bU2DevExitLat;
}
- ss_cap->bU1devExitLat = dcd_config_params.bU1devExitLat;
- ss_cap->bU2DevExitLat = dcd_config_params.bU2DevExitLat;
/* The SuperSpeedPlus USB Device Capability descriptor */
if (gadget_is_superspeed_plus(cdev->gadget)) {
--
2.11.0
Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread
[PATCH 0/9] usb: dwc2: gadget: Add LPM functionality Sevak Arakelyan <SEVAK.ARAKELYAN@synopsys.com> - 2017-04-28 10:50 +0200
[PATCH 1/9] usb: dwc2: Fix GLPMCFG... definitions Sevak Arakelyan <SEVAK.ARAKELYAN@synopsys.com> - 2017-04-28 10:50 +0200
[PATCH 2/9] usb: dwc2: Add core parameters for LPM support Sevak Arakelyan <SEVAK.ARAKELYAN@synopsys.com> - 2017-04-28 10:50 +0200
[PATCH 9/9] [HSLPM] usb: dwc2: Enable LPM Sevak Arakelyan <SEVAK.ARAKELYAN@synopsys.com> - 2017-04-28 11:00 +0200
Re: [PATCH 9/9] [HSLPM] usb: dwc2: Enable LPM Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-04-28 11:30 +0200
[PATCH 5/9] usb: dwc2: Enable LPM Transaction Received interrupt. Sevak Arakelyan <SEVAK.ARAKELYAN@synopsys.com> - 2017-04-28 11:00 +0200
[PATCH 3/9] usb: dwc2: gadget: Add functionality to exit from LPM L1 state Sevak Arakelyan <SEVAK.ARAKELYAN@synopsys.com> - 2017-04-28 11:00 +0200
[PATCH 6/9] usb: dwc2: gadget: Configure the core to enable LPM. Sevak Arakelyan <SEVAK.ARAKELYAN@synopsys.com> - 2017-04-28 11:00 +0200
[PATCH 8/9] [HSLPM] usb: gadget: Allow a non-SuperSpeed gadget to support LPM Sevak Arakelyan <SEVAK.ARAKELYAN@synopsys.com> - 2017-04-28 11:00 +0200
[PATCH 4/9] usb: dwc2: gadget: LPM interrupt handler Sevak Arakelyan <SEVAK.ARAKELYAN@synopsys.com> - 2017-04-28 11:00 +0200
[PATCH 7/9] [HSLPM] usb: gadget: composite: Exclude SS Dev Cap Desc Sevak Arakelyan <SEVAK.ARAKELYAN@synopsys.com> - 2017-04-28 11:00 +0200
csiph-web