[PATCH] dt-bindings: usb: samsung,exynos-dwc3: allow unit address in DTS

Rob Herring robh at kernel.org
Thu Jan 26 05:41:25 PST 2023


On Thu, Jan 26, 2023 at 4:48 AM Krzysztof Kozlowski
<krzysztof.kozlowski at linaro.org> wrote:
>
> On 25/01/2023 22:13, Rob Herring wrote:
> > On Wed, Jan 25, 2023 at 06:59:43PM +0100, Krzysztof Kozlowski wrote:
> >> The Samsung Exynos SoC USB 3.0 DWC3 Controller is a simple wrapper of
> >> actual DWC3 Controller device node.  It handles necessary Samsung
> >> Exynos-specific resources (regulators, clocks), but does not have its
> >> own MMIO address space.
> >>
> >> However neither simple-bus bindings nor dtc W=1 accept device nodes in
> >> soc@ node which do not have unit address.  Therefore allow using
> >> the address space of child device (actual DWC3 Controller) as the
> >> wrapper's address.
> >
> > The correct fix is 'ranges' should have a value. Though the whole
> > wrapper thing when there are no registers I dislike...
>
> You mean something like this (diff against this patchset):
> ----------
> diff --git a/arch/arm/boot/dts/exynos54xx.dtsi
> b/arch/arm/boot/dts/exynos54xx.dtsi
> index 08786fd9c6ea..75b6f9678672 100644
> --- a/arch/arm/boot/dts/exynos54xx.dtsi
> +++ b/arch/arm/boot/dts/exynos54xx.dtsi
> @@ -142,16 +142,15 @@ hsi2c_7: i2c at 12cd0000 {
>                         status = "disabled";
>                 };
>
> -               usbdrd3_0: usb-wrapper at 12000000 {
> +               usbdrd3_0: usb-wrapper {

Why did you drop the unit-address? Unit-address is valid with 'reg' or 'ranges'.

>                         compatible = "samsung,exynos5250-dwusb3";
> -                       reg = <0x12000000 0x10000>;
>                         #address-cells = <1>;
>                         #size-cells = <1>;
> -                       ranges;
> +                       ranges = <0x0 0x12000000 0x10000>;
>
> -                       usbdrd_dwc3_0: usb at 12000000 {
> +                       usbdrd_dwc3_0: usb at 0 {
>                                 compatible = "snps,dwc3";
> -                               reg = <0x12000000 0x10000>;
> +                               reg = <0x0 0x10000>;
>
> ---------
>
> Unfortunately dtc W=1 is still not happy:
>
> exynos54xx.dtsi:145.26-159.5: Warning (unit_address_vs_reg):
> /soc/usb-wrapper: node has a reg or ranges property, but no unit name
>
> neither dtbs_check is:
>
> exynos5410-smdk5410.dtb: soc: usb-wrapper: {'compatible':
> ['samsung,exynos5250-dwusb3'], '#address-cells': [[1]], '#size-cells':
> [[1]], 'ranges': [[0, 301989888, 65536]], 'clocks': [[5, 366]],
> 'clock-names': ['usbdrd30'], 'pinctrl-names': ['default'], 'pinctrl-0':
> [[21, 22]], 'vdd10-supply': [[23]], 'vdd33-supply': [[23]], 'usb at 0':
> {'compatible': ['snps,dwc3'], 'reg': [[0, 65536]], 'interrupts': [[0,
> 72, 4]], 'phys': [[24, 0], [24, 1]], 'phy-names': ['usb2-phy',
> 'usb3-phy'], 'snps,dis_u3_susphy_quirk': True}} should not be valid
> under {'type': 'object'}
>         From schema:
> /home/krzk/.local/lib/python3.10/site-packages/dtschema/schemas/simple-bus.yaml
>
>
> Best regards,
> Krzysztof
>



More information about the linux-arm-kernel mailing list