[PATCH v2 2/3] dt-bindings: usb: Introduce samsung,snps-dwc3

From: Selvarasu Ganesan

Date: Wed Sep 16 2026 - 08:26:22 EST


Add the Samsung Exynos8855 DWC3 binding using a flattened node
representation, where the DWC3 controller is directly addressable
rather than nested as a child node of a glue layer.

This is the first Samsung Exynos binding using the flattened
representation. The existing samsung,exynos-dwc3 binding describes the
parent and child representation used by existing Exynos SoCs, which can
be migrated to the flattened model.

Samsung Exynos SoCs sharing the same flattened model can be added by
using the samsung,snps-dwc3 fallback compatible and extending the
compatible enum with per SoC clock and property constraints.

Co-developed-by: Muhammed Ali <muhammed.ali@xxxxxxxxxxx>
Signed-off-by: Muhammed Ali <muhammed.ali@xxxxxxxxxxx>
Signed-off-by: Selvarasu Ganesan <selvarasu.g@xxxxxxxxxxx>
---

Krzysztof Kozlowski is added as a maintainer of this YAML binding, as
he is the ARM/Samsung SoC architecture maintainer (ARM/SAMSUNG S3C,
S5P AND EXYNOS ARM ARCHITECTURES) who already maintains Samsung Exynos
DT bindings (e.g. samsung,exynos-dwc3.yaml) and reviews all
Samsung related binding changes. This follows the same convention used
by existing Samsung Exynos DT binding schemas.
---
.../bindings/usb/samsung,snps-dwc3.yaml | 98 +++++++++++++++++++
1 file changed, 98 insertions(+)
create mode 100644 Documentation/devicetree/bindings/usb/samsung,snps-dwc3.yaml

diff --git a/Documentation/devicetree/bindings/usb/samsung,snps-dwc3.yaml b/Documentation/devicetree/bindings/usb/samsung,snps-dwc3.yaml
new file mode 100644
index 000000000000..480308c16f37
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/samsung,snps-dwc3.yaml
@@ -0,0 +1,98 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/usb/samsung,snps-dwc3.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Samsung Exynos SoC DWC3 USB Controller
+
+maintainers:
+ - Krzysztof Kozlowski <krzk@xxxxxxxxxx>
+ - Selvarasu Ganesan <selvarasu.g@xxxxxxxxxxx>
+
+description:
+ Describes the DWC3 USB controller block implemented on Samsung Exynos SoCs.
+
+select:
+ properties:
+ compatible:
+ contains:
+ const: samsung,snps-dwc3
+ required:
+ - compatible
+
+properties:
+ compatible:
+ items:
+ - enum:
+ - samsung,exynos8855-dwc3
+ - const: samsung,snps-dwc3
+
+ reg:
+ maxItems: 1
+
+ power-domains:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ clocks:
+ description: |
+ Several clocks are used, depending on the variant. Typical ones are:
+ - ref: Reference clock for SOF/ITP generation.
+ - bus: Bus (APB) clock for register access.
+ minItems: 1
+ maxItems: 4
+
+ clock-names:
+ minItems: 1
+ maxItems: 4
+
+required:
+ - compatible
+ - reg
+ - clocks
+ - clock-names
+ - interrupts
+
+allOf:
+ - $ref: snps,dwc3-common.yaml#
+
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: samsung,exynos8855-dwc3
+ then:
+ properties:
+ clocks:
+ minItems: 2
+ maxItems: 2
+ clock-names:
+ items:
+ - const: ref
+ - const: bus
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+ usb@13200000 {
+ compatible = "samsung,exynos8855-dwc3",
+ "samsung,snps-dwc3";
+ reg = <0x13200000 0x10000>;
+ interrupts = <GIC_SPI 436 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&usb_clk 0>,
+ <&usb_clk 1>;
+ clock-names = "ref", "bus";
+ dr_mode = "peripheral";
+ phys = <&usbdrd_phy 0>;
+ phy-names = "usb2-phy";
+ snps,quirk-frame-length-adjustment = <0x20>;
+ snps,dis-u2-freeclk-exists-quirk;
+ snps,gfladj-refclk-lpm-sel-quirk;
+ };
+...
--
2.17.1