]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
arm64: dts: rockchip: add version-independent WiFi/BT nodes on Sige5
authorAlexey Charkov <alchark@gmail.com>
Sat, 14 Jun 2025 18:14:35 +0000 (22:14 +0400)
committerHeiko Stuebner <heiko@sntech.de>
Thu, 19 Jun 2025 21:02:46 +0000 (23:02 +0200)
ArmSoM Sige5 uses a soldered-on WiFi/BT module with WiFi on SDIO and BT
on UART. However, board v1.1 uses a Realtek based BL-M8852BS2, while
v1.2 uses a Broadcom based BW3752-50B1. They use the same pins and
controllers, but require different DT properties to enable.

Thankfully, the WiFi part at least works without explicitly listing it in
the device tree, albeit without OOB interrupt functionality.

Add required device tree nodes that do not depend on the board version so
that at least the WiFi module can appear on the SDIO bus.

WiFi OOB interrupt and Bluetooth function support are not enabled here, as
they require module specific properties.

Signed-off-by: Alexey Charkov <alchark@gmail.com>
Link: https://lore.kernel.org/r/20250614-sige5-updates-v2-3-3bb31b02623c@gmail.com
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
arch/arm64/boot/dts/rockchip/rk3576-armsom-sige5.dts

index 34e51cd71eac0395c7f36c892fc0711f6c324aea..8f6d50febf830e0c6c2ffb6fd0d064a206c9c328 100644 (file)
                regulator-max-microvolt = <3300000>;
                vin-supply = <&vcc_5v0_sys>;
        };
+
+       sdio_pwrseq: sdio-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               clocks = <&hym8563>;
+               clock-names = "ext_clock";
+               pinctrl-names = "default";
+               pinctrl-0 = <&wifi_reg_on>;
+               reset-gpios = <&gpio1 RK_PC6 GPIO_ACTIVE_LOW>;
+       };
 };
 
 &combphy0_ps {
                        rockchip,pins = <2 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>;
                };
        };
+
+       wireless-bluetooth {
+               bt_reg_on: bt-reg-on {
+                       rockchip,pins = <1 RK_PC7 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+
+               host_wake_bt: host-wake-bt {
+                       rockchip,pins = <1 RK_PD4 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+
+               bt_wake_host: bt-wake-host {
+                       rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+       };
+
+       wireless-wlan {
+               wifi_wake_host: wifi-wake-host {
+                       rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+
+               wifi_reg_on: wifi-reg-on {
+                       rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
 };
 
 &sai1 {
        status = "okay";
 };
 
+&sdio {
+       bus-width = <4>;
+       cap-sdio-irq;
+       disable-wp;
+       keep-power-in-suspend;
+       mmc-pwrseq = <&sdio_pwrseq>;
+       no-sd;
+       no-mmc;
+       non-removable;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
+       vmmc-supply = <&vcc_3v3_s3>;
+       vqmmc-supply = <&vcc_1v8_s3>;
+       wakeup-source;
+       status = "okay";
+};
+
 &sdmmc {
        bus-width = <4>;
        cap-mmc-highspeed;
        status = "okay";
 };
 
+/* Used by Bluetooth modules, enabled in a version specific overlay */
+&uart4 {
+       pinctrl-0 = <&uart4m1_xfer &uart4m1_ctsn &uart4m1_rtsn>;
+       pinctrl-names = "default";
+       uart-has-rtscts;
+};
+
 &vop {
        status = "okay";
 };