]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
arm64: dts: broadcom: bcm2712: Add second SDHCI controller node
authorIvan T. Ivanov <iivanov@suse.de>
Thu, 28 Aug 2025 13:17:13 +0000 (15:17 +0200)
committerFlorian Fainelli <florian.fainelli@broadcom.com>
Thu, 4 Sep 2025 21:05:01 +0000 (14:05 -0700)
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>
arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b-ovl-rp1.dts
arch/arm64/boot/dts/broadcom/bcm2712.dtsi

index f0883c9035273c9dd66439f0f8f4a2c8a6876ea1..411b58c1dddfc4f44e22cbbb642e3f80ec54d367 100644 (file)
                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 {
                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 {
        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";
index a1af86208d9e86284802cf12a51c163107b0072e..6068cb75ef5aa0dabbee2a1215954f2f38c0b645 100644 (file)
                         */
                };
 
+               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>,