mbox series

[V10,0/8] Tegra XUSB gadget driver support

Message ID 1569227152-3030-1-git-send-email-nkristam@nvidia.com (mailing list archive)
Headers show
Series Tegra XUSB gadget driver support | expand

Message

Nagarjuna Kristam Sept. 23, 2019, 8:25 a.m. UTC
Patches 1-3 are phy driver changes to add support for device
mode.
Patches 4-7 are changes related to XUSB device mode
controller driver.
Patch 8 is to enable drivers for XUDC support in defconfig

Test Steps(USB 2.0):
- Enable "USB Gadget precomposed configurations" in defconfig
- Build, flash and boot Jetson TX1
- Connect Jetson TX1 and Ubuntu device using USB A to Micro B
  cable
- After boot on Jetson TX1 terminal usb0 network device should be
  enumerated
- Assign static ip to usb0 on Jetson TX1 and corresponding net
  device on ubuntu
- Run ping test and transfer test(used scp) to check data transfer
  communication

SS mode is verified by enabling Type A port as peripheral
---
v10:
* Patches 1,2,4,5,7,8 - No changes.
* Patch 3 has braces added to one single line else condition.
* Patch 6 has update on compatible string as per suggestion from Chunfeng.
---
v9:
* Patches 1,2,3,4,5 - No changes.
* Patch 6 has update on compatible string as per suggestion from Chunfeng.
* Patch 7 has comment fixes as suggested by Chunfeng.
* Patch 8 has CONFIG_USB_GPIO enabled as module additionally.
---
v8:
* Patches 1,2,3,4,5,8 - No changes.
* Patch 6 has update on compatible string as per change done in [1].
* Patch 7 has issue fix, where device mode didnot got enabled after resume
  from suspend.
---
v7:
* Patches 1,2,3,4,5,6,8 - No changes.
* Patch 7 - Comments from Balbi and Chunfun adrresed.
  Added COMPILE_TEST in Kconfig and updated dependencies.
---
v6:
* Patches 1,2,3,7,8 - No changes.
* Patch 4,5,6 - Comments from Rob addressed, updated usb connector driver
  compatibility string.
---
v5:
* Patches 1-3 - Commit subject updated as per inputs from Thierry.
* Patch 4 - Added reg-names used on Tegra210 in the bindings doc
* Enabled xudc driver as module instead of part of kernel in patch 8.
* Patched 5-8 - No changes.
---
v4:
* patch 1 - no changes.
* corrected companion device search based on inputs from Thierry in patch 2.
* removed unneeded dev variable and corrected value read in
  tegra210_utmi_port_reset function in patch 3.
* dt binding doc and dtb files are corrected for alignments.
  Replaced extcon-usb-gpio with usb role switch.
* Added support for USB role switch instead of extcon-usb-gpio and other minor
  comments as suggested by Chunfeng.
* Enabled xudc driver as module instead of part of kernel in patch 8.
---
V3:
* Rebased patch 1 to top of tree.
* Fixed bug in patch 2, where xudc interrupts dont get generated if USB host
  mode fails to probe. Moved fake port detection logic to generic xusb.c. fake
  usb port data is updated based on soc flag need_fake_usb3_port.
* Added extra lines whereever necessary to make code more readable in patch 3
  and 7.
* dt binding doc is corrected for typos and extcon references. Also added
  details for clocks and removed xusb_ references to clock and power-domain
  names and accordingly patch 5 is updated.
* removed avdd-pll-utmip-supply in patch 6, as its now part of padctl driver.
* Patch 8 has no changes.
---
V2:
* Patches 1-3 are new patches in this series, which splits unified features
  patch to speprated features and removes need of port-fake entry in DT.
* Patch 4 is re-arragend dt-bindings patch which incorporates previous
  patch comments to sort DT entries alphabetically, addresses name changes
  and PM domain details added.
* Patch 5-6 are re-arranged DT patches with major changes - sort entries
  alphabetically, and adds clock names.
* Patch 7 is UDC driver tegra XUSB device mode controller with major
  changes - remove un-used module params, lockinng for device_mode flag,
  moving un-needed info logs to debug level, making changes feature flag
  dependent rather than SOC based macros and other error handling in probe.
* Patch 8 has no changes.

