This pull request contains Broadcom ARM64-based SoCs Device Tree updates

for 6.18, please pull the following:
 
 - Krzysztof fixes a DTC warning for the ARM GIC in bcm2712.dtsi
 
 - Ivan adds the pin controller node(s), an additional GPIO controller,
   the second SDHCI controller node for SDIO Wi-Fi, and the UARTA for
   Bluetooth to the BCM2712 DTS (Raspberry Pi 5)
 
 - Stanimir adds the Ethernet DT node and enables it for the RP1 sister
   chip
 
 - Andrea deletes a number of redundant PCIe DT node enablement, updates
   a comment to describe the relationship between bcm2712 and RP1 and
   finally enables the USB controllers with RP1
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEm+Rq3+YGJdiR9yuFh9CWnEQHBwQFAmjBsLIACgkQh9CWnEQH
 BwTFFBAAzwb6T/eAb1eu2ut8Jn42SzqowKd1YLBkonVCQ55onTAIXaH9IyIsQ/gs
 tCOc6aTJaVZCjvTl4Qp1dCB/XLEtK2WtCed3Avu5JZLTWRZjjsYFW5dHTbScl4m/
 AOoXGj1p9IDHB8LRzdd/5DSh0dIj1Y5npCEti1J9mFoL8zPEIHfEvSa+wXV49i2a
 25xZKA8TwQOmfwtxYrLIKO0aEaOLPFGcbqc+9lDCwGzJj3Af5VpB2P6lGTjpLFdG
 AE3sUvtL6Hfs47XgHn/oRoQFvljuTClEU9tUWq+k6BUz9p6t13833jVwz8I6lZPl
 9XoYRvuP3g2hELWRbX63PogePTNZp5Iqn5KG1YLlLigsxrHHN7TQnu2AP6l/R6Ti
 gm108ZmidXOFbc10ONkOUQv0MX/U8Mi9XW4xXTvDG85UkiftEMXaXcfozlNoWnrB
 rSwLotqsMVyfR5yu/kuxWODGsRdLteRFTv1T4Bzf2r4p/EbVRp4hcPQyQGAazGXZ
 gUKqn11FBAdKAEkgH8VpSfBh7Freet3Cgs/ttaTpmG7I0NDPJ4PBegdxMlB6TY9K
 ThhUv4qEWMXuggZxbgLp1v1tPtbheHN4REX62nYLxYrdaAXREukGFhcjrNZl4CVk
 E77Vl5sNjOgBJqrgaw2b3Nbs7VMymEdSoTnGrY+RCYlE/SEZ/L8=
 =1ROS
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmjIEWMACgkQmmx57+YA
 GNmhzA/8CjEyy71uETe/H5rPJwL34OR8SH3XNNHle14Ce5qlYS7n9sADz/n8Q4Vi
 JvDPZcZsH+2Bc7adaw9pvWRzTtnj0bkxPXe1Wp400UX8JLNIDfbRm5BWpIh2Gk2U
 ET/FqynAr7ppcxu1Py3qnCfFuZrIYrQFYk0nPvOuaYysjtXAIOJbjVdI1JjpqkM1
 5LhAsV//0CT7OTfbww4P+Sga+weM0aB+3sZ/7dg8Uf6AXP3nfzwtf9vch5GBvnok
 rYB6SCKdD9ZVF/SpbF1ruvaCekzemNqVXITrEicCjnzjzUKP/fbxR0IddntQ1cYk
 ZuUDQ24H39qeXoirDDw8gQ3BFBOH6mOYB2hMCzL/hLMXc5ljevZtfThbPv9v6xmb
 9qHVWfeu2yD0JA/dIva1OVTwQMzDSy+v4BfWnOzXxLZemwoL4Ly1o15tdzAsGXb7
 BIYVMTe8h+PAvUoYC+yEbMJrf8ZW8knFvMLPBZTL/GVWaAIVLBYiXVkRVFHtSMVN
 MOGDLroW6iIKVnp/KSeTyeSy4V0gYRDLF8qWXUX2QKLwfJipCAo+dACWzbmA59Ex
 JjhgQ48lwybJB8P9TePzR1CyTyj2Jf03AvhV6rkULEFz6pQiXbwktgGgfsw9RgI2
 g2AhRKLgoUghc2odjfbDFy9z5/WRn5m3Uv7raAUEnOT22TKg9NQ=
 =4ja6
 -----END PGP SIGNATURE-----

