diff mbox series

[v2,1/2] dt-bindings: usb: misc: Add binding for Microchip usb5744 hub

Message ID 076994fc051e9230a3fef9e3eb5ec932104ef16a.1612867682.git.michal.simek@xilinx.com
State Superseded
Headers show
Series usb: misc: Add support for Microchip USB5744 | expand

Commit Message

Michal Simek Feb. 9, 2021, 10:48 a.m. UTC
From: Piyush Mehta <piyush.mehta@xilinx.com>

Added dt binding for usb5744 driver.

Signed-off-by: Piyush Mehta <piyush.mehta@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
---

Changes in v2: None

 .../bindings/usb/microchip,usb5744.yaml       | 56 +++++++++++++++++++
 MAINTAINERS                                   |  1 +
 2 files changed, 57 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/usb/microchip,usb5744.yaml

Comments

Rob Herring (Arm) Feb. 10, 2021, 10:22 p.m. UTC | #1
On Tue, Feb 09, 2021 at 11:48:09AM +0100, Michal Simek wrote:
> From: Piyush Mehta <piyush.mehta@xilinx.com>
> 
> Added dt binding for usb5744 driver.
> 
> Signed-off-by: Piyush Mehta <piyush.mehta@xilinx.com>
> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
> ---
> 
> Changes in v2: None
> 
>  .../bindings/usb/microchip,usb5744.yaml       | 56 +++++++++++++++++++
>  MAINTAINERS                                   |  1 +
>  2 files changed, 57 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/usb/microchip,usb5744.yaml
> 
> diff --git a/Documentation/devicetree/bindings/usb/microchip,usb5744.yaml b/Documentation/devicetree/bindings/usb/microchip,usb5744.yaml
> new file mode 100644
> index 000000000000..fe222f6db81d
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/usb/microchip,usb5744.yaml
> @@ -0,0 +1,56 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: "http://devicetree.org/schemas/usb/microchip,usb5744.yaml#"
> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> +
> +title: Bindings for the Microchip USB5744 4-port Hub Controller
> +
> +description:
> +  Microchip’s USB5744 SmartHub™ IC is a 4 port, SuperSpeed (SS)/Hi-Speed (HS),
> +  low power, low pin count configurable and fully compliant with the USB 3.1
> +  Gen 1 specification. The USB5744 also supports Full Speed (FS) and Low Speed
> +  (LS) USB signaling, offering complete coverage of all defined USB operating
> +  speeds. The new SuperSpeed hubs operate in parallel with the USB 2.0
> +  controller, so 5 Gbps SuperSpeed data transfers are not affected by slower
> +  USB 2.0 traffic.
> +
> +maintainers:
> +  - Piyush Mehta <piyush.mehta@xilinx.com>
> +  - Michal Simek <michal.simek@xilinx.com>
> +
> +properties:
> +  compatible:
> +    const: microchip,usb5744
> +
> +  reg:
> +    maxItems: 1
> +    description: |
> +      Specifies the i2c slave address, it is required and should be 0x2d
> +      if I2C is used.

If I2C is not used, then this should be underneath the USB host as a USB 
device. That also implies a different compatible string. I'd suggest you 
just say I2C is required if that's your use.

'const: 0x2d' instead of maxItems is the schema to express the address 
if fixed.

