]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-client.git/commitdiff
arm64: dts: broadcom: bcm2712: fix RP1 endpoint PCI topology
authorAndrea della Porta <andrea.porta@suse.com>
Thu, 18 Dec 2025 19:09:08 +0000 (20:09 +0100)
committerFlorian Fainelli <florian.fainelli@broadcom.com>
Fri, 19 Dec 2025 20:42:30 +0000 (12:42 -0800)
The node describing the RP1 endpoint currently uses a specific name
('rp1_nexus') that does not correctly reflect the PCI topology.

Update the DT with the correct topology and use generic node names.

Additionally, since the driver dropped overlay support in favor of a
fully described DT, rename '...-ovl-rp1.dts' to '...-base.dtsi' for
inclusion in the board DTB, as it is no longer compiled as a
standalone DTB.

Signed-off-by: Andrea della Porta <andrea.porta@suse.com>
Reviewed-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/827b12ba48bb47bc77a0f5e5617aea961c8bc6b5.1766077285.git.andrea.porta@suse.com
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
arch/arm64/boot/dts/broadcom/Makefile
arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b-base.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b-ovl-rp1.dts [deleted file]
arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts

index 83d45afc6588e13c6b2ff5c76057e533dd703b77..d43901404c9558c86d8f066bcade49c0478b6d8e 100644 (file)
@@ -7,7 +7,6 @@ dtb-$(CONFIG_ARCH_BCM2835) += bcm2711-rpi-400.dtb \
                              bcm2711-rpi-4-b.dtb \
                              bcm2711-rpi-cm4-io.dtb \
                              bcm2712-rpi-5-b.dtb \
-                             bcm2712-rpi-5-b-ovl-rp1.dtb \
                              bcm2712-d-rpi-5-b.dtb \
                              bcm2837-rpi-2-b.dtb \
                              bcm2837-rpi-3-a-plus.dtb \
diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b-base.dtsi b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b-base.dtsi
new file mode 100644 (file)
index 0000000..04738bf
--- /dev/null
@@ -0,0 +1,254 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include "bcm2712.dtsi"
+
+/ {
+       compatible = "raspberrypi,5-model-b", "brcm,bcm2712";
+       model = "Raspberry Pi 5";
+
+       aliases {
+               serial10 = &uart10;
+       };
+
+       chosen: chosen {
+               stdout-path = "serial10:115200n8";
+       };
+
+       clk_rp1_xosc: clock-50000000 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-output-names = "rp1-xosc";
+               clock-frequency = <50000000>;
+       };
+
+       /* Will be filled by the bootloader */
+       memory@0 {
+               device_type = "memory";
+               reg = <0 0 0 0x28000000>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwr_button_default>;
+               status = "okay";
+
+               power_button: power-button {
+                       label = "pwr_button";
+                       linux,code = <KEY_POWER>;
+                       gpios = <&gio 20 GPIO_ACTIVE_LOW>;
+                       debounce-interval = <50>;
+               };
+       };
+
+       sd_io_1v8_reg: sd-io-1v8-reg {
+               compatible = "regulator-gpio";
+               regulator-name = "vdd-sd-io";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               regulator-always-on;
+               regulator-settling-time-us = <5000>;
+               gpios = <&gio_aon 3 GPIO_ACTIVE_HIGH>;
+               states = <1800000 1>,
+                        <3300000 0>;
+       };
+
+       sd_vcc_reg: sd-vcc-reg {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc-sd";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               enable-active-high;
+               gpios = <&gio_aon 4 GPIO_ACTIVE_HIGH>;
+       };
+
+       wl_on_reg: wl-on-reg {
+               compatible = "regulator-fixed";
+               regulator-name = "wl-on-regulator";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               pinctrl-0 = <&wl_on_default>;
+               pinctrl-names = "default";
+               gpio = <&gio 28 GPIO_ACTIVE_HIGH>;
+               startup-delay-us = <150000>;
+               enable-active-high;
+       };
+};
+
+&pinctrl {
+       bt_shutdown_default: bt-shutdown-default-state {
+               function = "gpio";
+               pins = "gpio29";
+       };
+
+       emmc_sd_default: emmc-sd-default-state {
+               pins = "emmc_cmd", "emmc_dat0", "emmc_dat1", "emmc_dat2", "emmc_dat3";
+               bias-pull-up;
+       };
+
+       pwr_button_default: pwr-button-default-state {
+               function = "gpio";
+               pins = "gpio20";
+               bias-pull-up;
+       };
+
+       sdio2_30_default: sdio2-30-default-state {
+               clk-pins {
+                       function = "sd2";
+                       pins = "gpio30";
+                       bias-disable;
+               };
+               cmd-pins {
+                       function = "sd2";
+                       pins = "gpio31";
+                       bias-pull-up;
+               };
+               dat-pins {
+                       function = "sd2";
+                       pins = "gpio32", "gpio33", "gpio34", "gpio35";
+                       bias-pull-up;
+               };
+       };
+
+       uarta_24_default: uarta-24-default-state {
+               rts-pins {
+                       function = "uart0";
+                       pins = "gpio24";
+                       bias-disable;
+               };
+               cts-pins {
+                       function = "uart0";
+                       pins = "gpio25";
+                       bias-pull-up;
+               };
+               txd-pins {
+                       function = "uart0";
+                       pins = "gpio26";
+                       bias-disable;
+               };
+               rxd-pins {
+                       function = "uart0";
+                       pins = "gpio27";
+                       bias-pull-up;
+               };
+       };
+
+       wl_on_default: wl-on-default-state {
+               function = "gpio";
+               pins = "gpio28";
+       };
+};
+
+&pinctrl_aon {
+       emmc_aon_cd_default: emmc-aon-cd-default-state {
+               function = "sd_card_g";
+               pins = "aon_gpio5";
+               bias-pull-up;
+       };
+};
+
+/* The Debug UART, on Rpi5 it's on JST-SH 1.0mm 3-pin connector
+ * labeled "UART", i.e. the interface with the system console.
+ */
+&uart10 {
+       status = "okay";
+};
+
+/* SDIO1 is used to drive the SD card */
+&sdio1 {
+       pinctrl-0 = <&emmc_sd_default>, <&emmc_aon_cd_default>;
+       pinctrl-names = "default";
+       vqmmc-supply = <&sd_io_1v8_reg>;
+       vmmc-supply = <&sd_vcc_reg>;
+       bus-width = <4>;
+       sd-uhs-sdr50;
+       sd-uhs-ddr50;
+       sd-uhs-sdr104;
+       cd-gpios = <&gio_aon 5 GPIO_ACTIVE_LOW>;
+};
+
+&sdio2 {
+       pinctrl-0 = <&sdio2_30_default>;
+       pinctrl-names = "default";
+       bus-width = <4>;
+       vmmc-supply = <&wl_on_reg>;
+       sd-uhs-ddr50;
+       non-removable;
+       status = "okay";
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       wifi: wifi@1 {
+               reg = <1>;
+               compatible = "brcm,bcm4329-fmac";
+       };
+};
+
+&soc {
+       firmware: firmware {
+               compatible = "raspberrypi,bcm2835-firmware", "simple-mfd";
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               mboxes = <&mailbox>;
+               dma-ranges;
+
+               firmware_clocks: clocks {
+                       compatible = "raspberrypi,firmware-clocks";
+                       #clock-cells = <1>;
+               };
+
+               reset: reset {
+                       compatible = "raspberrypi,firmware-reset";
+                       #reset-cells = <1>;
+               };
+       };
+
+       power: power {
+               compatible = "raspberrypi,bcm2835-power";
+               firmware = <&firmware>;
+               #power-domain-cells = <1>;
+       };
+};
+
+/* uarta communicates with the BT module */
+&uarta {
+       uart-has-rtscts;
+       pinctrl-0 = <&uarta_24_default &bt_shutdown_default>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       bluetooth: bluetooth {
+               compatible = "brcm,bcm43438-bt";
+               max-speed = <3000000>;
+               shutdown-gpios = <&gio 29 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+&hvs {
+       clocks = <&firmware_clocks 4>, <&firmware_clocks 16>;
+       clock-names = "core", "disp";
+};
+
+&hdmi0 {
+       clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
+       clock-names = "hdmi", "bvb", "audio", "cec";
+};
+
+&hdmi1 {
+       clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
+       clock-names = "hdmi", "bvb", "audio", "cec";
+};
+
+&pcie1 {
+       status = "okay";
+};
+
+&pcie2 {
+       status = "okay";
+};
diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b-ovl-rp1.dts b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b-ovl-rp1.dts
deleted file mode 100644 (file)
index 04738bf..0000000
+++ /dev/null
@@ -1,254 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0 OR MIT)
-/dts-v1/;
-
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/input.h>
-#include "bcm2712.dtsi"
-
-/ {
-       compatible = "raspberrypi,5-model-b", "brcm,bcm2712";
-       model = "Raspberry Pi 5";
-
-       aliases {
-               serial10 = &uart10;
-       };
-
-       chosen: chosen {
-               stdout-path = "serial10:115200n8";
-       };
-
-       clk_rp1_xosc: clock-50000000 {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-output-names = "rp1-xosc";
-               clock-frequency = <50000000>;
-       };
-
-       /* Will be filled by the bootloader */
-       memory@0 {
-               device_type = "memory";
-               reg = <0 0 0 0x28000000>;
-       };
-
-       gpio-keys {
-               compatible = "gpio-keys";
-               pinctrl-names = "default";
-               pinctrl-0 = <&pwr_button_default>;
-               status = "okay";
-
-               power_button: power-button {
-                       label = "pwr_button";
-                       linux,code = <KEY_POWER>;
-                       gpios = <&gio 20 GPIO_ACTIVE_LOW>;
-                       debounce-interval = <50>;
-               };
-       };
-
-       sd_io_1v8_reg: sd-io-1v8-reg {
-               compatible = "regulator-gpio";
-               regulator-name = "vdd-sd-io";
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <3300000>;
-               regulator-boot-on;
-               regulator-always-on;
-               regulator-settling-time-us = <5000>;
-               gpios = <&gio_aon 3 GPIO_ACTIVE_HIGH>;
-               states = <1800000 1>,
-                        <3300000 0>;
-       };
-
-       sd_vcc_reg: sd-vcc-reg {
-               compatible = "regulator-fixed";
-               regulator-name = "vcc-sd";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               regulator-boot-on;
-               enable-active-high;
-               gpios = <&gio_aon 4 GPIO_ACTIVE_HIGH>;
-       };
-
-       wl_on_reg: wl-on-reg {
-               compatible = "regulator-fixed";
-               regulator-name = "wl-on-regulator";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               pinctrl-0 = <&wl_on_default>;
-               pinctrl-names = "default";
-               gpio = <&gio 28 GPIO_ACTIVE_HIGH>;
-               startup-delay-us = <150000>;
-               enable-active-high;
-       };
-};
-
-&pinctrl {
-       bt_shutdown_default: bt-shutdown-default-state {
-               function = "gpio";
-               pins = "gpio29";
-       };
-
-       emmc_sd_default: emmc-sd-default-state {
-               pins = "emmc_cmd", "emmc_dat0", "emmc_dat1", "emmc_dat2", "emmc_dat3";
-               bias-pull-up;
-       };
-
-       pwr_button_default: pwr-button-default-state {
-               function = "gpio";
-               pins = "gpio20";
-               bias-pull-up;
-       };
-
-       sdio2_30_default: sdio2-30-default-state {
-               clk-pins {
-                       function = "sd2";
-                       pins = "gpio30";
-                       bias-disable;
-               };
-               cmd-pins {
-                       function = "sd2";
-                       pins = "gpio31";
-                       bias-pull-up;
-               };
-               dat-pins {
-                       function = "sd2";
-                       pins = "gpio32", "gpio33", "gpio34", "gpio35";
-                       bias-pull-up;
-               };
-       };
-
-       uarta_24_default: uarta-24-default-state {
-               rts-pins {
-                       function = "uart0";
-                       pins = "gpio24";
-                       bias-disable;
-               };
-               cts-pins {
-                       function = "uart0";
-                       pins = "gpio25";
-                       bias-pull-up;
-               };
-               txd-pins {
-                       function = "uart0";
-                       pins = "gpio26";
-                       bias-disable;
-               };
-               rxd-pins {
-                       function = "uart0";
-                       pins = "gpio27";
-                       bias-pull-up;
-               };
-       };
-
-       wl_on_default: wl-on-default-state {
-               function = "gpio";
-               pins = "gpio28";
-       };
-};
-
-&pinctrl_aon {
-       emmc_aon_cd_default: emmc-aon-cd-default-state {
-               function = "sd_card_g";
-               pins = "aon_gpio5";
-               bias-pull-up;
-       };
-};
-
-/* The Debug UART, on Rpi5 it's on JST-SH 1.0mm 3-pin connector
- * labeled "UART", i.e. the interface with the system console.
- */
-&uart10 {
-       status = "okay";
-};
-
-/* SDIO1 is used to drive the SD card */
-&sdio1 {
-       pinctrl-0 = <&emmc_sd_default>, <&emmc_aon_cd_default>;
-       pinctrl-names = "default";
-       vqmmc-supply = <&sd_io_1v8_reg>;
-       vmmc-supply = <&sd_vcc_reg>;
-       bus-width = <4>;
-       sd-uhs-sdr50;
-       sd-uhs-ddr50;
-       sd-uhs-sdr104;
-       cd-gpios = <&gio_aon 5 GPIO_ACTIVE_LOW>;
-};
-
-&sdio2 {
-       pinctrl-0 = <&sdio2_30_default>;
-       pinctrl-names = "default";
-       bus-width = <4>;
-       vmmc-supply = <&wl_on_reg>;
-       sd-uhs-ddr50;
-       non-removable;
-       status = "okay";
-       #address-cells = <1>;
-       #size-cells = <0>;
-
-       wifi: wifi@1 {
-               reg = <1>;
-               compatible = "brcm,bcm4329-fmac";
-       };
-};
-
-&soc {
-       firmware: firmware {
-               compatible = "raspberrypi,bcm2835-firmware", "simple-mfd";
-               #address-cells = <1>;
-               #size-cells = <1>;
-
-               mboxes = <&mailbox>;
-               dma-ranges;
-
-               firmware_clocks: clocks {
-                       compatible = "raspberrypi,firmware-clocks";
-                       #clock-cells = <1>;
-               };
-
-               reset: reset {
-                       compatible = "raspberrypi,firmware-reset";
-                       #reset-cells = <1>;
-               };
-       };
-
-       power: power {
-               compatible = "raspberrypi,bcm2835-power";
-               firmware = <&firmware>;
-               #power-domain-cells = <1>;
-       };
-};
-
-/* uarta communicates with the BT module */
-&uarta {
-       uart-has-rtscts;
-       pinctrl-0 = <&uarta_24_default &bt_shutdown_default>;
-       pinctrl-names = "default";
-       status = "okay";
-
-       bluetooth: bluetooth {
-               compatible = "brcm,bcm43438-bt";
-               max-speed = <3000000>;
-               shutdown-gpios = <&gio 29 GPIO_ACTIVE_HIGH>;
-       };
-};
-
-&hvs {
-       clocks = <&firmware_clocks 4>, <&firmware_clocks 16>;
-       clock-names = "core", "disp";
-};
-
-&hdmi0 {
-       clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 0>, <&clk_27MHz>;
-       clock-names = "hdmi", "bvb", "audio", "cec";
-};
-
-&hdmi1 {
-       clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
-       clock-names = "hdmi", "bvb", "audio", "cec";
-};
-
-&pcie1 {
-       status = "okay";
-};
-
-&pcie2 {
-       status = "okay";
-};
index 3e0319fdb93f7b5fbad56b1ac5ea69f5e86fd174..28560828144622622e610db12fbacbf1a6b7267a 100644 (file)
@@ -1,22 +1,16 @@
 // SPDX-License-Identifier: (GPL-2.0 OR MIT)
 /*
- * bcm2712-rpi-5-b-ovl-rp1.dts is the overlay-ready DT which will make
- * the RP1 driver to load the RP1 dtb overlay at runtime, while
- * bcm2712-rpi-5-b.dts (this file) is the fully defined one (i.e. it
- * already contains RP1 node, so no overlay is loaded nor needed).
- * This file is intended to host the override nodes for the RP1 peripherals,
- * e.g. to declare the phy of the ethernet interface or the custom pin setup
- * for several RP1 peripherals.
- * This in turn is due to the fact that there's no current generic
- * infrastructure to reference nodes (i.e. the nodes in rp1-common.dtsi) that
- * are not yet defined in the DT since they are loaded at runtime via overlay.
+ * As a loose attempt to separate RP1 customizations from SoC peripherals
+ * definitioni, this file is intended to host the override nodes for the RP1
+ * peripherals, e.g. to declare the phy of the ethernet interface or custom
+ * pin setup.
  * All other nodes that do not have anything to do with RP1 should be added
- * to the included bcm2712-rpi-5-b-ovl-rp1.dts instead.
+ * to the included bcm2712-rpi-5-b-base.dtsi instead.
  */
 
 /dts-v1/;
 
-#include "bcm2712-rpi-5-b-ovl-rp1.dts"
+#include "bcm2712-rpi-5-b-base.dtsi"
 
 / {
        aliases {
 };
 
 &pcie2 {
-       #include "rp1-nexus.dtsi"
+       pci@0,0 {
+               reg = <0x0 0x0 0x0 0x0 0x0>;
+               ranges;
+               bus-range = <0 1>;
+               device_type = "pci";
+               #address-cells = <3>;
+               #size-cells = <2>;
+
+               dev@0,0 {
+                       compatible = "pci1de4,1";
+                       reg = <0x10000 0x0 0x0 0x0 0x0>;
+                       ranges = <0x1 0x0 0x0 0x82010000 0x0 0x0 0x0 0x400000>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+
+                       #include "rp1-common.dtsi"
+               };
+       };
 };
 
 &rp1_eth {