* [PATCH v3 0/2] USB: xhci: add support for PWRON polarity invert (TI TUSB73x0) @ 2024-10-18 10:55 Francesco Dolcini 2024-10-18 10:55 ` [PATCH v3 1/2] dt-bindings: usb: add TUSB73x0 PCIe Francesco Dolcini 2024-10-18 10:55 ` [PATCH v3 2/2] USB: xhci: add support for PWRON active high Francesco Dolcini 0 siblings, 2 replies; 5+ messages in thread From: Francesco Dolcini @ 2024-10-18 10:55 UTC (permalink / raw) To: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Mathias Nyman, Francesco Dolcini Cc: linux-usb, devicetree, linux-kernel From: Francesco Dolcini <francesco.dolcini@toradex.com> The TUSB73x0 is a USB 3.0 xHCI Host Controller Hub using a PCIe x1 Gen2 interface. The TUSB7320 supports up to two downstream ports, and the TUSB7340 supports up to four. It includes a feature to configure the polarity of the PWRONx# signals, which are used to control other peripherals. In some systems, the default polarity needs to be inverted, which is supported by the hardware through software configuration. This patch series introduces TUSB73x0 PCIe device tree bindings and modifies the USB XHCI PCI driver to handle PWRONx# polarity via a device tree property. TUSB73x0 datasheet: https://www.ti.com/lit/ds/symlink/tusb7320.pdf v3: - Correct the compatible string as "pci104c,8241" (uppercase hex to lowercase) v2: https://lore.kernel.org/all/20241007093205.27130-1-francesco@dolcini.it/ - Change the property type from bool to flag - Rename the property as ti,tusb7320-pwron-active-high v1: https://lore.kernel.org/all/20241004124521.53442-1-francesco@dolcini.it/ Parth Pancholi (2): dt-bindings: usb: add TUSB73x0 PCIe USB: xhci: add support for PWRON active high .../bindings/usb/ti,tusb73x0-pci.yaml | 60 +++++++++++++++++++ drivers/usb/host/xhci-pci.c | 3 + 2 files changed, 63 insertions(+) create mode 100644 Documentation/devicetree/bindings/usb/ti,tusb73x0-pci.yaml -- 2.39.5 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v3 1/2] dt-bindings: usb: add TUSB73x0 PCIe 2024-10-18 10:55 [PATCH v3 0/2] USB: xhci: add support for PWRON polarity invert (TI TUSB73x0) Francesco Dolcini @ 2024-10-18 10:55 ` Francesco Dolcini 2024-10-18 14:07 ` Rob Herring 2024-10-18 10:55 ` [PATCH v3 2/2] USB: xhci: add support for PWRON active high Francesco Dolcini 1 sibling, 1 reply; 5+ messages in thread From: Francesco Dolcini @ 2024-10-18 10:55 UTC (permalink / raw) To: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Mathias Nyman, Francesco Dolcini Cc: Parth Pancholi, linux-usb, devicetree, linux-kernel From: Parth Pancholi <parth.pancholi@toradex.com> Add device tree bindings for TI's TUSB73x0 PCIe-to-USB 3.0 xHCI host controller. The controller supports software configuration through PCIe registers, such as controlling the PWRONx polarity via the USB control register (E0h). Similar generic PCIe-based bindings can be found as qcom,ath11k-pci.yaml as an example. Datasheet: https://www.ti.com/lit/ds/symlink/tusb7320.pdf Signed-off-by: Parth Pancholi <parth.pancholi@toradex.com> Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com> --- v3: use lowercase hex in compatible v2: rename property to ti,tusb7320-pwron-active-high and change type to flag --- .../bindings/usb/ti,tusb73x0-pci.yaml | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 Documentation/devicetree/bindings/usb/ti,tusb73x0-pci.yaml diff --git a/Documentation/devicetree/bindings/usb/ti,tusb73x0-pci.yaml b/Documentation/devicetree/bindings/usb/ti,tusb73x0-pci.yaml new file mode 100644 index 000000000000..7083e24d279c --- /dev/null +++ b/Documentation/devicetree/bindings/usb/ti,tusb73x0-pci.yaml @@ -0,0 +1,60 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/usb/ti,tusb73x0-pci.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: TUSB73x0 USB 3.0 xHCI Host Controller (PCIe) + +maintainers: + - Francesco Dolcini <francesco.dolcini@toradex.com> + +description: + TUSB73x0 USB 3.0 xHCI Host Controller via PCIe x1 Gen2 interface. + The TUSB7320 supports up to two downstream ports, the TUSB7340 supports up + to four downstream ports. + +properties: + compatible: + const: pci104c,8241 + + reg: + maxItems: 1 + + ti,tusb7320-pwron-active-high: + $ref: /schemas/types.yaml#/definitions/flag + description: + Configure the polarity of the PWRONx# signals. When this is present, the PWRONx# + pins are active high and their internal pull-down resistors are disabled. + When this is absent, the PWRONx# pins are active low (default) and their internal + pull-down resistors are enabled. + +required: + - compatible + - reg + +additionalProperties: false + +examples: + - | + pcie { + #address-cells = <3>; + #size-cells = <2>; + + pcie@0 { + device_type = "pci"; + reg = <0x0 0x0 0x0 0x0 0x0>; + bus-range = <0x01 0xff>; + + #address-cells = <3>; + #size-cells = <2>; + ranges; + + usb@0 { + compatible = "pci104c,8241"; + reg = <0x10000 0x0 0x0 0x0 0x0>; + + ti,tusb7320-pwron-active-high; + }; + }; + }; -- 2.39.5 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v3 1/2] dt-bindings: usb: add TUSB73x0 PCIe 2024-10-18 10:55 ` [PATCH v3 1/2] dt-bindings: usb: add TUSB73x0 PCIe Francesco Dolcini @ 2024-10-18 14:07 ` Rob Herring 2024-10-18 14:18 ` Francesco Dolcini 0 siblings, 1 reply; 5+ messages in thread From: Rob Herring @ 2024-10-18 14:07 UTC (permalink / raw) To: Francesco Dolcini Cc: Greg Kroah-Hartman, Krzysztof Kozlowski, Conor Dooley, Mathias Nyman, Francesco Dolcini, Parth Pancholi, linux-usb, devicetree, linux-kernel On Fri, Oct 18, 2024 at 12:55:04PM +0200, Francesco Dolcini wrote: > From: Parth Pancholi <parth.pancholi@toradex.com> > > Add device tree bindings for TI's TUSB73x0 PCIe-to-USB 3.0 xHCI > host controller. The controller supports software configuration > through PCIe registers, such as controlling the PWRONx polarity > via the USB control register (E0h). > > Similar generic PCIe-based bindings can be found as qcom,ath11k-pci.yaml > as an example. > > Datasheet: https://www.ti.com/lit/ds/symlink/tusb7320.pdf > Signed-off-by: Parth Pancholi <parth.pancholi@toradex.com> > Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com> > --- > v3: use lowercase hex in compatible > v2: rename property to ti,tusb7320-pwron-active-high and change type to flag > --- > .../bindings/usb/ti,tusb73x0-pci.yaml | 60 +++++++++++++++++++ > 1 file changed, 60 insertions(+) > create mode 100644 Documentation/devicetree/bindings/usb/ti,tusb73x0-pci.yaml > > diff --git a/Documentation/devicetree/bindings/usb/ti,tusb73x0-pci.yaml b/Documentation/devicetree/bindings/usb/ti,tusb73x0-pci.yaml > new file mode 100644 > index 000000000000..7083e24d279c > --- /dev/null > +++ b/Documentation/devicetree/bindings/usb/ti,tusb73x0-pci.yaml > @@ -0,0 +1,60 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/usb/ti,tusb73x0-pci.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: TUSB73x0 USB 3.0 xHCI Host Controller (PCIe) > + > +maintainers: > + - Francesco Dolcini <francesco.dolcini@toradex.com> > + > +description: > + TUSB73x0 USB 3.0 xHCI Host Controller via PCIe x1 Gen2 interface. > + The TUSB7320 supports up to two downstream ports, the TUSB7340 supports up > + to four downstream ports. XHCI controller, should be referencing usb-xhci.yaml. > + > +properties: > + compatible: > + const: pci104c,8241 2 parts mentioned above, but only 1 PCI ID? > + > + reg: > + maxItems: 1 > + > + ti,tusb7320-pwron-active-high: Drop 'tusb7320-' > + $ref: /schemas/types.yaml#/definitions/flag > + description: > + Configure the polarity of the PWRONx# signals. When this is present, the PWRONx# > + pins are active high and their internal pull-down resistors are disabled. > + When this is absent, the PWRONx# pins are active low (default) and their internal > + pull-down resistors are enabled. > + > +required: > + - compatible > + - reg > + > +additionalProperties: false > + > +examples: > + - | > + pcie { > + #address-cells = <3>; > + #size-cells = <2>; > + > + pcie@0 { > + device_type = "pci"; You can move this up a level and get rid of this middle node. > + reg = <0x0 0x0 0x0 0x0 0x0>; > + bus-range = <0x01 0xff>; Not needed for examples. > + > + #address-cells = <3>; > + #size-cells = <2>; > + ranges; > + > + usb@0 { > + compatible = "pci104c,8241"; > + reg = <0x10000 0x0 0x0 0x0 0x0>; In FDT, we generally don't know the bus number because the OS assigns them. So it should always be 0 in 'reg'. Rob ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v3 1/2] dt-bindings: usb: add TUSB73x0 PCIe 2024-10-18 14:07 ` Rob Herring @ 2024-10-18 14:18 ` Francesco Dolcini 0 siblings, 0 replies; 5+ messages in thread From: Francesco Dolcini @ 2024-10-18 14:18 UTC (permalink / raw) To: Rob Herring Cc: Francesco Dolcini, Greg Kroah-Hartman, Krzysztof Kozlowski, Conor Dooley, Mathias Nyman, Francesco Dolcini, Parth Pancholi, linux-usb, devicetree, linux-kernel Hello Rob, thanks for the review. On Fri, Oct 18, 2024 at 09:07:43AM -0500, Rob Herring wrote: > On Fri, Oct 18, 2024 at 12:55:04PM +0200, Francesco Dolcini wrote: > > From: Parth Pancholi <parth.pancholi@toradex.com> > > > > Add device tree bindings for TI's TUSB73x0 PCIe-to-USB 3.0 xHCI > > host controller. The controller supports software configuration > > through PCIe registers, such as controlling the PWRONx polarity > > via the USB control register (E0h). > > > > Similar generic PCIe-based bindings can be found as qcom,ath11k-pci.yaml > > as an example. > > > > Datasheet: https://www.ti.com/lit/ds/symlink/tusb7320.pdf > > Signed-off-by: Parth Pancholi <parth.pancholi@toradex.com> > > Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com> > > --- > > v3: use lowercase hex in compatible > > v2: rename property to ti,tusb7320-pwron-active-high and change type to flag > > --- > > .../bindings/usb/ti,tusb73x0-pci.yaml | 60 +++++++++++++++++++ > > 1 file changed, 60 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/usb/ti,tusb73x0-pci.yaml > > > > diff --git a/Documentation/devicetree/bindings/usb/ti,tusb73x0-pci.yaml b/Documentation/devicetree/bindings/usb/ti,tusb73x0-pci.yaml > > new file mode 100644 > > index 000000000000..7083e24d279c > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/usb/ti,tusb73x0-pci.yaml > > @@ -0,0 +1,60 @@ > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/usb/ti,tusb73x0-pci.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: TUSB73x0 USB 3.0 xHCI Host Controller (PCIe) > > + > > +maintainers: > > + - Francesco Dolcini <francesco.dolcini@toradex.com> > > + > > +description: > > + TUSB73x0 USB 3.0 xHCI Host Controller via PCIe x1 Gen2 interface. > > + The TUSB7320 supports up to two downstream ports, the TUSB7340 supports up > > + to four downstream ports. > > XHCI controller, should be referencing usb-xhci.yaml. > > > + > > +properties: > > + compatible: > > + const: pci104c,8241 > > 2 parts mentioned above, but only 1 PCI ID? Exactly. Let me know if there is something we should do in this regard (something in the commit message? or in the description?). From the datasheet: This 16-bit read only register contains the value 8241h, which is the device ID assigned by TI to the TUSB73X0 And one more confirmation, in the Linux code you have quirks for this device that just check for a single device id: drivers/usb/host/xhci-pci.c:459 if (pdev->vendor == PCI_VENDOR_ID_TI && pdev->device == 0x8241) xhci->quirks |= XHCI_LIMIT_ENDPOINT_INTERVAL_7; Francesco ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v3 2/2] USB: xhci: add support for PWRON active high 2024-10-18 10:55 [PATCH v3 0/2] USB: xhci: add support for PWRON polarity invert (TI TUSB73x0) Francesco Dolcini 2024-10-18 10:55 ` [PATCH v3 1/2] dt-bindings: usb: add TUSB73x0 PCIe Francesco Dolcini @ 2024-10-18 10:55 ` Francesco Dolcini 1 sibling, 0 replies; 5+ messages in thread From: Francesco Dolcini @ 2024-10-18 10:55 UTC (permalink / raw) To: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Mathias Nyman, Francesco Dolcini Cc: Parth Pancholi, linux-usb, devicetree, linux-kernel From: Parth Pancholi <parth.pancholi@toradex.com> Some PCIe-to-USB controllers such as TI's TUSB73x0 3.0 xHCI host controller supports controlling the PWRONx polarity via the USB control register (E0h). Add support for device tree property ti,tusb7320-pwron-active-high which indicates PWRONx to be active high and configure the E0h register accordingly. This enables the software control for the TUSB73x0's PWRONx outputs with an inverted polarity from the default configuration which could be used as USB EN signals for the other hubs or devices. Signed-off-by: Parth Pancholi <parth.pancholi@toradex.com> Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com> --- v3: no changes v2: s/polarity-invert/active-high --- drivers/usb/host/xhci-pci.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c index 91dccd25a551..4bdef01735eb 100644 --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c @@ -641,6 +641,9 @@ int xhci_pci_common_probe(struct pci_dev *dev, const struct pci_device_id *id) dma_set_max_seg_size(&dev->dev, UINT_MAX); + if (device_property_read_bool(&dev->dev, "ti,tusb7320-pwron-active-high")) + pci_clear_and_set_config_dword(dev, 0xE0, 0, 1 << 22); + return 0; put_usb3_hcd: -- 2.39.5 ^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-10-18 14:18 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-10-18 10:55 [PATCH v3 0/2] USB: xhci: add support for PWRON polarity invert (TI TUSB73x0) Francesco Dolcini 2024-10-18 10:55 ` [PATCH v3 1/2] dt-bindings: usb: add TUSB73x0 PCIe Francesco Dolcini 2024-10-18 14:07 ` Rob Herring 2024-10-18 14:18 ` Francesco Dolcini 2024-10-18 10:55 ` [PATCH v3 2/2] USB: xhci: add support for PWRON active high Francesco Dolcini
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox