From: Pawel Laszczak Date: Thu, 21 May 2026 08:16:23 +0000 (+0200) Subject: dt-bindings: usb: cdns3: Add cdns,cdnsp compatible string X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a82fb629ce5976cfdd6c1ac819f7bd8ce967aae3;p=thirdparty%2Flinux.git dt-bindings: usb: cdns3: Add cdns,cdnsp compatible string Introduce a new generic fallback compatible string 'cdns,cdnsp' for Cadence USBSSP controllers to support hardware configurations where the Dual-Role Device (DRD) register block is missing or inaccessible. Following the maintainer's feedback, avoid generic property-like naming (such as "-no-drd") and use a clean generic fallback. To keep the schema resource-driven and strictly validated, define a two-string compatible matrix using an empty schema ({}) wildcard. This allows future vendor SoC compatibles to be prepended while safely falling back to the 2-resource USBSSP configuration. When 'cdns,cdnsp' is matched: - The 'otg' register and interrupt resources are not required. - The 'reg' and 'interrupts' properties are restricted to 2 items (host and device). - 'dr_mode' must be explicitly set to either 'host' or 'peripheral'. The standard 'cdns,usb3' compatible remains unchanged, maintaining backward compatibility by requiring all 3 resource sets (otg, host, dev). Signed-off-by: Pawel Laszczak Acked-by: Conor Dooley Link: https://patch.msgid.link/20260521-no_drd_config_v9-v9-1-2512cef10104@cadence.com Signed-off-by: Greg Kroah-Hartman --- diff --git a/Documentation/devicetree/bindings/usb/cdns,usb3.yaml b/Documentation/devicetree/bindings/usb/cdns,usb3.yaml index 2d95fb7321af..e8082c5c05a2 100644 --- a/Documentation/devicetree/bindings/usb/cdns,usb3.yaml +++ b/Documentation/devicetree/bindings/usb/cdns,usb3.yaml @@ -17,22 +17,24 @@ description: properties: compatible: - const: cdns,usb3 + oneOf: + - const: cdns,usb3 + - items: + - {} + - const: cdns,cdnsp reg: - items: - - description: OTG controller registers - - description: XHCI Host controller registers - - description: DEVICE controller registers + minItems: 2 + maxItems: 3 reg-names: + minItems: 2 + maxItems: 3 items: - - const: otg - - const: xhci - - const: dev + enum: [ otg, xhci, dev ] interrupts: - minItems: 3 + minItems: 2 items: - description: XHCI host controller interrupt - description: Device controller interrupt @@ -41,7 +43,7 @@ properties: cleared by xhci core, this interrupt is optional interrupt-names: - minItems: 3 + minItems: 2 items: - const: host - const: peripheral @@ -93,6 +95,47 @@ allOf: - $ref: usb-drd.yaml# - $ref: usb-xhci.yaml# + - if: + properties: + compatible: + contains: + const: cdns,cdnsp + then: + properties: + reg: + items: + - description: XHCI Host controller registers + - description: DEVICE controller registers + reg-names: + items: + - const: xhci + - const: dev + interrupts: + maxItems: 2 + interrupt-names: + items: + - const: host + - const: peripheral + dr_mode: + enum: [host, peripheral] + else: + properties: + reg: + items: + - description: OTG controller registers + - description: XHCI Host controller registers + - description: DEVICE controller registers + reg-names: + items: + - const: otg + - const: xhci + - const: dev + interrupts: + minItems: 3 + maxItems: 4 + interrupt-names: + minItems: 3 + unevaluatedProperties: false examples: