mbox series

[V2,00/18] Tegra XUSB OTG support

Message ID 1576660591-10383-1-git-send-email-nkristam@nvidia.com (mailing list archive)
Headers show
Series Tegra XUSB OTG support | expand

Message

Nagarjuna Kristam Dec. 18, 2019, 9:16 a.m. UTC
This patch series adds OTG support on XUSB hardware used in Tegra210 and
Tegra186 SoCs.

This patchset is composed with :
 - dt bindings of XUSB Pad Controller
 - dt bindings for XUSB device Driver
 - Tegra PHY driver for usb-role-switch and usb-phy
 - Tegra XUSB host mode driver to support OTG mode
 - Tegra XUSB device mode driver to use usb-phy and multi device mode
 - dts for XUSB pad controller
 - dts for xudc

Tegra Pad controller driver register for role switch updates for
OTG/peripheral capable USB ports and adds usb-phy for that corresponding
USB ports.

Host and Device mode drivers gets usb-phy from USB2's phy and registers
notifier for role changes to perform corresponding role tasks.

Tests done:
 - device mode support using micro-B USB cable connection between ubuntu
   host and DUT on micro-B port
 - host mode support by connecting pen-drive to micro USB port on DUT
   using micro-B OTG cable.
 - toggling between these 2 modes by hot plugging corresponding cables.

DUT: Jetson-tx1, Jetson tx2.

V2:
 - Updated usb-role-switch documentation for Padctl driver.
 - Update XUDC bindings doc as suggested by Rob.
 - Used standard error codes for error return.
 - Added of_platform_depopulate during error and driver removal.
 - Updated error variable during phy initialization in XUDC driver.
 - Updated Tegra210 soc dtb file as per changes to binding doc.

Nagarjuna Kristam (18):
  dt-bindings: phy: tegra-xusb: Add usb-role-switch
  dt-bindings: usb: Add NVIDIA Tegra XUSB device mode controller binding
  phy: tegra: xusb: Add usb-role-switch support
  phy: tegra: xusb: Add usb-phy support
  phy: tegra: xusb: Add support to get companion USB 3 port
  phy: tegra: xusb: Add set_mode support for USB 2 phy on Tegra210
  phy: tegra: xusb: Add set_mode support for utmi phy on Tegra186
  usb: xhci-tegra: Add OTG support
  usb: gadget: tegra-xudc: Remove usb-role-switch support
  usb: gadget: tegra-xudc: Add usb-phy support
  usb: gadget: tegra-xudc: use phy_set_mode to set/unset device mode
  usb: gadget: tegra-xudc: support multiple device modes
  arm64: tegra: update OTG port entries for jetson-tx1
  arm64: tegra: update OTG port entries for jetson-tx2
  arm64: tegra: Add xudc node for Tegra210
  arm64: tegra: Enable xudc on Jetson TX1
  arm64: tegra: Add xudc node for Tegra186
  arm64: tegra: Enable xudc node on Jetson TX2

 .../bindings/phy/nvidia,tegra124-xusb-padctl.txt   |   6 +
 .../devicetree/bindings/usb/nvidia,tegra-xudc.yaml | 190 ++++++++++++++
 arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts |  23 +-
 arch/arm64/boot/dts/nvidia/tegra186.dtsi           |  19 ++
 arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi     |  34 ++-
 arch/arm64/boot/dts/nvidia/tegra210.dtsi           |  19 ++
 drivers/phy/tegra/Kconfig                          |   1 +
 drivers/phy/tegra/xusb-tegra186.c                  | 109 ++++++--
 drivers/phy/tegra/xusb-tegra210.c                  | 126 ++++++++--
 drivers/phy/tegra/xusb.c                           | 134 ++++++++++
 drivers/phy/tegra/xusb.h                           |   5 +
 drivers/usb/gadget/udc/tegra-xudc.c                | 276 ++++++++++++++-------
 drivers/usb/host/xhci-tegra.c                      | 225 ++++++++++++++++-
 include/linux/phy/tegra/xusb.h                     |   2 +
 14 files changed, 1031 insertions(+), 138 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/usb/nvidia,tegra-xudc.yaml

Comments