Nagarjuna Kristam (8):
  phy: tegra: xusb: Add XUSB dual mode support on Tegra210
  phy: tegra: xusb: Add usb3 port fake support on Tegra210
  phy: tegra: xusb: Add vbus override support on Tegra210
  dt-bindings: usb: Add NVIDIA Tegra XUSB device mode controller binding
  arm64: tegra: Add xudc node for Tegra210
  arm64: tegra: Enable xudc on Jetson TX1
  usb: gadget: Add UDC driver for tegra XUSB device mode controller
  arm64: defconfig: Enable tegra XUDC support

 .../devicetree/bindings/usb/nvidia,tegra-xudc.txt  |  110 +
 arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi     |   31 +-
 arch/arm64/boot/dts/nvidia/tegra210.dtsi           |   19 +
 arch/arm64/configs/defconfig                       |    2 +
 drivers/phy/tegra/xusb-tegra210.c                  |  134 +-
 drivers/phy/tegra/xusb.c                           |   87 +
 drivers/phy/tegra/xusb.h                           |    4 +
 drivers/usb/gadget/udc/Kconfig                     |   11 +
 drivers/usb/gadget/udc/Makefile                    |    1 +
 drivers/usb/gadget/udc/tegra-xudc.c                | 3787 ++++++++++++++++++++
 include/linux/phy/tegra/xusb.h                     |    4 +-
 11 files changed, 4186 insertions(+), 4 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/usb/nvidia,tegra-xudc.txt
 create mode 100644 drivers/usb/gadget/udc/tegra-xudc.c

Comments

