Message ID | 20200616083408.3426435-2-noltari@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | phy: bcm63xx-usbh: Add BCM63xx USBH driver | expand |
On 6/16/2020 1:34 AM, Álvaro Fernández Rojas wrote: > Document BCM63xx USBH PHY bindings. > > Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> > --- > .../bindings/phy/brcm,bcm63xx-usbh-phy.yaml | 72 +++++++++++++++++++ > 1 file changed, 72 insertions(+) > create mode 100644 Documentation/devicetree/bindings/phy/brcm,bcm63xx-usbh-phy.yaml > > diff --git a/Documentation/devicetree/bindings/phy/brcm,bcm63xx-usbh-phy.yaml b/Documentation/devicetree/bindings/phy/brcm,bcm63xx-usbh-phy.yaml > new file mode 100644 > index 000000000000..3e7c97799b91 > --- /dev/null > +++ b/Documentation/devicetree/bindings/phy/brcm,bcm63xx-usbh-phy.yaml > @@ -0,0 +1,72 @@ > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: "http://devicetree.org/schemas/phy/brcm,bcm63xx-usbh-phy.yaml#" > +$schema: "http://devicetree.org/meta-schemas/core.yaml#" > + > +title: BCM63xx USBH PHY > + > +maintainers: > + - Álvaro Fernández Rojas <noltari@gmail.com> > + > +properties: > + compatible: > + enum: > + - brcm,bcm6318-usbh-phy > + - brcm,bcm6328-usbh-phy > + - brcm,bcm6358-usbh-phy > + - brcm,bcm6362-usbh-phy > + - brcm,bcm6368-usbh-phy > + - brcm,bcm63268-usbh-phy > + > + reg: > + maxItems: 1 > + > + clocks: > + maxItems: 2 > + > + clock-names: > + items: > + - const: usbh > + - const: usb_ref > + > + resets: > + maxItems: 1 > + > + "#phy-cells": > + const: 0 On 6328, the same register space allows the controlling of the USB PHY in either host or device mode, so I believe you would need to add a #phy-cells = 1 in order to distinguish the consumer (host versus device) if we get to the point where drivers/usb/gadget/udc/bcm63xx_udc.c becomes DT aware. Other than that, this looks good to me!
Hello Florian, > El 16 jun 2020, a las 19:17, Florian Fainelli <f.fainelli@gmail.com> escribió: > > > > On 6/16/2020 1:34 AM, Álvaro Fernández Rojas wrote: >> Document BCM63xx USBH PHY bindings. >> >> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> >> --- >> .../bindings/phy/brcm,bcm63xx-usbh-phy.yaml | 72 +++++++++++++++++++ >> 1 file changed, 72 insertions(+) >> create mode 100644 Documentation/devicetree/bindings/phy/brcm,bcm63xx-usbh-phy.yaml >> >> diff --git a/Documentation/devicetree/bindings/phy/brcm,bcm63xx-usbh-phy.yaml b/Documentation/devicetree/bindings/phy/brcm,bcm63xx-usbh-phy.yaml >> new file mode 100644 >> index 000000000000..3e7c97799b91 >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/phy/brcm,bcm63xx-usbh-phy.yaml >> @@ -0,0 +1,72 @@ >> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) >> +%YAML 1.2 >> +--- >> +$id: "http://devicetree.org/schemas/phy/brcm,bcm63xx-usbh-phy.yaml#" >> +$schema: "http://devicetree.org/meta-schemas/core.yaml#" >> + >> +title: BCM63xx USBH PHY >> + >> +maintainers: >> + - Álvaro Fernández Rojas <noltari@gmail.com> >> + >> +properties: >> + compatible: >> + enum: >> + - brcm,bcm6318-usbh-phy >> + - brcm,bcm6328-usbh-phy >> + - brcm,bcm6358-usbh-phy >> + - brcm,bcm6362-usbh-phy >> + - brcm,bcm6368-usbh-phy >> + - brcm,bcm63268-usbh-phy >> + >> + reg: >> + maxItems: 1 >> + >> + clocks: >> + maxItems: 2 >> + >> + clock-names: >> + items: >> + - const: usbh >> + - const: usb_ref >> + >> + resets: >> + maxItems: 1 >> + >> + "#phy-cells": >> + const: 0 > > On 6328, the same register space allows the controlling of the USB PHY > in either host or device mode, so I believe you would need to add a > #phy-cells = 1 in order to distinguish the consumer (host versus device) > if we get to the point where drivers/usb/gadget/udc/bcm63xx_udc.c > becomes DT aware. I’m not really sure about how I should do this because there’s no definition for device phy mode in dt-bindings/phy/phy.h: https://github.com/torvalds/linux/blob/master/include/dt-bindings/phy/phy.h#L13 Which value should I use for device mode and which one for host? Should I support both modes at the same time or are they exclusive? > > Other than that, this looks good to me! > -- > Florian Best regards, Álvaro.
On 6/16/2020 11:10 AM, Álvaro Fernández Rojas wrote: > Hello Florian, > >> El 16 jun 2020, a las 19:17, Florian Fainelli <f.fainelli@gmail.com> escribió: >> >> >> >> On 6/16/2020 1:34 AM, Álvaro Fernández Rojas wrote: >>> Document BCM63xx USBH PHY bindings. >>> >>> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> >>> --- >>> .../bindings/phy/brcm,bcm63xx-usbh-phy.yaml | 72 +++++++++++++++++++ >>> 1 file changed, 72 insertions(+) >>> create mode 100644 Documentation/devicetree/bindings/phy/brcm,bcm63xx-usbh-phy.yaml >>> >>> diff --git a/Documentation/devicetree/bindings/phy/brcm,bcm63xx-usbh-phy.yaml b/Documentation/devicetree/bindings/phy/brcm,bcm63xx-usbh-phy.yaml >>> new file mode 100644 >>> index 000000000000..3e7c97799b91 >>> --- /dev/null >>> +++ b/Documentation/devicetree/bindings/phy/brcm,bcm63xx-usbh-phy.yaml >>> @@ -0,0 +1,72 @@ >>> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) >>> +%YAML 1.2 >>> +--- >>> +$id: "http://devicetree.org/schemas/phy/brcm,bcm63xx-usbh-phy.yaml#" >>> +$schema: "http://devicetree.org/meta-schemas/core.yaml#" >>> + >>> +title: BCM63xx USBH PHY >>> + >>> +maintainers: >>> + - Álvaro Fernández Rojas <noltari@gmail.com> >>> + >>> +properties: >>> + compatible: >>> + enum: >>> + - brcm,bcm6318-usbh-phy >>> + - brcm,bcm6328-usbh-phy >>> + - brcm,bcm6358-usbh-phy >>> + - brcm,bcm6362-usbh-phy >>> + - brcm,bcm6368-usbh-phy >>> + - brcm,bcm63268-usbh-phy >>> + >>> + reg: >>> + maxItems: 1 >>> + >>> + clocks: >>> + maxItems: 2 >>> + >>> + clock-names: >>> + items: >>> + - const: usbh >>> + - const: usb_ref >>> + >>> + resets: >>> + maxItems: 1 >>> + >>> + "#phy-cells": >>> + const: 0 >> >> On 6328, the same register space allows the controlling of the USB PHY >> in either host or device mode, so I believe you would need to add a >> #phy-cells = 1 in order to distinguish the consumer (host versus device) >> if we get to the point where drivers/usb/gadget/udc/bcm63xx_udc.c >> becomes DT aware. > > I’m not really sure about how I should do this because there’s no definition for device phy mode in dt-bindings/phy/phy.h: > https://github.com/torvalds/linux/blob/master/include/dt-bindings/phy/phy.h#L13 > > Which value should I use for device mode and which one for host? 0 for the host, which would be equivalent to not specifying the property, and 1 for the device. > Should I support both modes at the same time or are they exclusive? This is an OTG controller so you need to be able to dynamically re-configure the PHY to be in either device or host mode (see comment about bcm63xx_select_phy_mode), but there would not be both at the same time.
Hi Florian, > El 16 jun 2020, a las 19:17, Florian Fainelli <f.fainelli@gmail.com> escribió: > > > > On 6/16/2020 1:34 AM, Álvaro Fernández Rojas wrote: >> Document BCM63xx USBH PHY bindings. >> >> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> >> --- >> .../bindings/phy/brcm,bcm63xx-usbh-phy.yaml | 72 +++++++++++++++++++ >> 1 file changed, 72 insertions(+) >> create mode 100644 Documentation/devicetree/bindings/phy/brcm,bcm63xx-usbh-phy.yaml >> >> diff --git a/Documentation/devicetree/bindings/phy/brcm,bcm63xx-usbh-phy.yaml b/Documentation/devicetree/bindings/phy/brcm,bcm63xx-usbh-phy.yaml >> new file mode 100644 >> index 000000000000..3e7c97799b91 >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/phy/brcm,bcm63xx-usbh-phy.yaml >> @@ -0,0 +1,72 @@ >> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) >> +%YAML 1.2 >> +--- >> +$id: "http://devicetree.org/schemas/phy/brcm,bcm63xx-usbh-phy.yaml#" >> +$schema: "http://devicetree.org/meta-schemas/core.yaml#" >> + >> +title: BCM63xx USBH PHY >> + >> +maintainers: >> + - Álvaro Fernández Rojas <noltari@gmail.com> >> + >> +properties: >> + compatible: >> + enum: >> + - brcm,bcm6318-usbh-phy >> + - brcm,bcm6328-usbh-phy >> + - brcm,bcm6358-usbh-phy >> + - brcm,bcm6362-usbh-phy >> + - brcm,bcm6368-usbh-phy >> + - brcm,bcm63268-usbh-phy >> + >> + reg: >> + maxItems: 1 >> + >> + clocks: >> + maxItems: 2 >> + >> + clock-names: >> + items: >> + - const: usbh >> + - const: usb_ref >> + >> + resets: >> + maxItems: 1 >> + >> + "#phy-cells": >> + const: 0 > > On 6328, the same register space allows the controlling of the USB PHY > in either host or device mode, so I believe you would need to add a > #phy-cells = 1 in order to distinguish the consumer (host versus device) > if we get to the point where drivers/usb/gadget/udc/bcm63xx_udc.c > becomes DT aware. I’ve just realized that I have implemented this wrong in v3, because I implemented the SwapControl USB_DEVICE_SEL value, and you meant the UTMIControl1 USB_DEVICE_MODE_SEL value. So I have a couple of questions about this, because I haven’t got any bcm63xx with usb device configuration to test: - Is USB_DEVICE_SEL also needed in SwapControl or do we only need USB_DEVICE_MODE_SEL in UTMIControl1? - Are the rest of the host values needed when configured in device mode? Should I only set the device values when in device mode? > > Other than that, this looks good to me! > -- > Florian Best regards, Álvaro.
On Tue, 16 Jun 2020 10:34:07 +0200, Álvaro Fernández Rojas wrote: > Document BCM63xx USBH PHY bindings. > > Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> > --- > .../bindings/phy/brcm,bcm63xx-usbh-phy.yaml | 72 +++++++++++++++++++ > 1 file changed, 72 insertions(+) > create mode 100644 Documentation/devicetree/bindings/phy/brcm,bcm63xx-usbh-phy.yaml > My bot found errors running 'make dt_binding_check' on your patch: Error: Documentation/devicetree/bindings/phy/brcm,bcm63xx-usbh-phy.example.dts:22.33-34 syntax error FATAL ERROR: Unable to parse input tree scripts/Makefile.lib:315: recipe for target 'Documentation/devicetree/bindings/phy/brcm,bcm63xx-usbh-phy.example.dt.yaml' failed make[1]: *** [Documentation/devicetree/bindings/phy/brcm,bcm63xx-usbh-phy.example.dt.yaml] Error 1 make[1]: *** Waiting for unfinished jobs.... Makefile:1347: recipe for target 'dt_binding_check' failed make: *** [dt_binding_check] Error 2 See https://patchwork.ozlabs.org/patch/1310130 If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure dt-schema is up to date: pip3 install git+https://github.com/devicetree-org/dt-schema.git@master --upgrade Please check and re-submit.
On 6/17/2020 4:16 AM, Álvaro Fernández Rojas wrote: >> On 6328, the same register space allows the controlling of the USB PHY >> in either host or device mode, so I believe you would need to add a >> #phy-cells = 1 in order to distinguish the consumer (host versus device) >> if we get to the point where drivers/usb/gadget/udc/bcm63xx_udc.c >> becomes DT aware. > > I’ve just realized that I have implemented this wrong in v3, because I implemented the SwapControl USB_DEVICE_SEL value, and you meant the UTMIControl1 USB_DEVICE_MODE_SEL value. Right that is the register I was referring to. > So I have a couple of questions about this, because I haven’t got any bcm63xx with usb device configuration to test: > - Is USB_DEVICE_SEL also needed in SwapControl or do we only need USB_DEVICE_MODE_SEL in UTMIControl1? It looks like it depends on the device, for 6318 and 63268, there is USB_DEVICE_MODE_SEL defined, but not for 6328, 6362 or 6368 for instance. Note that USB_DEVICE_MODE_SEL is relevant for port 2 only for 6318 and 63268 whereas the UTMI_CONTROL1 appears to be for any port. > - Are the rest of the host values needed when configured in device mode? Should I only set the device values when in device mode? They could probably be configured although I am not sure they sure they will be used at all, it's been a while since I looked at this (over 8 years). I don't know if you have any board with USB device mode capability, if you do not please email privately and I will ship you one.
diff --git a/Documentation/devicetree/bindings/phy/brcm,bcm63xx-usbh-phy.yaml b/Documentation/devicetree/bindings/phy/brcm,bcm63xx-usbh-phy.yaml new file mode 100644 index 000000000000..3e7c97799b91 --- /dev/null +++ b/Documentation/devicetree/bindings/phy/brcm,bcm63xx-usbh-phy.yaml @@ -0,0 +1,72 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: "http://devicetree.org/schemas/phy/brcm,bcm63xx-usbh-phy.yaml#" +$schema: "http://devicetree.org/meta-schemas/core.yaml#" + +title: BCM63xx USBH PHY + +maintainers: + - Álvaro Fernández Rojas <noltari@gmail.com> + +properties: + compatible: + enum: + - brcm,bcm6318-usbh-phy + - brcm,bcm6328-usbh-phy + - brcm,bcm6358-usbh-phy + - brcm,bcm6362-usbh-phy + - brcm,bcm6368-usbh-phy + - brcm,bcm63268-usbh-phy + + reg: + maxItems: 1 + + clocks: + maxItems: 2 + + clock-names: + items: + - const: usbh + - const: usb_ref + + resets: + maxItems: 1 + + "#phy-cells": + const: 0 + +required: + - compatible + - reg + - clocks + - clock-names + - resets + - "#phy-cells" + +if: + properties: + compatible: + enum: + - brcm,bcm6318-usbh-phy + - brcm,bcm6328-usbh-phy + - brcm,bcm6362-usbh-phy + - brcm,bcm63268-usbh-phy + +then: + properties: + power-domains: + maxItems: 1 + required: + - power-domains + +examples: + - | + usbh: usb-phy@10001700 { + compatible = "brcm,bcm6368-usbh-phy"; + reg = <0x10001700 0x38>; + clocks = <&periph_clk BCM6368_CLK_USBH>; + clock-names = "usbh"; + resets = <&periph_rst BCM6368_RST_USBH>; + #phy-cells = <0>; + };
Document BCM63xx USBH PHY bindings. Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> --- .../bindings/phy/brcm,bcm63xx-usbh-phy.yaml | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 Documentation/devicetree/bindings/phy/brcm,bcm63xx-usbh-phy.yaml