Enabling SDIO WiFi for SL640 and SL680
By default, SL1640 and SL1680 are configured to use PCIe based WiFi modules. But, SDIO support with the 43711S WiFi module can be enabled by updating the Linux Kernel’s DTS and config.
Modifying the Kernel
This requires modifying the linux-syna
package using devtool
:
devtool modify linux-syna
Updating the DTS File
Modify the platform dts file located in build-sl1680/workspace/sources/linux-syna/arch/arm64/boot/dts/synaptics
.
SL1640 |
SL1680 |
|
DTS |
platypus-rdk.dts |
dolphin-rdk.dts |
The following sections need to be added / modified. The sections in dolphin-rdk.dts
and platypus-rdk.dts
are identical so the
below patch applies to both platforms.
diff --git a/arch/arm64/boot/dts/synaptics/platypus-rdk.dts b/arch/arm64/boot/dts/synaptics/platypus-rdk.dts
index c7c388d..26ff787 100644
--- a/arch/arm64/boot/dts/synaptics/platypus-rdk.dts
+++ b/arch/arm64/boot/dts/synaptics/platypus-rdk.dts
@@ -69,6 +69,12 @@
pool-attributes = <0x00000105 0x00000F3A 0x00000102 0x00000F3D>;
};
+ sdhci1_pwrseq: sdhci1-pwrseq {
+ compatible = "mmc-pwrseq-simple";
+ reset-gpios = <&expander1 2 GPIO_ACTIVE_LOW>;
+ post-power-on-delay-ms = <50>;
+ };
+
regulators {
compatible = "simple-bus";
#address-cells = <1>;
@@ -114,6 +120,12 @@
bluesleep: bluesleep {
compatible = "syna,bluesleep";
bt-dev-wake-gpio = <&expander1 3 GPIO_ACTIVE_HIGH>;
+ };
+
+ bcmdhd {
+ compatible = "synaptics,bcmdhd_wlan";
+ wl_reg_on = <&expander1 2 GPIO_ACTIVE_HIGH>; /* wifi reg_on pin */
+ wl_host_wake = <&expander1 3 GPIO_ACTIVE_HIGH>; /* wifi host wake (OOB) pin */
};
gpio_keys {
@@ -261,9 +273,11 @@
pinctrl-0 = <&sdhci1_pmux>, <&sdhci1_gpio_pmux>, <&sdhci1_cd_pmux>;
pinctrl-names = "default";
bus-width = <4>;
- no-sdio;
+ no-sd;
no-mmc;
- disable-wp;
+ non-removable;
+ mmc-pwrseq = <&sdhci1_pwrseq>;
+ mode1-tune;
sdclkdl-dc = /bits/ 8 <75>;
pad-sp = /bits/ 8 <4>;
pad-sn = /bits/ 8 <4>;
Updating the defconfig
Modify the defconfig
file located in build-sl1680/workspace/sources/linux-syna/arch/arm64/configs
.
SL1640 |
SL1680 |
|
defconfig |
platypus_defconfig |
dolphin_defconfig |
The following sections need to be added / modified. The sections in dolphin_defconfig
and platypus_defconfig
are identical so the
below patch applies to both platforms.
diff --git a/recipes-kernel/linux/files/platypus_defconfig b/recipes-kernel/linux/files/platypus_defconfig
index b57eac8..fc22a7e 100644
--- a/recipes-kernel/linux/files/platypus_defconfig
+++ b/recipes-kernel/linux/files/platypus_defconfig
@@ -292,13 +292,14 @@
# CONFIG_WLAN_VENDOR_ZYDAS is not set
# CONFIG_WLAN_VENDOR_QUANTENNA is not set
CONFIG_BCMDHD=m
-CONFIG_BCMDHD_PCIE=y
-CONFIG_BCMDHD_PCIE_RUNTIMEPM=y
+CONFIG_BCMDHD_SDIO=y
+#CONFIG_BCMDHD_PCIE is not set
+#CONFIG_BCMDHD_PCIE_RUNTIMEPM is not set
CONFIG_BCM4362=y
CONFIG_DHD_OF_SUPPORT=y
-CONFIG_BCMDHD_FW_PATH="/data/etc/wifi/fw_bcmdhd.bin"
-CONFIG_BCMDHD_NVRAM_PATH="/data/etc/wifi/bcmdhd.cal"
-CONFIG_BCMDHD_CLM_PATH="/data/etc/wifi/bcmdhd_clm.blob"
+#CONFIG_BCMDHD_FW_PATH is not set
+#CONFIG_BCMDHD_NVRAM_PATH is not set
+#CONFIG_BCMDHD_CLM_PATH is not set
CONFIG_DHD_USE_SCHED_SCAN=y
# CONFIG_WLAIBSS is not set
# CONFIG_WL_RELMCAST is not set
Build the Updated Image
Build the image with the updated device tree entries:
devtool build linux-syna
devtool build-image astra-media