Merge tag 'arm-soc/for-6.18/devicetree-arm64' of https://github.com/Broadcom/stblinux into soc/dt

This pull request contains Broadcom ARM64-based SoCs Device Tree updates
for 6.18, please pull the following:

- Krzysztof fixes a DTC warning for the ARM GIC in bcm2712.dtsi

- Ivan adds the pin controller node(s), an additional GPIO controller,
  the second SDHCI controller node for SDIO Wi-Fi, and the UARTA for
  Bluetooth to the BCM2712 DTS (Raspberry Pi 5)

- Stanimir adds the Ethernet DT node and enables it for the RP1 sister
  chip

- Andrea deletes a number of redundant PCIe DT node enablement, updates
  a comment to describe the relationship between bcm2712 and RP1 and
  finally enables the USB controllers with RP1

* tag 'arm-soc/for-6.18/devicetree-arm64' of https://github.com/Broadcom/stblinux:
  arm64: dts: broadcom: Enable USB devicetree entries for Rpi5
  arm64: dts: broadcom: rp1: Add USB nodes
  arm64: dts: broadcom: amend the comment about the role of BCM2712 board DTS
  arm64: dts: broadcom: delete redundant pcie enablement nodes
  arm64: dts: broadcom: Enable RP1 ethernet for Raspberry Pi 5
  arm64: dts: rp1: Add ethernet DT node
  dt-bindings: mmc: Add support for capabilities to Broadcom SDHCI controller
  arm64: dts: broadcom: bcm2712: Add UARTA controller node
  arm64: dts: broadcom: bcm2712: Add second SDHCI controller node
  arm64: dts: broadcom: bcm2712: Add one more GPIO node
  arm64: dts: broadcom: bcm2712: Add pin controller nodes
  arm64: dts: broadcom: bcm2712: Add default GIC address cells

Link: https://lore.kernel.org/r/20250910171910.666401-3-florian.fainelli@broadcom.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
Arnd Bergmann 2025-09-15 15:14:59 +02:00
commit 41d773149b
5 changed files with 271 additions and 5 deletions

View File

@ -61,7 +61,7 @@ properties:
description: Specifies that controller should use auto CMD12
allOf:
- $ref: mmc-controller.yaml#
- $ref: sdhci-common.yaml#
- if:
properties:
clock-names:

View File

