Message ID | 20230125175943.675823-1-krzysztof.kozlowski@linaro.org |
---|---|
State | New |
Headers | show |
Series | dt-bindings: usb: samsung,exynos-dwc3: allow unit address in DTS | expand |
On 26/01/2023 14:41, Rob Herring wrote: > On Thu, Jan 26, 2023 at 4:48 AM Krzysztof Kozlowski > <krzysztof.kozlowski@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@12cd0000 { >> status = "disabled"; >> }; >> >> - usbdrd3_0: usb-wrapper@12000000 { >> + usbdrd3_0: usb-wrapper { > > Why did you drop the unit-address? Unit-address is valid with 'reg' or 'ranges'. I misunderstood your comment then. To which problem did you refer with "The correct fix is ranges ...."? To my understanding this only changes the unit address, so I won't have to change the node name usb->usb-wrapper. Except this, my patches having empty ranges are equivalent. > >> compatible = "samsung,exynos5250-dwusb3"; >> - reg = <0x12000000 0x10000>; >> #address-cells = <1>; >> #size-cells = <1>; >> - ranges; >> + ranges = <0x0 0x12000000 0x10000>; >> Best regards, Krzysztof
diff --git a/Documentation/devicetree/bindings/usb/samsung,exynos-dwc3.yaml b/Documentation/devicetree/bindings/usb/samsung,exynos-dwc3.yaml index 6b9a3bcb3926..a94b1926dda0 100644 --- a/Documentation/devicetree/bindings/usb/samsung,exynos-dwc3.yaml +++ b/Documentation/devicetree/bindings/usb/samsung,exynos-dwc3.yaml @@ -29,6 +29,9 @@ properties: ranges: true + reg: + maxItems: 1 + '#size-cells': const: 1 @@ -108,8 +111,9 @@ examples: #include <dt-bindings/clock/exynos5420.h> #include <dt-bindings/interrupt-controller/arm-gic.h> - usb { + usb-wrapper@12000000 { compatible = "samsung,exynos5250-dwusb3"; + reg = <0x12000000 0x10000>; #address-cells = <1>; #size-cells = <1>; ranges;
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. Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> --- DTS fixes are here: https://lore.kernel.org/linux-samsung-soc/20230125175751.675090-1-krzysztof.kozlowski@linaro.org/T/#t --- .../devicetree/bindings/usb/samsung,exynos-dwc3.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)