Commit 55ec7b1b authored by Ivan T. Ivanov's avatar Ivan T. Ivanov Committed by Florian Fainelli
Browse files

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: default avatarIvan T. Ivanov <iivanov@suse.de>
Signed-off-by: default avatarAndrea della Porta <andrea.porta@suse.com>
Link: https://lore.kernel.org/r/4ff3a58e98d90a43deb2448b23754808afc7153b.1756386531.git.andrea.porta@suse.com


Signed-off-by: default avatarFlorian Fainelli <florian.fainelli@broadcom.com>
parent 72eb12b9
Loading
Loading
Loading
Loading
+52 −0
Original line number Diff line number Diff line
@@ -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";
+15 −0
Original line number Diff line number Diff line
@@ -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>,