Thierry Reding Sept. 26, 2019, 9:04 a.m. UTC | #1
On Mon, Sep 23, 2019 at 01:55:44PM +0530, Nagarjuna Kristam wrote:
> Patches 1-3 are phy driver changes to add support for device
> mode.
> Patches 4-7 are changes related to XUSB device mode
> controller driver.
> Patch 8 is to enable drivers for XUDC support in defconfig
> 
> Test Steps(USB 2.0):
> - Enable "USB Gadget precomposed configurations" in defconfig
> - Build, flash and boot Jetson TX1
> - Connect Jetson TX1 and Ubuntu device using USB A to Micro B
>   cable
> - After boot on Jetson TX1 terminal usb0 network device should be
>   enumerated
> - Assign static ip to usb0 on Jetson TX1 and corresponding net
>   device on ubuntu
> - Run ping test and transfer test(used scp) to check data transfer
>   communication
> 
> SS mode is verified by enabling Type A port as peripheral
> ---
> v10:
> * Patches 1,2,4,5,7,8 - No changes.
> * Patch 3 has braces added to one single line else condition.
> * Patch 6 has update on compatible string as per suggestion from Chunfeng.
> ---
> v9:
> * Patches 1,2,3,4,5 - No changes.
> * Patch 6 has update on compatible string as per suggestion from Chunfeng.
> * Patch 7 has comment fixes as suggested by Chunfeng.
> * Patch 8 has CONFIG_USB_GPIO enabled as module additionally.
> ---
> v8:
> * Patches 1,2,3,4,5,8 - No changes.
> * Patch 6 has update on compatible string as per change done in [1].
> * Patch 7 has issue fix, where device mode didnot got enabled after resume
>   from suspend.
> ---
> v7:
> * Patches 1,2,3,4,5,6,8 - No changes.
> * Patch 7 - Comments from Balbi and Chunfun adrresed.
>   Added COMPILE_TEST in Kconfig and updated dependencies.
> ---
> v6:
> * Patches 1,2,3,7,8 - No changes.
> * Patch 4,5,6 - Comments from Rob addressed, updated usb connector driver
>   compatibility string.
> ---
> v5:
> * Patches 1-3 - Commit subject updated as per inputs from Thierry.
> * Patch 4 - Added reg-names used on Tegra210 in the bindings doc
> * Enabled xudc driver as module instead of part of kernel in patch 8.
> * Patched 5-8 - No changes.
> ---
> v4:
> * patch 1 - no changes.
> * corrected companion device search based on inputs from Thierry in patch 2.
> * removed unneeded dev variable and corrected value read in
>   tegra210_utmi_port_reset function in patch 3.
> * dt binding doc and dtb files are corrected for alignments.
>   Replaced extcon-usb-gpio with usb role switch.
> * Added support for USB role switch instead of extcon-usb-gpio and other minor
>   comments as suggested by Chunfeng.
> * Enabled xudc driver as module instead of part of kernel in patch 8.
> ---
> V3:
> * Rebased patch 1 to top of tree.
> * Fixed bug in patch 2, where xudc interrupts dont get generated if USB host
>   mode fails to probe. Moved fake port detection logic to generic xusb.c. fake
>   usb port data is updated based on soc flag need_fake_usb3_port.
> * Added extra lines whereever necessary to make code more readable in patch 3
>   and 7.
> * dt binding doc is corrected for typos and extcon references. Also added
>   details for clocks and removed xusb_ references to clock and power-domain
>   names and accordingly patch 5 is updated.
> * removed avdd-pll-utmip-supply in patch 6, as its now part of padctl driver.
> * Patch 8 has no changes.
> ---
> V2:
> * Patches 1-3 are new patches in this series, which splits unified features
>   patch to speprated features and removes need of port-fake entry in DT.
> * Patch 4 is re-arragend dt-bindings patch which incorporates previous
>   patch comments to sort DT entries alphabetically, addresses name changes
>   and PM domain details added.
> * Patch 5-6 are re-arranged DT patches with major changes - sort entries
>   alphabetically, and adds clock names.
> * Patch 7 is UDC driver tegra XUSB device mode controller with major
>   changes - remove un-used module params, lockinng for device_mode flag,
>   moving un-needed info logs to debug level, making changes feature flag
>   dependent rather than SOC based macros and other error handling in probe.
> * Patch 8 has no changes.
> 
> Nagarjuna Kristam (8):
>   phy: tegra: xusb: Add XUSB dual mode support on Tegra210
>   phy: tegra: xusb: Add usb3 port fake support on Tegra210
>   phy: tegra: xusb: Add vbus override support on Tegra210
>   dt-bindings: usb: Add NVIDIA Tegra XUSB device mode controller binding
>   arm64: tegra: Add xudc node for Tegra210
>   arm64: tegra: Enable xudc on Jetson TX1
>   usb: gadget: Add UDC driver for tegra XUSB device mode controller
>   arm64: defconfig: Enable tegra XUDC support
> 
>  .../devicetree/bindings/usb/nvidia,tegra-xudc.txt  |  110 +
>  arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi     |   31 +-
>  arch/arm64/boot/dts/nvidia/tegra210.dtsi           |   19 +
>  arch/arm64/configs/defconfig                       |    2 +
>  drivers/phy/tegra/xusb-tegra210.c                  |  134 +-
>  drivers/phy/tegra/xusb.c                           |   87 +
>  drivers/phy/tegra/xusb.h                           |    4 +
>  drivers/usb/gadget/udc/Kconfig                     |   11 +
>  drivers/usb/gadget/udc/Makefile                    |    1 +
>  drivers/usb/gadget/udc/tegra-xudc.c                | 3787 ++++++++++++++++++++
>  include/linux/phy/tegra/xusb.h                     |    4 +-
>  11 files changed, 4186 insertions(+), 4 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/usb/nvidia,tegra-xudc.txt
>  create mode 100644 drivers/usb/gadget/udc/tegra-xudc.c

Hi Felipe, Kishon,

since the DT bindings have been acked by Rob, I plan on applying the DTS
changes of the above once v5.4-rc1 is release. Do you have any remaining
concerns about the UDC or PHY patches, respectively?

Thierry
Thierry Reding Oct. 14, 2019, 10:02 a.m. UTC | #2
On Mon, Sep 23, 2019 at 01:55:44PM +0530, Nagarjuna Kristam wrote:
> Patches 1-3 are phy driver changes to add support for device
> mode.
> Patches 4-7 are changes related to XUSB device mode
> controller driver.
> Patch 8 is to enable drivers for XUDC support in defconfig
> 
> Test Steps(USB 2.0):
> - Enable "USB Gadget precomposed configurations" in defconfig
> - Build, flash and boot Jetson TX1
> - Connect Jetson TX1 and Ubuntu device using USB A to Micro B
>   cable
> - After boot on Jetson TX1 terminal usb0 network device should be
>   enumerated
> - Assign static ip to usb0 on Jetson TX1 and corresponding net
>   device on ubuntu
> - Run ping test and transfer test(used scp) to check data transfer
>   communication