@ -2,6 +2,7 @@
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include "bcm2712.dtsi"
/ {
@ -29,6 +30,20 @@ memory@0 {
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";
@ -51,6 +66,90 @@ sd_vcc_reg: sd-vcc-reg {
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
@ -62,12 +161,32 @@ &uart10 {
/* 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 {
@ -97,6 +216,20 @@ power: power {
};
};
/* 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";

View File

@ -4,8 +4,14 @@
* 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 not intended to be modified, nodes should be added
* to the included bcm2712-rpi-5-b-ovl-rp1.dts.
* 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.
* 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.
*/
/dts-v1/;
@ -16,10 +22,37 @@ &pcie2 {
#include "rp1-nexus.dtsi"
};
&pcie1 {
&rp1_eth {
status = "okay";
phy-mode = "rgmii-id";
phy-handle = <&phy1>;
mdio {
reg = <0x1>;
reset-gpios = <&rp1_gpio 32 GPIO_ACTIVE_LOW>;
reset-delay-us = <5000>;
#address-cells = <1>;
#size-cells = <0>;
phy1: ethernet-phy@1 {
reg = <0x1>;
};
};
};
&rp1_gpio {
usb_vbus_default_state: usb-vbus-default-state {
function = "vbus1";
groups = "vbus1";
};
};
&rp1_usb0 {
pinctrl-0 = <&usb_vbus_default_state>;
pinctrl-names = "default";
status = "okay";
};
&pcie2 {
&rp1_usb1 {
status = "okay";
};

View File

@ -38,6 +38,13 @@ clk_emmc2: clk-emmc2 {
clock-frequency = <200000000>;
clock-output-names = "emmc2-clock";
};
clk_sw_baud: clk-sw-baud {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <96000000>;
clock-output-names = "sw-baud";
};
};
cpus: cpus {
@ -243,6 +250,39 @@ uart10: serial@7d001000 {
status = "disabled";
};
pinctrl: pinctrl@7d504100 {
compatible = "brcm,bcm2712c0-pinctrl";
reg = <0x7d504100 0x30>;
};
gio: gpio@7d508500 {
compatible = "brcm,bcm7445-gpio", "brcm,brcmstb-gpio";
reg = <0x7d508500 0x40>;
interrupt-parent = <&main_irq>;
interrupts = <0>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
brcm,gpio-bank-widths = <32 22>;
};
uarta: serial@7d50c000 {
compatible = "brcm,bcm7271-uart";
reg = <0x7d50c000 0x20>;
reg-names = "uart";
clocks = <&clk_sw_baud>;
clock-names = "sw_baud";
interrupts = <GIC_SPI 276 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "uart";
status = "disabled";
};
pinctrl_aon: pinctrl@7d510700 {
compatible = "brcm,bcm2712c0-aon-pinctrl";
reg = <0x7d510700 0x20>;
};
interrupt-controller@7d517000 {
compatible = "brcm,bcm7271-l2-intc";
reg = <0x7d517000 0x10>;
@ -263,6 +303,21 @@ gio_aon: gpio@7d517c00 {
*/
};
sdio2: mmc@1100000 {
compatible = "brcm,bcm2712-sdhci",
"brcm,sdhci-brcmstb";
reg = <0x01100000 0x260>,
<0x01100400 0x200>;
reg-names = "host", "cfg";
interrupts = <GIC_SPI 274 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk_emmc2>;
clock-names = "sw_sdio";
sdhci-caps-mask = <0x0000C000 0x0>;
sdhci-caps = <0x0 0x0>;
mmc-ddr-3_3v;
status = "disabled";
};
gicv2: interrupt-controller@7fff9000 {
compatible = "arm,gic-400";
reg = <0x7fff9000 0x1000>,
@ -270,6 +325,7 @@ gicv2: interrupt-controller@7fff9000 {
<0x7fffc000 0x2000>,
<0x7fffe000 0x2000>;
interrupt-controller;
#address-cells = <0>;
#interrupt-cells = <3>;
};

View File

@ -39,4 +39,48 @@ rp1_gpio: pinctrl@400d0000 {
<1 IRQ_TYPE_LEVEL_HIGH>,
<2 IRQ_TYPE_LEVEL_HIGH>;
};
rp1_eth: ethernet@40100000 {
compatible = "raspberrypi,rp1-gem";
reg = <0x00 0x40100000 0x0 0x4000>;
interrupts = <6 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&rp1_clocks RP1_CLK_SYS>,
<&rp1_clocks RP1_CLK_SYS>,
<&rp1_clocks RP1_CLK_ETH>,
<&rp1_clocks RP1_CLK_ETH_TSU>;
clock-names = "pclk", "hclk", "tx_clk", "tsu_clk";
local-mac-address = [00 00 00 00 00 00];
status = "disabled";
#address-cells = <1>;
#size-cells = <0>;
};
rp1_usb0: usb@40200000 {
compatible = "snps,dwc3";
reg = <0x00 0x40200000 0x0 0x100000>;
interrupts = <31 IRQ_TYPE_EDGE_RISING>;
dr_mode = "host";
usb3-lpm-capable;
snps,dis_rxdet_inp3_quirk;
snps,parkmode-disable-hs-quirk;
snps,parkmode-disable-ss-quirk;
snps,tx-max-burst = /bits/ 8 <8>;
snps,tx-thr-num-pkt = /bits/ 8 <2>;
status = "disabled";
};
rp1_usb1: usb@40300000 {
compatible = "snps,dwc3";
reg = <0x00 0x40300000 0x0 0x100000>;
interrupts = <36 IRQ_TYPE_EDGE_RISING>;
dr_mode = "host";
usb3-lpm-capable;
snps,dis_rxdet_inp3_quirk;
snps,parkmode-disable-hs-quirk;
snps,parkmode-disable-ss-quirk;
snps,tx-max-burst = /bits/ 8 <8>;
snps,tx-thr-num-pkt = /bits/ 8 <2>;
status = "disabled";
};
};