ARM: dts: bcm2711: Add BCM2711 xHCI support
authorStefan Wahren <wahrenst@gmx.net>
Tue, 5 Dec 2023 20:05:31 +0000 (21:05 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 6 Dec 2023 03:39:56 +0000 (12:39 +0900)
The BCM2711 SoC also has a mostly generic xHCI. The USB port is
currently only usable on the Compute Module 4 (e.g. via IO board).
Because DWC2 and xHCI share the same PHY, we let the bootloader
enable it on demand.

Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
Link: https://lore.kernel.org/r/20231205200531.8232-4-wahrenst@gmx.net
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/arm/boot/dts/broadcom/bcm2711-rpi.dtsi
arch/arm/boot/dts/broadcom/bcm2711.dtsi

index 98817a6675b9dda10fa138a054d73cc78539d9df..d233a191c139362d36e581ed7b9222b0ebee3189 100644 (file)
@@ -1,6 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0
 #include "bcm2835-rpi.dtsi"
 
+#include <dt-bindings/power/raspberrypi-power.h>
 #include <dt-bindings/reset/raspberrypi,firmware-reset.h>
 
 / {
@@ -76,3 +77,7 @@
 &vchiq {
        interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
 };
+
+&xhci {
+       power-domains = <&power RPI_POWER_DOMAIN_USB>;
+};
index 4a379a14966d8da3252bb5726d876a8828a04688..22c7f1561344ed57978b4d91d6cdff6a6a84e9ff 100644 (file)
                        };
                };
 
+               xhci: usb@7e9c0000 {
+                       compatible = "brcm,bcm2711-xhci", "brcm,xhci-brcm-v2";
+                       reg = <0x0 0x7e9c0000 0x100000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>;
+                       /* DWC2 and this IP block share the same USB PHY,
+                        * enabling both at the same time results in lockups.
+                        * So keep this node disabled and let the bootloader
+                        * decide which interface should be enabled.
+                        */
+                       status = "disabled";
+               };
+
                v3d: gpu@7ec00000 {
                        compatible = "brcm,2711-v3d";
                        reg = <0x0 0x7ec00000 0x4000>,