> +
> +  reset-gpios:
> +    maxItems: 1
> +    description:
> +      The phandle and specifier for the GPIO that controls the RESET line of
> +      USB hub.
> +
> +required:
> +  - compatible
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/gpio/gpio.h>
> +
> +    i2c {
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +
> +        usb5744@2d {
> +            compatible = "microchip,usb5744";
> +            reg = <0x2d>;
> +            reset-gpios = <&gpio 44 GPIO_ACTIVE_HIGH>;
> +        };
> +    };
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 41e8d3d7faec..7439471b5d37 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -2697,6 +2697,7 @@ W:	http://wiki.xilinx.com
>  T:	git https://github.com/Xilinx/linux-xlnx.git
>  F:	Documentation/devicetree/bindings/i2c/cdns,i2c-r1p10.yaml
>  F:	Documentation/devicetree/bindings/i2c/xlnx,xps-iic-2.00.a.yaml
> +F:	Documentation/devicetree/bindings/usb/microchip,usb5744.yaml
>  F:	arch/arm/mach-zynq/
>  F:	drivers/block/xsysace.c
>  F:	drivers/clocksource/timer-cadence-ttc.c
> -- 
> 2.30.0
>
Rob Herring (Arm) Feb. 11, 2021, 2:42 p.m. UTC | #2
On Thu, Feb 11, 2021 at 3:35 AM Michal Simek <michal.simek@xilinx.com> wrote:
>
> Hi Rob,
>
> On 2/10/21 11:22 PM, Rob Herring wrote:
> > On Tue, Feb 09, 2021 at 11:48:09AM +0100, Michal Simek wrote:
> >> From: Piyush Mehta <piyush.mehta@xilinx.com>
> >>
> >> Added dt binding for usb5744 driver.
> >>
> >> Signed-off-by: Piyush Mehta <piyush.mehta@xilinx.com>
> >> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
> >> ---
> >>
> >> Changes in v2: None
> >>
> >>  .../bindings/usb/microchip,usb5744.yaml       | 56 +++++++++++++++++++
> >>  MAINTAINERS                                   |  1 +
> >>  2 files changed, 57 insertions(+)
> >>  create mode 100644 Documentation/devicetree/bindings/usb/microchip,usb5744.yaml
> >>
> >> diff --git a/Documentation/devicetree/bindings/usb/microchip,usb5744.yaml b/Documentation/devicetree/bindings/usb/microchip,usb5744.yaml
> >> new file mode 100644
> >> index 000000000000..fe222f6db81d
> >> --- /dev/null
> >> +++ b/Documentation/devicetree/bindings/usb/microchip,usb5744.yaml
> >> @@ -0,0 +1,56 @@
> >> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> >> +%YAML 1.2
> >> +---
> >> +$id: "http://devicetree.org/schemas/usb/microchip,usb5744.yaml#"
> >> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> >> +
> >> +title: Bindings for the Microchip USB5744 4-port Hub Controller
> >> +
> >> +description:
> >> +  Microchip’s USB5744 SmartHub™ IC is a 4 port, SuperSpeed (SS)/Hi-Speed (HS),
> >> +  low power, low pin count configurable and fully compliant with the USB 3.1
> >> +  Gen 1 specification. The USB5744 also supports Full Speed (FS) and Low Speed
> >> +  (LS) USB signaling, offering complete coverage of all defined USB operating
> >> +  speeds. The new SuperSpeed hubs operate in parallel with the USB 2.0
> >> +  controller, so 5 Gbps SuperSpeed data transfers are not affected by slower
> >> +  USB 2.0 traffic.
> >> +
> >> +maintainers:
> >> +  - Piyush Mehta <piyush.mehta@xilinx.com>
> >> +  - Michal Simek <michal.simek@xilinx.com>
> >> +
> >> +properties:
> >> +  compatible:
> >> +    const: microchip,usb5744
> >> +
> >> +  reg:
> >> +    maxItems: 1
> >> +    description: |
> >> +      Specifies the i2c slave address, it is required and should be 0x2d
> >> +      if I2C is used.
> >
> > If I2C is not used, then this should be underneath the USB host as a USB
> > device. That also implies a different compatible string. I'd suggest you
> > just say I2C is required if that's your use.
>
> We can't say that i2c is required because we have both cases. One is
> really usb hub connected over i2c which at least requires to send one
> smbus command to start operate. But it can be extended to add more
> features - limit speeds, disable ports, etc.
>
> And the second is really the same usb hub without i2c connected which
> runs in default mode. But reset is required to ensure proper reset
> sequence.
> Hub also have external clock chip which is not handled now because it is
> just crystal on the board but if you want I can also model it via fixed
> clock and call clock enable for it.
>
> It is the same use case as is with
> Documentation/devicetree/bindings/usb/usb3503.txt

Yes, there are examples of how we don't want to do it.

> Can you please elaborate why different compatible string should be used?
> It is still the same device and not quite sure why different compatible
> string should be used.
>
> Do you also want to example where this node is the part of usb node?

See usb/usb-device.txt. And there is this[1] under review.

For these cases with I2C, I'd really rather see the hub always under
the USB bus with a link to the I2C bus when connected.

Rob

[1] https://lore.kernel.org/linux-devicetree/20210210091015.v5.1.I248292623d3d0f6a4f0c5bc58478ca3c0062b49a@changeid/
Rob Herring (Arm) March 4, 2021, 8:02 p.m. UTC | #3
On Wed, Feb 24, 2021 at 7:38 AM Michal Simek <michal.simek@xilinx.com> wrote:
>

> Hi Rob,

>

> On 2/11/21 3:42 PM, Rob Herring wrote:

> > On Thu, Feb 11, 2021 at 3:35 AM Michal Simek <michal.simek@xilinx.com> wrote:

> >>

> >> Hi Rob,

> >>

> >> On 2/10/21 11:22 PM, Rob Herring wrote:

> >>> On Tue, Feb 09, 2021 at 11:48:09AM +0100, Michal Simek wrote:

> >>>> From: Piyush Mehta <piyush.mehta@xilinx.com>

> >>>>

> >>>> Added dt binding for usb5744 driver.

> >>>>

> >>>> Signed-off-by: Piyush Mehta <piyush.mehta@xilinx.com>

> >>>> Signed-off-by: Michal Simek <michal.simek@xilinx.com>

> >>>> ---

> >>>>

> >>>> Changes in v2: None

> >>>>

> >>>>  .../bindings/usb/microchip,usb5744.yaml       | 56 +++++++++++++++++++

> >>>>  MAINTAINERS                                   |  1 +

> >>>>  2 files changed, 57 insertions(+)

> >>>>  create mode 100644 Documentation/devicetree/bindings/usb/microchip,usb5744.yaml

> >>>>

> >>>> diff --git a/Documentation/devicetree/bindings/usb/microchip,usb5744.yaml b/Documentation/devicetree/bindings/usb/microchip,usb5744.yaml

> >>>> new file mode 100644

> >>>> index 000000000000..fe222f6db81d

> >>>> --- /dev/null

> >>>> +++ b/Documentation/devicetree/bindings/usb/microchip,usb5744.yaml

> >>>> @@ -0,0 +1,56 @@

> >>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)

> >>>> +%YAML 1.2

> >>>> +---

> >>>> +$id: "http://devicetree.org/schemas/usb/microchip,usb5744.yaml#"

> >>>> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"

> >>>> +

> >>>> +title: Bindings for the Microchip USB5744 4-port Hub Controller

> >>>> +

> >>>> +description:

> >>>> +  Microchip’s USB5744 SmartHub™ IC is a 4 port, SuperSpeed (SS)/Hi-Speed (HS),

> >>>> +  low power, low pin count configurable and fully compliant with the USB 3.1

> >>>> +  Gen 1 specification. The USB5744 also supports Full Speed (FS) and Low Speed

> >>>> +  (LS) USB signaling, offering complete coverage of all defined USB operating

> >>>> +  speeds. The new SuperSpeed hubs operate in parallel with the USB 2.0

> >>>> +  controller, so 5 Gbps SuperSpeed data transfers are not affected by slower

> >>>> +  USB 2.0 traffic.

> >>>> +

> >>>> +maintainers:

> >>>> +  - Piyush Mehta <piyush.mehta@xilinx.com>

> >>>> +  - Michal Simek <michal.simek@xilinx.com>

> >>>> +

> >>>> +properties:

> >>>> +  compatible:

> >>>> +    const: microchip,usb5744

> >>>> +

> >>>> +  reg:

> >>>> +    maxItems: 1

> >>>> +    description: |

> >>>> +      Specifies the i2c slave address, it is required and should be 0x2d

> >>>> +      if I2C is used.

> >>>

> >>> If I2C is not used, then this should be underneath the USB host as a USB

> >>> device. That also implies a different compatible string. I'd suggest you

> >>> just say I2C is required if that's your use.

> >>