Thierry Reding Dec. 19, 2019, 1:13 p.m. UTC | #1
On Wed, Dec 18, 2019 at 02:46:13PM +0530, Nagarjuna Kristam wrote:
> This patch series adds OTG support on XUSB hardware used in Tegra210 and
> Tegra186 SoCs.
> 
> This patchset is composed with :
>  - dt bindings of XUSB Pad Controller
>  - dt bindings for XUSB device Driver
>  - Tegra PHY driver for usb-role-switch and usb-phy
>  - Tegra XUSB host mode driver to support OTG mode
>  - Tegra XUSB device mode driver to use usb-phy and multi device mode
>  - dts for XUSB pad controller
>  - dts for xudc
> 
> Tegra Pad controller driver register for role switch updates for
> OTG/peripheral capable USB ports and adds usb-phy for that corresponding
> USB ports.
> 
> Host and Device mode drivers gets usb-phy from USB2's phy and registers
> notifier for role changes to perform corresponding role tasks.
> 
> Tests done:
>  - device mode support using micro-B USB cable connection between ubuntu
>    host and DUT on micro-B port
>  - host mode support by connecting pen-drive to micro USB port on DUT
>    using micro-B OTG cable.
>  - toggling between these 2 modes by hot plugging corresponding cables.

Are there any tests we can run without manual intervention? Can we force
the device into peripheral mode and then setup a configuration using
configfs? I'm not sure how useful that would be since it doesn't really
exercise the driver code very much and doesn't tell whether it's
actually working.

Any other way how we can test this?

Thierry

> 
> DUT: Jetson-tx1, Jetson tx2.
> 
> V2:
>  - Updated usb-role-switch documentation for Padctl driver.
>  - Update XUDC bindings doc as suggested by Rob.
>  - Used standard error codes for error return.
>  - Added of_platform_depopulate during error and driver removal.
>  - Updated error variable during phy initialization in XUDC driver.
>  - Updated Tegra210 soc dtb file as per changes to binding doc.
> 
> Nagarjuna Kristam (18):
>   dt-bindings: phy: tegra-xusb: Add usb-role-switch
>   dt-bindings: usb: Add NVIDIA Tegra XUSB device mode controller binding
>   phy: tegra: xusb: Add usb-role-switch support
>   phy: tegra: xusb: Add usb-phy support
>   phy: tegra: xusb: Add support to get companion USB 3 port
>   phy: tegra: xusb: Add set_mode support for USB 2 phy on Tegra210
>   phy: tegra: xusb: Add set_mode support for utmi phy on Tegra186
>   usb: xhci-tegra: Add OTG support
>   usb: gadget: tegra-xudc: Remove usb-role-switch support
>   usb: gadget: tegra-xudc: Add usb-phy support
>   usb: gadget: tegra-xudc: use phy_set_mode to set/unset device mode
>   usb: gadget: tegra-xudc: support multiple device modes
>   arm64: tegra: update OTG port entries for jetson-tx1
>   arm64: tegra: update OTG port entries for jetson-tx2
>   arm64: tegra: Add xudc node for Tegra210
>   arm64: tegra: Enable xudc on Jetson TX1
>   arm64: tegra: Add xudc node for Tegra186
>   arm64: tegra: Enable xudc node on Jetson TX2
> 
>  .../bindings/phy/nvidia,tegra124-xusb-padctl.txt   |   6 +
>  .../devicetree/bindings/usb/nvidia,tegra-xudc.yaml | 190 ++++++++++++++
>  arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts |  23 +-
>  arch/arm64/boot/dts/nvidia/tegra186.dtsi           |  19 ++
>  arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi     |  34 ++-
>  arch/arm64/boot/dts/nvidia/tegra210.dtsi           |  19 ++
>  drivers/phy/tegra/Kconfig                          |   1 +
>  drivers/phy/tegra/xusb-tegra186.c                  | 109 ++++++--
>  drivers/phy/tegra/xusb-tegra210.c                  | 126 ++++++++--
>  drivers/phy/tegra/xusb.c                           | 134 ++++++++++
>  drivers/phy/tegra/xusb.h                           |   5 +
>  drivers/usb/gadget/udc/tegra-xudc.c                | 276 ++++++++++++++-------
>  drivers/usb/host/xhci-tegra.c                      | 225 ++++++++++++++++-
>  include/linux/phy/tegra/xusb.h                     |   2 +
>  14 files changed, 1031 insertions(+), 138 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/usb/nvidia,tegra-xudc.yaml
> 
> -- 
> 2.7.4
>
JC Kuo Dec. 20, 2019, 7:35 a.m. UTC | #2
On 12/19/19 9:13 PM, Thierry Reding wrote:
> On Wed, Dec 18, 2019 at 02:46:13PM +0530, Nagarjuna Kristam wrote:
>> This patch series adds OTG support on XUSB hardware used in Tegra210 and
>> Tegra186 SoCs.
>>
>> This patchset is composed with :
>>  - dt bindings of XUSB Pad Controller
>>  - dt bindings for XUSB device Driver
>>  - Tegra PHY driver for usb-role-switch and usb-phy
>>  - Tegra XUSB host mode driver to support OTG mode
>>  - Tegra XUSB device mode driver to use usb-phy and multi device mode
>>  - dts for XUSB pad controller
>>  - dts for xudc
>>
>> Tegra Pad controller driver register for role switch updates for
>> OTG/peripheral capable USB ports and adds usb-phy for that corresponding
>> USB ports.
>>
>> Host and Device mode drivers gets usb-phy from USB2's phy and registers
>> notifier for role changes to perform corresponding role tasks.
>>
>> Tests done:
>>  - device mode support using micro-B USB cable connection between ubuntu
>>    host and DUT on micro-B port
It's a micro-AB port according to Micro USB specifications.

