arm64: dts: broadcom: bcm2712: Add second SDHCI controller node

Add SDIO2 node. On RPi5 it is connected to WiFi chip.
Add related pin, gpio and regulator definitions and
add WiFi node. With this and firmware already provided by
distributions, at least on openSUSE Tumbleweed, this is
sufficient to make WiFi operational on RPi5 \o/.

Signed-off-by: Ivan T. Ivanov <iivanov@suse.de>
Signed-off-by: Andrea della Porta <andrea.porta@suse.com>
Link: https://lore.kernel.org/r/4ff3a58e98d90a43deb2448b23754808afc7153b.1756386531.git.andrea.porta@suse.com
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
This commit is contained in:
Ivan T. Ivanov 2025-08-28 15:17:13 +02:00 committed by Florian Fainelli
parent 72eb12b99d
commit 55ec7b1b97
2 changed files with 67 additions and 0 deletions

View File

@ -66,6 +66,18 @@ 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 {
@ -79,6 +91,29 @@ pwr_button_default: pwr-button-default-state {
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;
};
};
wl_on_default: wl-on-default-state {
function = "gpio";
pins = "gpio28";
};
};
&pinctrl_aon {
@ -109,6 +144,23 @@ &sdio1 {
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";

View File

@ -285,6 +285,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>,