Hi Felipe, Kishon, Greg,

Patches 1-3 provide new API that is required by patch 7, so I think
patches 1, 2, 3, 4 and 7 should probably all go through a single tree to
avoid having to model the dependencies using stable branches.

Kishon, patches 1-3 have gone through several rounds of review already,
but do you have any remaining concerns on them? If not, it'd be great if
you could ack them. Felipe and Greg could then pick them up along with
patches 4 and 7 into the USB tree.

Felipe, Greg, does that sound like a reasonable plan?

I should also mention that while waiting for review, Nagarjuna has been
able to extend support for the XUDC driver to Tegra186 but has so far
been holding back on sending them out so as to not needlessly hold up
progress on this series. However, given the interdependencies, I've come
to think that it may be preferable to merge everything in one go instead
of revisiting this in a couple of weeks.

If you guys prefer, Nagarjuna could send out v11 of the series and
integrate Tegra186 support.

Thanks,
Thierry


> SS mode is verified by enabling Type A port as peripheral
> ---
> v10:
> * Patches 1,2,4,5,7,8 - No changes.
> * Patch 3 has braces added to one single line else condition.
> * Patch 6 has update on compatible string as per suggestion from Chunfeng.
> ---
> v9:
> * Patches 1,2,3,4,5 - No changes.
> * Patch 6 has update on compatible string as per suggestion from Chunfeng.
> * Patch 7 has comment fixes as suggested by Chunfeng.
> * Patch 8 has CONFIG_USB_GPIO enabled as module additionally.
> ---
> v8:
> * Patches 1,2,3,4,5,8 - No changes.
> * Patch 6 has update on compatible string as per change done in [1].
> * Patch 7 has issue fix, where device mode didnot got enabled after resume
>   from suspend.
> ---
> v7:
> * Patches 1,2,3,4,5,6,8 - No changes.
> * Patch 7 - Comments from Balbi and Chunfun adrresed.
>   Added COMPILE_TEST in Kconfig and updated dependencies.
> ---
> v6:
> * Patches 1,2,3,7,8 - No changes.
> * Patch 4,5,6 - Comments from Rob addressed, updated usb connector driver
>   compatibility string.
> ---
> v5:
> * Patches 1-3 - Commit subject updated as per inputs from Thierry.
> * Patch 4 - Added reg-names used on Tegra210 in the bindings doc
> * Enabled xudc driver as module instead of part of kernel in patch 8.
> * Patched 5-8 - No changes.
> ---
> v4:
> * patch 1 - no changes.
> * corrected companion device search based on inputs from Thierry in patch 2.
> * removed unneeded dev variable and corrected value read in
>   tegra210_utmi_port_reset function in patch 3.
> * dt binding doc and dtb files are corrected for alignments.
>   Replaced extcon-usb-gpio with usb role switch.
> * Added support for USB role switch instead of extcon-usb-gpio and other minor
>   comments as suggested by Chunfeng.
> * Enabled xudc driver as module instead of part of kernel in patch 8.
> ---
> V3:
> * Rebased patch 1 to top of tree.
> * Fixed bug in patch 2, where xudc interrupts dont get generated if USB host
>   mode fails to probe. Moved fake port detection logic to generic xusb.c. fake
>   usb port data is updated based on soc flag need_fake_usb3_port.
> * Added extra lines whereever necessary to make code more readable in patch 3
>   and 7.
> * dt binding doc is corrected for typos and extcon references. Also added
>   details for clocks and removed xusb_ references to clock and power-domain
>   names and accordingly patch 5 is updated.
> * removed avdd-pll-utmip-supply in patch 6, as its now part of padctl driver.
> * Patch 8 has no changes.
> ---
> V2:
> * Patches 1-3 are new patches in this series, which splits unified features
>   patch to speprated features and removes need of port-fake entry in DT.
> * Patch 4 is re-arragend dt-bindings patch which incorporates previous
>   patch comments to sort DT entries alphabetically, addresses name changes
>   and PM domain details added.
> * Patch 5-6 are re-arranged DT patches with major changes - sort entries
>   alphabetically, and adds clock names.
> * Patch 7 is UDC driver tegra XUSB device mode controller with major
>   changes - remove un-used module params, lockinng for device_mode flag,
>   moving un-needed info logs to debug level, making changes feature flag
>   dependent rather than SOC based macros and other error handling in probe.
> * Patch 8 has no changes.
> 
> Nagarjuna Kristam (8):
>   phy: tegra: xusb: Add XUSB dual mode support on Tegra210
>   phy: tegra: xusb: Add usb3 port fake support on Tegra210
>   phy: tegra: xusb: Add vbus override support on Tegra210
>   dt-bindings: usb: Add NVIDIA Tegra XUSB device mode controller binding
>   arm64: tegra: Add xudc node for Tegra210
>   arm64: tegra: Enable xudc on Jetson TX1
>   usb: gadget: Add UDC driver for tegra XUSB device mode controller
>   arm64: defconfig: Enable tegra XUDC support
> 
>  .../devicetree/bindings/usb/nvidia,tegra-xudc.txt  |  110 +
>  arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi     |   31 +-
>  arch/arm64/boot/dts/nvidia/tegra210.dtsi           |   19 +
>  arch/arm64/configs/defconfig                       |    2 +
>  drivers/phy/tegra/xusb-tegra210.c                  |  134 +-
>  drivers/phy/tegra/xusb.c                           |   87 +
>  drivers/phy/tegra/xusb.h                           |    4 +
>  drivers/usb/gadget/udc/Kconfig                     |   11 +
>  drivers/usb/gadget/udc/Makefile                    |    1 +
>  drivers/usb/gadget/udc/tegra-xudc.c                | 3787 ++++++++++++++++++++
>  include/linux/phy/tegra/xusb.h                     |    4 +-
>  11 files changed, 4186 insertions(+), 4 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/usb/nvidia,tegra-xudc.txt
>  create mode 100644 drivers/usb/gadget/udc/tegra-xudc.c
> 
> -- 
> 2.7.4
>
Greg Kroah-Hartman Oct. 15, 2019, 5:58 p.m. UTC | #3
On Mon, Oct 14, 2019 at 12:02:57PM +0200, Thierry Reding wrote:
> On Mon, Sep 23, 2019 at 01:55:44PM +0530, Nagarjuna Kristam wrote:
> > Patches 1-3 are phy driver changes to add support for device
> > mode.
> > Patches 4-7 are changes related to XUSB device mode
> > controller driver.
> > Patch 8 is to enable drivers for XUDC support in defconfig
> > 
> > Test Steps(USB 2.0):
> > - Enable "USB Gadget precomposed configurations" in defconfig
> > - Build, flash and boot Jetson TX1
> > - Connect Jetson TX1 and Ubuntu device using USB A to Micro B
> >   cable
> > - After boot on Jetson TX1 terminal usb0 network device should be
> >   enumerated
> > - Assign static ip to usb0 on Jetson TX1 and corresponding net
> >   device on ubuntu
> > - Run ping test and transfer test(used scp) to check data transfer
> >   communication
> 
> Hi Felipe, Kishon, Greg,
> 
> Patches 1-3 provide new API that is required by patch 7, so I think
> patches 1, 2, 3, 4 and 7 should probably all go through a single tree to
> avoid having to model the dependencies using stable branches.
> 
> Kishon, patches 1-3 have gone through several rounds of review already,
> but do you have any remaining concerns on them? If not, it'd be great if
> you could ack them. Felipe and Greg could then pick them up along with
> patches 4 and 7 into the USB tree.
> 
> Felipe, Greg, does that sound like a reasonable plan?

Fine with me.

> I should also mention that while waiting for review, Nagarjuna has been
> able to extend support for the XUDC driver to Tegra186 but has so far
> been holding back on sending them out so as to not needlessly hold up
> progress on this series. However, given the interdependencies, I've come
> to think that it may be preferable to merge everything in one go instead
> of revisiting this in a couple of weeks.
> 
> If you guys prefer, Nagarjuna could send out v11 of the series and
> integrate Tegra186 support.

That's also fine.

thanks,

greg k-h