>>  - host mode support by connecting pen-drive to micro USB port on DUT
>>    using micro-B OTG cable.
It's a standard-A to micro-A converter.

>>  - toggling between these 2 modes by hot plugging corresponding cables.
> 
> Are there any tests we can run without manual intervention? Can we force
> the device into peripheral mode and then setup a configuration using
> configfs? I'm not sure how useful that would be since it doesn't really
> exercise the driver code very much and doesn't tell whether it's
> actually working.
> 
> Any other way how we can test this?
> 
I don't think there is a way to test role-swap and host/device driver without
swapping cables. Thanks.

> Thierry
> 
>>
>> DUT: Jetson-tx1, Jetson tx2.
>>
>> V2:
>>  - Updated usb-role-switch documentation for Padctl driver.
>>  - Update XUDC bindings doc as suggested by Rob.
>>  - Used standard error codes for error return.
>>  - Added of_platform_depopulate during error and driver removal.
>>  - Updated error variable during phy initialization in XUDC driver.
>>  - Updated Tegra210 soc dtb file as per changes to binding doc.
>>
>> Nagarjuna Kristam (18):
>>   dt-bindings: phy: tegra-xusb: Add usb-role-switch
>>   dt-bindings: usb: Add NVIDIA Tegra XUSB device mode controller binding
>>   phy: tegra: xusb: Add usb-role-switch support
>>   phy: tegra: xusb: Add usb-phy support
>>   phy: tegra: xusb: Add support to get companion USB 3 port
>>   phy: tegra: xusb: Add set_mode support for USB 2 phy on Tegra210
>>   phy: tegra: xusb: Add set_mode support for utmi phy on Tegra186
>>   usb: xhci-tegra: Add OTG support
>>   usb: gadget: tegra-xudc: Remove usb-role-switch support
>>   usb: gadget: tegra-xudc: Add usb-phy support
>>   usb: gadget: tegra-xudc: use phy_set_mode to set/unset device mode
>>   usb: gadget: tegra-xudc: support multiple device modes
>>   arm64: tegra: update OTG port entries for jetson-tx1
>>   arm64: tegra: update OTG port entries for jetson-tx2
>>   arm64: tegra: Add xudc node for Tegra210
>>   arm64: tegra: Enable xudc on Jetson TX1
>>   arm64: tegra: Add xudc node for Tegra186
>>   arm64: tegra: Enable xudc node on Jetson TX2
>>
>>  .../bindings/phy/nvidia,tegra124-xusb-padctl.txt   |   6 +
>>  .../devicetree/bindings/usb/nvidia,tegra-xudc.yaml | 190 ++++++++++++++
>>  arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts |  23 +-
>>  arch/arm64/boot/dts/nvidia/tegra186.dtsi           |  19 ++
>>  arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi     |  34 ++-
>>  arch/arm64/boot/dts/nvidia/tegra210.dtsi           |  19 ++
>>  drivers/phy/tegra/Kconfig                          |   1 +
>>  drivers/phy/tegra/xusb-tegra186.c                  | 109 ++++++--
>>  drivers/phy/tegra/xusb-tegra210.c                  | 126 ++++++++--
>>  drivers/phy/tegra/xusb.c                           | 134 ++++++++++
>>  drivers/phy/tegra/xusb.h                           |   5 +
>>  drivers/usb/gadget/udc/tegra-xudc.c                | 276 ++++++++++++++-------
>>  drivers/usb/host/xhci-tegra.c                      | 225 ++++++++++++++++-
>>  include/linux/phy/tegra/xusb.h                     |   2 +
>>  14 files changed, 1031 insertions(+), 138 deletions(-)
>>  create mode 100644 Documentation/devicetree/bindings/usb/nvidia,tegra-xudc.yaml
>>
>> -- 
>> 2.7.4
>>