> >> We can't say that i2c is required because we have both cases. One is

> >> really usb hub connected over i2c which at least requires to send one

> >> smbus command to start operate. But it can be extended to add more

> >> features - limit speeds, disable ports, etc.

> >>

> >> And the second is really the same usb hub without i2c connected which

> >> runs in default mode. But reset is required to ensure proper reset

> >> sequence.

> >> Hub also have external clock chip which is not handled now because it is

> >> just crystal on the board but if you want I can also model it via fixed

> >> clock and call clock enable for it.

> >>

> >> It is the same use case as is with

> >> Documentation/devicetree/bindings/usb/usb3503.txt

> >

> > Yes, there are examples of how we don't want to do it.

>

> ok.

>

> >

> >> Can you please elaborate why different compatible string should be used?

> >> It is still the same device and not quite sure why different compatible

> >> string should be used.

> >>

> >> Do you also want to example where this node is the part of usb node?

> >

> > See usb/usb-device.txt. And there is this[1] under review.

> >

> > For these cases with I2C, I'd really rather see the hub always under

> > the USB bus with a link to the I2C bus when connected.

>

> I read that thread and also looked at his device and it is very similar

> to this one. Binding should also have information about i2c or spi. It

> is the same case here that you can use this hub without any bus

> connected which works in default mode. Or when i2c/smbus is connected

> and the hub is waiting for initialization sequence. And I expect spi

> behaves very similarly but don't have this setup here.

>

> Do we have any binding doc which is using suggested bus link?


'i2c-bus' or 'ddc-i2c-bus' properties for I2C. Don't think we have
anything for SPI, but I'd expect it would be similar though we'd need
a cell for the chip-select.

Rob
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/usb/microchip,usb5744.yaml b/Documentation/devicetree/bindings/usb/microchip,usb5744.yaml
new file mode 100644
index 000000000000..fe222f6db81d
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/microchip,usb5744.yaml
@@ -0,0 +1,56 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/usb/microchip,usb5744.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: Bindings for the Microchip USB5744 4-port Hub Controller
+
+description:
+  Microchip’s USB5744 SmartHub™ IC is a 4 port, SuperSpeed (SS)/Hi-Speed (HS),
+  low power, low pin count configurable and fully compliant with the USB 3.1
+  Gen 1 specification. The USB5744 also supports Full Speed (FS) and Low Speed
+  (LS) USB signaling, offering complete coverage of all defined USB operating
+  speeds. The new SuperSpeed hubs operate in parallel with the USB 2.0
+  controller, so 5 Gbps SuperSpeed data transfers are not affected by slower
+  USB 2.0 traffic.
+
+maintainers:
+  - Piyush Mehta <piyush.mehta@xilinx.com>
+  - Michal Simek <michal.simek@xilinx.com>
+
+properties:
+  compatible:
+    const: microchip,usb5744
+
+  reg:
+    maxItems: 1
+    description: |
+      Specifies the i2c slave address, it is required and should be 0x2d
+      if I2C is used.
+
+  reset-gpios:
+    maxItems: 1
+    description:
+      The phandle and specifier for the GPIO that controls the RESET line of
+      USB hub.
+
+required:
+  - compatible
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        usb5744@2d {
+            compatible = "microchip,usb5744";
+            reg = <0x2d>;
+            reset-gpios = <&gpio 44 GPIO_ACTIVE_HIGH>;
+        };
+    };
diff --git a/MAINTAINERS b/MAINTAINERS
index 41e8d3d7faec..7439471b5d37 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2697,6 +2697,7 @@  W:	http://wiki.xilinx.com
 T:	git https://github.com/Xilinx/linux-xlnx.git
 F:	Documentation/devicetree/bindings/i2c/cdns,i2c-r1p10.yaml
 F:	Documentation/devicetree/bindings/i2c/xlnx,xps-iic-2.00.a.yaml
+F:	Documentation/devicetree/bindings/usb/microchip,usb5744.yaml
 F:	arch/arm/mach-zynq/
 F:	drivers/block/xsysace.c
 F:	drivers/clocksource/timer-cadence-ttc.c