[PATCH 7/8] dt-bindings: soc: socionext: Add UniPhier DWC3 USB glue layer

Krzysztof Kozlowski krzysztof.kozlowski at linaro.org
Wed Nov 30 07:32:38 PST 2022


On 30/11/2022 10:00, Kunihiko Hayashi wrote:
> Hi Krzysztof,
> 
> On 2022/11/29 23:52, Krzysztof Kozlowski wrote:
>> On 29/11/2022 11:35, Kunihiko Hayashi wrote:
>>> Add DT binding schema for components belonging to the platform-specific
>>> DWC3 USB glue layer implemented in UniPhier SoCs.
>>>
>>> This USB glue layer works as a sideband logic for the host controller,
>>> including core reset, vbus control, PHYs, and some signals to the
>>> controller.
>>>
>>> Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko at socionext.com>
>>> ---
>>>   .../socionext,uniphier-dwc3-glue.yaml         | 106 ++++++++++++++++++
>>>   1 file changed, 106 insertions(+)
>>>   create mode 100644
>>> Documentation/devicetree/bindings/soc/socionext/socionext,uniphier-dwc3-glue.yaml
>>>
>>> diff --git
>>> a/Documentation/devicetree/bindings/soc/socionext/socionext,uniphier-dwc3-glue.yaml
>>> b/Documentation/devicetree/bindings/soc/socionext/socionext,uniphier-dwc3-glue.yaml
>>> new file mode 100644
>>> index 000000000000..66f8786dd305
>>> --- /dev/null
>>> +++
>>> b/Documentation/devicetree/bindings/soc/socionext/socionext,uniphier-dwc3-glue.yaml
>>> @@ -0,0 +1,106 @@
>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>>> +%YAML 1.2
>>> +---
>>> +$id:
>>> http://devicetree.org/schemas/soc/socionext/socionext,uniphier-dwc3-glue.yaml#
>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>> +
>>> +title: Socionext UniPhier SoC DWC3 USB3.0 glue layer
>>> +
>>> +maintainers:
>>> +  - Kunihiko Hayashi <hayashi.kunihiko at socionext.com>
>>> +
>>> +description: |+
>>> +  DWC3 USB3.0 glue layer implemented on Socionext UniPhier SoCs is
>>> +  a sideband logic handling signals to DWC3 host controller inside
>>> +  USB3.0 component.
>>> +
>>> +properties:
>>> +  compatible:
>>> +    items:
>>> +      - enum:
>>> +          - socionext,uniphier-pro4-dwc3-glue
>>> +          - socionext,uniphier-pro5-dwc3-glue
>>> +          - socionext,uniphier-pxs2-dwc3-glue
>>> +          - socionext,uniphier-ld20-dwc3-glue
>>> +          - socionext,uniphier-pxs3-dwc3-glue
>>> +          - socionext,uniphier-nx1-dwc3-glue
>>> +      - const: simple-mfd
>>> +
>>> +  reg:
>>> +    maxItems: 1
>>> +
>>> +  '#address-cells':
>>> +    const: 1
>>> +
>>> +  '#size-cells':
>>> +    const: 1
>>> +
>>> +  ranges: true
>>> +
>>> +patternProperties:
>>> +  "^reset-controller@[0-9a-f]+$":
>>> +    $ref: /schemas/reset/socionext,uniphier-glue-reset.yaml#
>>> +
>>> +  "^regulator@[0-9a-f]+$":
>>> +    $ref: /schemas/regulator/socionext,uniphier-regulator.yaml#
>>> +
>>> +  "^phy@[0-9a-f]+$":
>>> +    oneOf:
>>> +      - $ref: /schemas/phy/socionext,uniphier-usb3hs-phy.yaml#
>>> +      - $ref: /schemas/phy/socionext,uniphier-usb3ss-phy.yaml#
>>> +
>>> +required:
>>> +  - compatible
>>> +  - reg
>>> +
>>> +additionalProperties: false
>>> +
>>> +examples:
>>> +  - |
>>> +    usb-controller at 65b00000 {
>>
>> Node name: usb. There is no usage of "usb-controller".
> 
> I'm confusing about that.
> 
> This is an interface logic and doesn't have USB functions by itself.
> Surely there is a USB host controller node "usb at ..." in the same SoC.
> Can this node be renamed to "usb"?
> 
> I've renamed the dts node name once in commit 4cc752a88ca9
> ("arm64: dts: uniphier: Rename usb-glue node for USB3 to usb-controller").

In (almost?) all other cases it is still called "usb". A bit akward to
have usb in usb, but usb-controller did not stick...

> 
>>> +        compatible = "socionext,uniphier-ld20-dwc3-glue", "simple-mfd";
>>> +        reg = <0x65b00000 0x400>;
>>> +        #address-cells = <1>;
>>> +        #size-cells = <1>;
>>> +        ranges = <0 0x65b00000 0x400>;
>>> +
>>> +        reset-controller at 0 {
>>> +            compatible = "socionext,uniphier-ld20-usb3-reset";
>>> +            reg = <0x0 0x4>;
>>
>> So now I see the unit addresses, which means none of your previous
>> patches needed them. This raises next question - why this device is
>> special and does not use syscon but own unit address?
> 
> The glue layer has a fixed register address for each child unlike
> the previous patch.
> 
> This layer has also the other registers for USB core outside
> the child nodes, however, there is no parent device that manages
> these registers, so this layer node itself should take care of these
> registers.
> 
>> Are the children here - regulator, reset controller and phys - related
>> to the USB?
> 
> Yes, this "glue layer" is an interface of the USB controller, so these
> children are only used for the USB controller.


OK

Best regards,
Krzysztof




More information about the linux-arm-kernel mailing list