[PATCH 6/7] arm64: dts: broadcom: bcm2712: Add second SDHCI controller node

Stefan Wahren wahrenst at gmx.net
Fri Aug 2 12:01:19 PDT 2024


Hi,

[add Arend and Raspberry Pi devs]

Am 31.07.24 um 08:28 schrieb Ivan T. Ivanov:
> 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 at suse.de>
> ---
>   .../boot/dts/broadcom/bcm2712-rpi-5-b.dts     | 55 +++++++++++++++++++
>   arch/arm64/boot/dts/broadcom/bcm2712.dtsi     | 13 +++++
>   2 files changed, 68 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts
> index 06e926af16b7..b6bfe0abb774 100644
> --- a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts
> +++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts
> @@ -46,6 +46,20 @@ sd_vcc_reg: sd-vcc-reg {
>   		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_pins>;
> +		pinctrl-names = "default";
> +
> +		gpio = <&gio 28 GPIO_ACTIVE_HIGH>;
> +
> +		startup-delay-us = <150000>;
> +		enable-active-high;
> +	};
I don't think this GPIO is a regulator from hardware perspective. I
guess it's the same reset pin we have on the older Raspberry Pis. Please
look at bcm283x-rpi-wifi-bt.dtsi for the wifi power sequence.
> +
>   	pwr-button {
>   		compatible = "gpio-keys";
>
> @@ -80,6 +94,25 @@ &sdio1 {
>   	cd-gpios = <&gio_aon 5 GPIO_ACTIVE_LOW>;
>   };
>
> +/* SDIO2 drives the WLAN interface */
> +&sdio2 {
> +	pinctrl-0 = <&sdio2_30_pins>;
> +	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 at 1 {
> +		reg = <1>;
> +		compatible = "brcm,bcm4329-fmac";
> +		local-mac-address = [00 00 00 00 00 00];
I think we can drop this?
> +	};
> +};
> +
>   &pinctrl_aon {
>   	emmc_aon_cd_pins: emmc-aon-cd-pins {
>   		function = "sd_card_g";
> @@ -95,9 +128,31 @@ pwr_button_pins: pwr-button-pins {
>   		bias-pull-up;
>   	};
>
> +	wl_on_pins: wl-on-pins {
> +		function = "gpio";
> +		pins = "gpio28";
> +	};
> +
>   	emmc_sd_pulls: emmc-sd-pulls {
>   		pins = "emmc_cmd", "emmc_dat0", "emmc_dat1", "emmc_dat2", "emmc_dat3";
>   		bias-pull-up;
>   	};
>
> +	sdio2_30_pins: sdio2-30-pins {
> +		pin-clk {
> +			function = "sd2";
> +			pins = "gpio30";
> +			bias-disable;
> +		};
> +		pin-cmd {
> +			function = "sd2";
> +			pins = "gpio31";
> +			bias-pull-up;
> +		};
> +		pins-dat {
> +			function = "sd2";
> +			pins = "gpio32", "gpio33", "gpio34", "gpio35";
> +			bias-pull-up;
> +		};
> +	};
>   };
> diff --git a/arch/arm64/boot/dts/broadcom/bcm2712.dtsi b/arch/arm64/boot/dts/broadcom/bcm2712.dtsi
> index 39d2419ffce2..3c0663dc6712 100644
> --- a/arch/arm64/boot/dts/broadcom/bcm2712.dtsi
> +++ b/arch/arm64/boot/dts/broadcom/bcm2712.dtsi
> @@ -27,6 +27,19 @@ sdio1: mmc at 1000fff000 {
>   			mmc-ddr-3_3v;
>   		};
>
> +		sdio2: mmc at 1001100000 {
> +			compatible = "brcm,bcm2712-sdhci";
> +			reg = <0x10 0x01100000  0x260>,
> +			      <0x10 0x01100400  0x200>;
> +			reg-names = "host", "cfg";
> +			interrupts = <GIC_SPI 274 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&clk_emmc2>;
> +			sdhci-caps-mask = <0x0000C000 0x0>;
> +			sdhci-caps = <0x0 0x0>;
> +			mmc-ddr-3_3v;
> +			status = "disabled";
> +		};
> +
>   		gicv2: interrupt-controller at 107fff9000 {
>   			interrupt-controller;
>   			#interrupt-cells = <3>;




More information about the linux-arm-kernel mailing list