From b572f3047259be336aceca139a734466262961d3 Mon Sep 17 00:00:00 2001 From: ColorfulRhino <131405023+ColorfulRhino@users.noreply.github.com> Date: Tue, 25 Jun 2024 12:57:24 -0400 Subject: [PATCH] wifi: Add new SDIO driver `rtl8852bs` for BananaPi F3 Also add for Armsom Sige5 since it has the same chip built-in. --- .../compilation/patch/drivers-harness.sh | 1 + .../compilation/patch/drivers_network.sh | 52 +++++++++++++++++++ ...l8852bs-Update-rtw_regd_init-for-6.1.patch | 25 +++++++++ 3 files changed, 78 insertions(+) create mode 100644 patch/misc/wireless-rtl8852bs-Update-rtw_regd_init-for-6.1.patch diff --git a/lib/functions/compilation/patch/drivers-harness.sh b/lib/functions/compilation/patch/drivers-harness.sh index a06b81b844..038d36f7a9 100644 --- a/lib/functions/compilation/patch/drivers-harness.sh +++ b/lib/functions/compilation/patch/drivers-harness.sh @@ -112,6 +112,7 @@ function kernel_drivers_prepare_harness() { driver_rtl8188EU_rtl8188ETV driver_rtl88x2bu driver_rtw88 + driver_rtl8852bs driver_rtl88x2cs driver_rtl8822cs_bt driver_rtl8723DS diff --git a/lib/functions/compilation/patch/drivers_network.sh b/lib/functions/compilation/patch/drivers_network.sh index 7453ab42e8..8c530756c2 100644 --- a/lib/functions/compilation/patch/drivers_network.sh +++ b/lib/functions/compilation/patch/drivers_network.sh @@ -343,6 +343,58 @@ driver_rtw88() { fi } +driver_rtl8852bs() { + + # Wireless driver for Realtek 8852BS SDIO Wireless driver used in BananaPi F3 and Armsom Sige5 + + if linux-version compare "${version}" ge 6.1 && [[ "${BOARD}" == bananapif3 || "${BOARD}" == armsom-sige5 ]]; then + + # Attach to specific commit + local rtl8852bs_ver='commit:56420ff22f9c174e23ef1d1fefc66cbed197bc12' # Commit date: June 30, 2024 (please update when updating commit ref) + + display_alert "Adding" "Wireless drivers for Realtek 8852BS SDIO chipset ${rtl8852bs_ver}" "info" + + fetch_from_repo "$GITHUB_SOURCE/armbian/wifi-rtl8852bs" "rtl8852bs" "${rtl8852bs_ver}" "yes" # https://github.com/armbian/wifi-rtl8852bs + cd "$kerneldir" || exit + rm -rf "$kerneldir/drivers/net/wireless/realtek/rtl8852bs" + mkdir -p "$kerneldir/drivers/net/wireless/realtek/rtl8852bs/" + + # Copy folders into kernel-work-dir + cp -R "${SRC}/cache/sources/rtl8852bs/${rtl8852bs_ver#*:}"/{core,include,os_dep,phl,platform} \ + "$kerneldir/drivers/net/wireless/realtek/rtl8852bs" + + # Copy Kconfig into kernel-work-dir + cp "${SRC}/cache/sources/rtl8852bs/${rtl8852bs_ver#*:}"/Kconfig \ + "$kerneldir/drivers/net/wireless/realtek/rtl8852bs/Kconfig" + + # Copy Makefile into kernel-work-dir + cp "${SRC}/cache/sources/rtl8852bs/${rtl8852bs_ver#*:}"/Makefile \ + "$kerneldir/drivers/net/wireless/realtek/rtl8852bs/Makefile" + + # Disable debug + sed -i "s/^CONFIG_RTW_DEBUG.*/CONFIG_RTW_DEBUG = n/" \ + "$kerneldir/drivers/net/wireless/realtek/rtl8852bs/Makefile" + + # Add to section Makefile + echo "obj-\$(CONFIG_RTL8723DU) += rtl8723du/" >> "$kerneldir/drivers/net/wireless/realtek/Makefile" + sed -i '/source "drivers\/net\/wireless\/realtek\/rtw89\/Kconfig"/a source "drivers\/net\/wireless\/realtek\/rtl8852bs\/Kconfig"' \ + "$kerneldir/drivers/net/wireless/realtek/Kconfig" + + # We have to enable specific platforms in the driver Makefile to enable specific driver tweaks, they are all "n" by default + case ${BOARD} in + bananapif3) + sed -i "s/CONFIG_PLATFORM_ARM_ROCKCHIP = n/CONFIG_PLATFORM_ARM_ROCKCHIP = y/g" "$kerneldir/drivers/net/wireless/realtek/rtl8852bs/Makefile" + ;; + armsom-sige5) + sed -i "s/CONFIG_PLATFORM_SPACEMIT = n/CONFIG_PLATFORM_SPACEMIT = y/g" "$kerneldir/drivers/net/wireless/realtek/rtl8852bs/Makefile" + ;; + esac + + # Patches + process_patch_file "${SRC}/patch/misc/wireless-rtl8852bs-Update-rtw_regd_init-for-6.1.patch" "applying" + fi +} + driver_rtl88x2cs() { # Wireless drivers for Realtek 88x2cs chipsets diff --git a/patch/misc/wireless-rtl8852bs-Update-rtw_regd_init-for-6.1.patch b/patch/misc/wireless-rtl8852bs-Update-rtw_regd_init-for-6.1.patch new file mode 100644 index 0000000000..de3c901b06 --- /dev/null +++ b/patch/misc/wireless-rtl8852bs-Update-rtw_regd_init-for-6.1.patch @@ -0,0 +1,25 @@ +From a252923b17dd29ec4db7958a64f6856fc8159284 Mon Sep 17 00:00:00 2001 +From: Patrick Yavitz +Date: Sat, 22 Jun 2024 09:22:03 -0400 +Subject: [PATCH] update rtw_regd_init for kernel v6.1.0 + +Signed-off-by: Patrick Yavitz +--- + drivers/net/wireless/realtek/rtl8852bs/os_dep/linux/wifi_regd.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/net/wireless/realtek/rtl8852bs/os_dep/linux/wifi_regd.c b/drivers/net/wireless/realtek/rtl8852bs/os_dep/linux/wifi_regd.c +index 5986af6f9209..f05084a31066 100644 +--- a/drivers/net/wireless/realtek/rtl8852bs/os_dep/linux/wifi_regd.c ++++ b/drivers/net/wireless/realtek/rtl8852bs/os_dep/linux/wifi_regd.c +@@ -1276,7 +1276,7 @@ int rtw_regd_init(struct wiphy *wiphy) + wiphy->regulatory_flags &= ~REGULATORY_DISABLE_BEACON_HINTS; + #endif + +-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && (LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 0)) + wiphy->regulatory_flags |= REGULATORY_IGNORE_STALE_KICKOFF; + #endif + +-- +2.39.2