mbox series

[v6,00/11] usb: Support USB 3.2 multi-lanes

Message ID cover.1610592135.git.Thinh.Nguyen@synopsys.com
Headers show
Series usb: Support USB 3.2 multi-lanes | expand

Message

Thinh Nguyen Jan. 14, 2021, 2:52 a.m. UTC
A USB SuperSpeed Plus device may operate at different speed and lane count
(i.e. gen2x2, gen1x2, or gen2x1). The DWC_usb32 IP supports SuperSpeed Plus
gen2x2. To support this, this series update a few things to the USB gadget
stack and dwc3 driver:

* Accept and parse new maximum_speed devicetree property strings
* Introduce enum usb_ssp_rate to describe the speed in SuperSpeed Plus genXxY
* Capture the connected and max supported usb_ssp_rate
* Report the device sublink speeds base on the usb_ssp_rate in the BOS
  descriptor
* Introduce gadget ops to select SuperSpeed Plus various transfer rate and lane
  count
* Update dwc3 driver to support the above changes

Changes in v6:
 - Rebase on Greg's usb-testing branch
 - Update the cover letter and title
   * Previous version 5: https://lore.kernel.org/linux-usb/cover.1601001199.git.Thinh.Nguyen@synopsys.com/
 - To simplify things, use usb_ssp_rate enum to specify the signaling rate
   generation and lane count instead of separately tracking them.
 - Convert the sublink speed attributes to macros and move it to uapi
 - Remove usb_sublink_speed struct
 - Remove "usb: dwc3: gadget: Report sublink speed capability"
 - Update dwc3 to support the new changes

Changes in v5:
 - Rebase on Felipe's testing/next branch
 - Changed Signed-off-by email to match From: email header
 - Add Rob's Reviewed-by

Changes in v4:
 - Instead of using a single function to parse "maximum-speed" property for
   speed, gen X, and number of lanes, split those tasks to separate common
   functions
 - Revise DWC3 driver to use those new common functions
 - Fix checkpatch warnings for using "unsigned" rather than "unsigned int" and
   missing identifier name in udc_set_num_lanes_and_speed gadget ops

Changes in v3:
 - Remove "num-lanes" and "lane-speed-mantissa-gbps" common properties
 - Remove "num-lanes" and "lane-speed-mantissa-gbps" properties validation in dwc3
 - Update "maximum-speed" to support variations of SSP Gen X x Y
 - Update common function to parse new strings for "maximum-speed"
 - Update commit messages for the new changes

Changes in v2:
 - Move usb_sublink_speed attribute struct and enum to include/linux/usb/ch9.h
 - Use "num-lanes" and "lane-speed-mantissa-gbps" as common properties instead
 - Add common functions to get num-lanes and lsm properties
 - Fix missing gen1x2 sublink speed attribute check report in dwc3


Thinh Nguyen (11):
  usb: ch9: Add USB 3.2 SSP attributes
  usb: gadget: composite: Use SSP sublink speed macros
  usb: gadget: Introduce SSP rates and lanes
  usb: gadget: Introduce udc_set_ssp_rate() for SSP
  usb: gadget: composite: Report various SSP sublink speeds
  dt-binding: usb: Include USB SSP rates in GenXxY
  usb: common: Parse for USB SSP genXxY
  usb: dwc3: core: Check maximum_speed SSP genXxY
  usb: dwc3: gadget: Implement setting of SSP rate
  usb: dwc3: gadget: Track connected SSP rate and lane count
  usb: dwc3: gadget: Set speed only up to the max supported

 .../devicetree/bindings/usb/usb.yaml          |  3 +
 drivers/usb/common/common.c                   | 26 +++++-
 drivers/usb/dwc3/core.c                       | 37 +++++++++
 drivers/usb/dwc3/core.h                       |  9 ++
 drivers/usb/dwc3/gadget.c                     | 80 +++++++++++++++++-
 drivers/usb/gadget/composite.c                | 83 +++++++++++++------
 drivers/usb/gadget/udc/core.c                 | 16 ++--
 include/linux/usb/ch9.h                       | 20 +++++
 include/linux/usb/gadget.h                    | 11 +++
 include/uapi/linux/usb/ch9.h                  | 13 +++
 10 files changed, 263 insertions(+), 35 deletions(-)


base-commit: 67004e130aafad4c9e0ad3fff9cf67227b6347be

Comments

Greg Kroah-Hartman Jan. 18, 2021, 5:42 p.m. UTC | #1
On Wed, Jan 13, 2021 at 06:52:37PM -0800, Thinh Nguyen wrote:
> A USB SuperSpeed Plus device may operate at different speed and lane count

> (i.e. gen2x2, gen1x2, or gen2x1). The DWC_usb32 IP supports SuperSpeed Plus

> gen2x2. To support this, this series update a few things to the USB gadget

> stack and dwc3 driver:

> 

> * Accept and parse new maximum_speed devicetree property strings

> * Introduce enum usb_ssp_rate to describe the speed in SuperSpeed Plus genXxY

> * Capture the connected and max supported usb_ssp_rate

> * Report the device sublink speeds base on the usb_ssp_rate in the BOS

>   descriptor

> * Introduce gadget ops to select SuperSpeed Plus various transfer rate and lane

>   count

> * Update dwc3 driver to support the above changes


I've taken the first 5 patches now, I'll wait for the DT maintainers and
dwc3 maintainers to review the rest before I can take them.  Feel free
to rebase and resend the smaller set of patches if that makes it easier
for them to review.

thanks,

greg k-h
Thinh Nguyen Jan. 20, 2021, 1:38 a.m. UTC | #2
Greg Kroah-Hartman wrote:
> On Wed, Jan 13, 2021 at 06:52:37PM -0800, Thinh Nguyen wrote:

>> A USB SuperSpeed Plus device may operate at different speed and lane count

>> (i.e. gen2x2, gen1x2, or gen2x1). The DWC_usb32 IP supports SuperSpeed Plus

>> gen2x2. To support this, this series update a few things to the USB gadget

>> stack and dwc3 driver:

>>

>> * Accept and parse new maximum_speed devicetree property strings

>> * Introduce enum usb_ssp_rate to describe the speed in SuperSpeed Plus genXxY

>> * Capture the connected and max supported usb_ssp_rate

>> * Report the device sublink speeds base on the usb_ssp_rate in the BOS

>>   descriptor

>> * Introduce gadget ops to select SuperSpeed Plus various transfer rate and lane

>>   count

>> * Update dwc3 driver to support the above changes

> I've taken the first 5 patches now, I'll wait for the DT maintainers and

> dwc3 maintainers to review the rest before I can take them.  Feel free

> to rebase and resend the smaller set of patches if that makes it easier

> for them to review.

>

> thanks,

>

> greg k-h


Just rebased and resent.

Thanks!
Thinh